REFERENCE
Schemas
182 schemas, generated from openapi.yaml. Each one links to the operations that use it.
Account
- object enum
- account
- id string
- name string
- billing_source enum
- stripe
- api
- sandbox boolean
- default_locale enum
- en
- de
- fr
- it
- pt
- plan enum
NoChurn's own plan: details in GET /v1/billing/plan.
- free
- paid
- custom
- external_id_metadata_key string
Stripe customer metadata key copied into external_id. Default: user_id.
- require_two_factor boolean
Every member must use two-factor authentication. Owners only, from a 2FA session.
- timezone string
IANA time zone: "this month" and "today" in the dashboard.
- audience enum | null
Who your customers are: sets the default send window (GET /v1/account/send_schedule).
- b2b
- b2c
- reporting_currency string | null
Currency the dashboard converts every amount into (ECB rates). null: the connected Stripe account's default currency, else the one most customers pay in.
Show 4 more attributesHide 4 attributes
- onboarding object
Show child attributesHide child attributes
- disputes_settings object
Show child attributesHide child attributes
- auto_submit boolean
Off by default: a human approves and sends.
- auto_refund_fraud_warnings boolean
Off by default.
- auto_refund_max_cents integer | null
- notify_email boolean
- notify_slack boolean
Post to the Slack channel of Integrations (if connected).
- contest_cost_cents integer | null
What contesting costs you (provider fee and time). Unset: no suggestion to accept.
- contest_cost_currency string | null
Currency of contest_cost_cents; null = the reporting currency.
-
Automatic submission only from this chance of winning (70 by default).
-
Used by: The account of the API key, Update account settings
ApiKey
- object enum
- api_key
- id string
- name string
- kind enum
- secret
- publishable
- mode enum
- live
- test
- access enum
full: every resource. restricted: see permissions.
- full
- restricted
- permissions object | null
Level per resource (none, read, write). null for publishable keys.
Show child attributesHide child attributes
- account enum
- none
- read
- write
- api_keys enum
- none
- read
- write
- team enum
- none
- read
- write
- events enum
- none
- read
- write
- customers enum
- none
- read
- write
- billing enum
- none
- read
- write
- stripe_connections enum
- none
- read
- write
- logs enum
- none
- read
- write
- flows enum
- none
- read
- write
- email_domains enum
- none
- read
- write
- messages enum
- none
- read
- write
- webhooks enum
- none
- read
- write
- cancel_sessions enum
- none
- read
- write
- reviews enum
- none
- read
- write
- dashboard enum
- none
- read
- write
- insights enum
- none
- read
- write
- integrations enum
- none
- read
- write
- queries enum
- none
- read
- write
- disputes enum
- none
- read
- write
- sandbox enum
- none
- read
- write
-
- last4 string
- allowed_origins array of strings | null
Publishable keys: origins allowed to call the public endpoints (null on secret keys).
- token string | null
Secret keys: only on creation, store it now. Publishable keys: always.
-
First call made with this key (onboarding: waiting for your first event).
Show 2 more attributesHide 2 attributes
Used by: List the API keys of the current mode, Create an API key, Rename a key or change its access, Revoke an API key, List live requests, Ask a human to do something in live mode, Retrieve a live request, Approve a live request, Reject a live request
ApiKeyList
- object enum
- list
- has_more boolean
- next_cursor string | null
Pass as starting_after to get the next page.
AttributeDefinition
- object enum
- attribute_definition
- id string
- key string
- type enum
Inferred at the first send, then locked.
- string
- number
- boolean
- date
- sensitive boolean
Never sent to the AI.
- customers_count integer
Customers of this mode with a value.
- coverage number | null
customers_count / customers of this mode; null without customers.
Used by: Custom attributes of the account, Declare an attribute before its first send, Mark an attribute sensitive
AttributeDefinitionList
- object enum
- list
- has_more boolean
- next_cursor string | null
Pass as starting_after to get the next page.
Used by: Custom attributes of the account
BillingConnection
- object enum
- billing_connection
- id string
- provider enum
- stripe
- chargebee
- recurly
- maxio
- zuora
- paddle
- lemon_squeezy
- polar
- braintree
- mollie
- gocardless
- razorpay
- app_store
- google_play
- custom
- livemode boolean
- status enum
- active
- revoked
- error
- external_account_id string | null
- business_name string | null
- capabilities object
Show child attributesHide child attributes
- retries enum
- nochurn
- provider
- none
- card_update enum
- hosted_page
- provider_portal
- none
- offers array of enums
- coupon
- pause
- downgrade
- cancel_via_api boolean
- disputes enum
- evidence_api
- provider_handles
- refund_review
- none
- fraud_warnings boolean
- webhooks boolean
- backfill boolean
-
- available boolean
The provider's adapter is live on this NoChurn version.
- webhook_url string | null
Paste it in the provider's webhook settings (not for Stripe).
- backfill object
Show child attributesHide child attributes
- webhook_secret_set boolean
False until the provider's webhook secret is pasted (Recurly, Paddle, GoCardless, Razorpay): webhooks are refused until then. Always true for Stripe, for providers that sign webhooks with the API keys (Braintree) and for providers without a webhook secret (Mollie).
Show 6 more attributesHide 6 attributes
- settings object
What the account declares for this connection (stores only; {} otherwise).
Show child attributesHide child attributes
- refund_review object
Store refund reviews: NoChurn answers only if customer_consented is true (your app collects the consent); sample_content_provided is sent unless a free trial is seen on the purchase.
Show child attributesHide child attributes
- customer_consented boolean
- sample_content_provided boolean
-
- push_audience string
Google Play: the audience of the Pub/Sub push OIDC token. Set, pushes without a valid Google-signed token are refused.
- push_service_account_email string
Google Play: the service account that signs the push OIDC token.
-
- internal_id object | null
Where NoChurn reads your app's id for a customer (your user id, stored as external_id) in this tool; null for a tool that carries none (stores, universal webhook). Nothing found: the email decides.
Show child attributesHide child attributes
- error string | null
- webhook_setup object | null
Only in the response that creates the connection: webhook credentials to paste in the provider (e.g. Chargebee Basic auth). Shown once.
Used by: Connected billing providers, Connect a provider with API keys, A billing connection, Change capabilities, the Stripe retry mode or where your user id is read, Disconnect, Import again
BillingConnectionList
- object enum
- list
- has_more boolean
- next_cursor string | null
Pass as starting_after to get the next page.
Used by: Connected billing providers
BillingMapping
- object enum
- billing_mapping
- billing_connection string
- active boolean
- rules array of objects
{ when: { path, equals | in }, type, event_id?, occurred_at?, fields: { "customer.id": "$.data.customer", "invoice.amount_due_cents": { path, transform } | { value } } }
- types array of strings
- fields object
- transforms array of strings
- sample array of objects
- summary object
Used by: Mapping of a custom billing connection, tested on its sample, Save the mapping rules, Turn the mapping on, Turn the mapping off
BillingProvider
- object enum
- billing_provider
- provider enum
- stripe
- chargebee
- recurly
- maxio
- zuora
- paddle
- lemon_squeezy
- polar
- braintree
- mollie
- gocardless
- razorpay
- app_store
- google_play
- custom
- family enum
- billing
- merchant_of_record
- payments
- stores
- custom
- available boolean
Its adapter ships in this version; otherwise "Coming soon".
- connect enum
- oauth
- credentials
- credentials array of objects
- capabilities object
Default capabilities (see BillingConnection.capabilities).
- locked array of strings
Capabilities the provider decides (cannot be changed per connection).
- webhook_secret enum
generated: NoChurn shows webhook credentials once at creation; pasted: create the endpoint on webhook_url, then PATCH webhook_secret.
- generated
- pasted
- none
- hint string | null
What the provider needs beyond credentials, for the connection screen (stores: how customers get linked).
- docs_url string
The tool's integration guide: https://nochurn.sh/docs/integrations/<provider, _ written ->/.
Used by: Billing providers
BillingProviderList
- object enum
- list
- has_more boolean
- next_cursor string | null
Pass as starting_after to get the next page.
Used by: Billing providers
CampaignStats
- object enum
- campaign_stats
- group_by string
- period string
- customers integer
- churned integer
- churn_rate number | null
- tracked integer
- best object | null
Show child attributesHide child attributes
- value string
- relative_risk number
-
- worst object | null
Show child attributesHide child attributes
- value string
- relative_risk number
-
- min_sample integer
- rows array of objects
Show child attributesHide child attributes
- value string
- customers integer
- churned integer
- churn_rate number
- relative_risk number | null
- avg_ltv_cents integer
- avg_score number | null
- mrr_lost_cents integer
- sample_ok boolean
-
Used by: Churn by acquisition campaign
CancelFeedback
- enabled boolean
The feedback step is shown.
- required boolean
"Continue" needs a text (400 otherwise). Cancelling never does.
Used by: Sandbox: play the cancel flow, Cancel flow config for the widget or a native app, Cancel sessions, Open the cancel flow for a customer, Read a cancel session, Answer the current step, Cancel now
CancelFlow
- object enum
- cancel_flow
- id string
- published boolean
- version integer | null
- locale string
- texts object
- reasons array of objects
- feedback_enabled boolean
- languages array of strings
- cancel_fallback_url string | null
With a publishable key: the fallback cancel link (POST { token } as a form). Null for a secret key.
CancelFlowLogo
- object enum
- cancel_flow_logo
- id string
- flow string
- url string
Public and stable: put it in draft.design.logo_url. No account id in it; served without auth.
- content_type enum
- image/png
- image/jpeg
- image/webp
- byte_size integer
- width integer
px
- height integer
px
Used by: Upload a logo for the cancel modal, Remove a logo, Retrieve a flow with its draft, Edit the draft, Publish the draft to test or live mode, Discard the unpublished changes, Put an older version back in the draft, Pause a flow, Resume a paused flow
CancelFlowTheme
- object enum
- cancel_flow_theme
- preset enum
- light
- dark
- playful
- custom_css
- headless
- format enum
modal (centred), panel (side panel) or page (full page).
- modal
- panel
- page
- tokens object
The --nc-* custom properties (--nc-accent-text for accent_text). Enumerated values are mapped to CSS by the widget.
Show child attributesHide child attributes
- bg string
- surface string
- text string
- muted string
- accent string
- accent_text string
- border string
- danger string
-
A font stack. Its first family loads from font_url when it is an allowed Google Font.
-
Base size, px.
-
Modal corners, px.
-
Buttons and fields, px.
-
Backdrop opacity.
-
Modal width, px.
- shadow enum
- none
- sm
- md
- lg
- spacing enum
Density.
- compact
- regular
- comfortable
-
px.
- border_style enum
- solid
- dashed
- none
-
Title size = font_size × font_scale.
- font_weight_title enum
- 400
- 500
- 600
- 700
-
- font_url string | null
Google Fonts stylesheet of the font token's first family (allowed fonts only), else null.
- brand enum
What the header shows: logo (logo_url, else app_name), name (app_name) or none (nothing). logo_url and app_name already follow it: null when the header must not show them.
- logo
- name
- none
- logo_url string | null
https URL of the logo (uploaded, or set in the editor) when brand is logo, else null (show app_name).
- app_name string | null
The account's name: the text shown in place of a logo; null when brand is none.
- end_screen object
The modal's last step (draft.design.end_screen). A cancelled customer's end screen is always calm, whatever the style.
Show child attributesHide child attributes
- style enum
Saved customer: celebrate (default), glow or quiet.
- celebrate
- glow
- quiet
-
Saved screen only: closes by itself after this (default 6); null = never.
-
- custom_css string
Cleaned on the server (no @import, url() only to Google Fonts).
- cancel_button_check enum
- ok
- fallback_applied
- classes array of enums
- nc-modal
- nc-title
- nc-reason
- nc-offer
- nc-btn-primary
- nc-btn-cancel
- nc-footer
Used by: Sandbox: play the cancel flow, Cancel flow config for the widget or a native app, Cancel sessions, Open the cancel flow for a customer, Resume the paused subscription, What the customer's app shows: payment banner and wall, Hide the banner for 24 hours, Read a cancel session, Answer the current step, Cancel now, The cancel modal's design
CancelSession
- object enum
- cancel_session
- id string
- livemode boolean
- step enum
- choose_subscription
- reason
- offer
- feedback
- confirm
- done
- outcome enum | null
- saved
- cancelled
- abandoned
- locale string
- holdout boolean
- published boolean
- customer object | null
- subscription object | null
The subscription this session targets (offers, saved MRR, cancellation). Null at choose_subscription, for an unknown customer, or without a live subscription.
Show child attributesHide child attributes
- id string
- plan string | null
- status enum
- incomplete
- incomplete_expired
- trialing
- active
- past_due
- canceled
- unpaid
- paused
- amount_cents integer
Price per interval (quantity included), minor unit.
- currency string | null
- interval string | null
- interval_count integer
-
Next renewal.
- cancel_at_period_end boolean
-
- subscriptions array of objects
At choose_subscription only (several live subscriptions, none named by the token's
subscriptionclaim): the customer picks one (answer { subscription }) or cancels one (cancel { subscription }). Empty otherwise.Show child attributesHide child attributes
- id string
- plan string | null
- status enum
- incomplete
- incomplete_expired
- trialing
- active
- past_due
- canceled
- unpaid
- paused
- amount_cents integer
Price per interval (quantity included), minor unit.
- currency string | null
- interval string | null
- interval_count integer
-
Next renewal.
- cancel_at_period_end boolean
-
- reasons array of objects
Show 15 more attributesHide 15 attributes
- offer object | null
Show child attributesHide child attributes
- id string
- kind enum
- discount
- pause
- downgrade
- talk
- title string
In the session's language, with the account's text for that offer kind (texts.<lang>.offer_<kind>) when set.
- url string | null
talk: the booking link.
- percent integer | null
discount: percent off.
- months integer | null
discount: how many months; pause: how long.
- plan_name string | null
downgrade: the target plan's name, when the offer has one.
-
- talk_url string | null
- texts object
- feedback_enabled boolean
Same as feedback.enabled (kept for older widgets).
-
This session's design: the flow's, or its segment's / A/B variant's.
- cancel_url_now string | null
Shown once, when the session is created: cancels at any step.
- cancel_status enum | null
- pending
- done
- requested
- failed
-
Once an offer is accepted: outcome saved (discount, pause, downgrade), or a talk offer accepted (the session goes on). Null otherwise.
-
Cancelled: access lasts until then (cancel_effective_at: the period end, or now when immediate). Null otherwise, and while the cancellation is pending.
- confirmation_email_sent boolean
A cancellation confirmation email was actually queued. NoChurn sends none today: always false (the widget hides that fact).
- review object | null
Asked on the last step to happy leavers only, once per customer, never tied to an offer.
Used by: Sandbox: play the cancel flow, Open the cancel flow for a customer, Read a cancel session, Answer the current step, Cancel now
CancelSessionReplay
- object enum
- cancel_session_replay
- id string
- steps array of objects
Timestamped steps.
- reason string | null
- comment string | null
- feedback string | null
- outcome enum | null
- saved
- cancelled
- abandoned
- cancel_status enum | null
- pending
- done
- requested
- failed
Used by: Replay a cancel session
CancelSessionReport
- object enum
- cancel_session
- id string
- livemode boolean
- step enum
- choose_subscription
- reason
- offer
- feedback
- confirm
- done
- outcome enum | null
- saved
- cancelled
- abandoned
- locale string
- holdout boolean
- published boolean
- customer object | null
- subscription object | null
The subscription this session targets (offers, saved MRR, cancellation). Null at choose_subscription, for an unknown customer, or without a live subscription.
Show child attributesHide child attributes
- id string
- plan string | null
- status enum
- incomplete
- incomplete_expired
- trialing
- active
- past_due
- canceled
- unpaid
- paused
- amount_cents integer
Price per interval (quantity included), minor unit.
- currency string | null
- interval string | null
- interval_count integer
-
Next renewal.
- cancel_at_period_end boolean
-
- subscriptions array of objects
At choose_subscription only (several live subscriptions, none named by the token's
subscriptionclaim): the customer picks one (answer { subscription }) or cancels one (cancel { subscription }). Empty otherwise.Show child attributesHide child attributes
- id string
- plan string | null
- status enum
- incomplete
- incomplete_expired
- trialing
- active
- past_due
- canceled
- unpaid
- paused
- amount_cents integer
Price per interval (quantity included), minor unit.
- currency string | null
- interval string | null
- interval_count integer
-
Next renewal.
- cancel_at_period_end boolean
-
- reasons array of objects
Show 17 more attributesHide 17 attributes
- offer object | null
Show child attributesHide child attributes
- id string
- kind enum
- discount
- pause
- downgrade
- talk
- title string
In the session's language, with the account's text for that offer kind (texts.<lang>.offer_<kind>) when set.
- url string | null
talk: the booking link.
- percent integer | null
discount: percent off.
- months integer | null
discount: how many months; pause: how long.
- plan_name string | null
downgrade: the target plan's name, when the offer has one.
-
- talk_url string | null
- texts object
- feedback_enabled boolean
Same as feedback.enabled (kept for older widgets).
-
This session's design: the flow's, or its segment's / A/B variant's.
- cancel_url_now string | null
Shown once, when the session is created: cancels at any step.
- cancel_status enum | null
- pending
- done
- requested
- failed
-
Once an offer is accepted: outcome saved (discount, pause, downgrade), or a talk offer accepted (the session goes on). Null otherwise.
-
Cancelled: access lasts until then (cancel_effective_at: the period end, or now when immediate). Null otherwise, and while the cancellation is pending.
- confirmation_email_sent boolean
A cancellation confirmation email was actually queued. NoChurn sends none today: always false (the widget hides that fact).
- review object | null
Asked on the last step to happy leavers only, once per customer, never tied to an offer.
- reason string | null
- comment string | null
Customer text: show as text.
Used by: Cancel sessions
CancelSessionReportList
- object enum
- list
- has_more boolean
- next_cursor string | null
Pass as starting_after to get the next page.
Used by: Cancel sessions
CancelSessionResult
The end screen of a saved customer. Never an invented number: unknown = null.
- kind enum
- discount
- pause
- downgrade
- talk
- currency string | null
- regular_amount_cents integer | null
The price per interval before the offer (quantity included). Null for talk.
-
discount, downgrade: the next invoice's date (the provider's, else the renewal date).
- next_invoice_amount_cents integer | null
discount, downgrade: the next invoice's amount from the provider (Stripe: upcoming invoice preview, read once when the offer is applied). Null when the provider cannot tell.
-
discount: when the usual price comes back (acceptance + the offer's months).
-
discount: the invoices due before discounted_until (12 at most), at next_invoice_amount_cents. [] otherwise.
Show child attributesHide child attributes
- amount_cents integer | null
-
pause: the resume date (null when your billing pauses it, billing by API).
- plan_name string | null
downgrade: the new plan, when the offer names it.
Used by: Sandbox: play the cancel flow, Cancel sessions, Open the cancel flow for a customer, Read a cancel session, Answer the current step, Cancel now
ChurnScore
- object enum
- churn_score
- customer string
-
null until computed.
- level enum | null
Thresholds of the prevention flow (high ≥ 70, medium ≥ 40 by default).
- low
- medium
- high
- model_version string | null
- factors array of objects
What explains the score, points added (or removed).
-
FLAGGED: a prevention signal before the renewal. Cleared when a new card arrives.
- history array of objects
Last 30 computations, newest first.
Show child attributesHide child attributes
Used by: Churn score of a customer
ClientVersions
- object enum
- client_versions
- livemode boolean
- window_days integer
- data array of objects
Show child attributesHide child attributes
- object enum
- client
- client string
- name string | null
- latest string | null
null for a client NoChurn does not publish.
- minimum string | null
Older versions are unsupported.
- status enum
The worst status among the versions seen in the last 7 days, else the last version's.
- current
- update_available
- unsupported
- unknown
- versions array of objects
Newest first.
Show child attributesHide child attributes
- id string
- version string
- status enum
current; update_available (below latest); unsupported (below minimum); unknown (a client NoChurn does not publish).
- current
- update_available
- unsupported
- unknown
- origin_host string | null
Widget only: the host of the page's Origin (never a path).
- api_key object | null
- oauth_client object | null
The AI app, for the MCP server through OAuth.
- calls_count integer
Approximate (a lower bound): written at most once every 5 minutes per row.
-
-
Customer
- object enum
- customer
- id string
NoChurn id, always present.
- stripe_customer_id string | null
Stripe customer id, when billed by Stripe.
- external_id string | null
The id of this customer in your app.
- stripe_account string | null
- livemode boolean
- email string | null
- company_domain string | null
Domain of the email when it is a company's (not a free, disposable or placeholder address): the customer's logo is GET /v1/logos/{company_domain}.
- name string | null
- locale string | null
- country string | null
- region string | null
State or province of the address.
Show 20 more attributesHide 20 attributes
- timezone string | null
IANA time zone used to reach the customer.
- timezone_source enum | null
api (sent by you, never overwritten), attribute, address, country_guess (main zone of a multi-zone country), ip_country, card_country, account (fallback).
- api
- attribute
- address
- country_guess
- ip_country
- card_country
- account
- attributes object
Custom attributes (M4/M6).
- churn_score integer | null
- churn_level enum | null
- low
- medium
- high
-
FLAGGED: a prevention signal before the renewal. Cleared when a new card arrives.
- state enum
From billing: in_recovery = an open invoice with a failed attempt; churned = no live subscription.
- none
- trialing
- active
- in_recovery
- paused
- churned
- plan string | null
Plan of the main live subscription.
- mrr_cents integer
Monthly recurring revenue, in the minor unit of currency.
- lifetime_value_cents integer
Paid invoices seen by NoChurn (12 months of Stripe history, then all).
- currency string | null
Billing currency. Amounts are never converted.
-
Default payment method (null when none).
-
From the last_active_at attribute your app sends.
-
Set by Pause all flows: no flow acts on this customer.
-
Every identifier a source gave for this customer, oldest first: how Stripe, your other tools, your app and support all reach this one customer (docs: customer matching).
- risk object
With include[]=risk (list only): when the customer renews and why the score is what it is. Early signals (card removed…) are in flag.
Show child attributesHide child attributes
-
Soonest end of the current period of a paying subscription (active or past_due) still to come.
- cancel_at_period_end boolean | null
That subscription stops then instead of renewing. null without a renewal.
-
Factors that raised the last churn score, largest first (starting point and lowering factors left out).
-
Used by: Sandbox: create a test customer, Sandbox: the customer removes their card before the renewal, Customer profile, Pause all flows for a customer, Resume flows for a customer, List customers, Create a customer, Resolve a customer from any of its ids, Retrieve a customer, Update a customer — e.g. link your own id to a Stripe customer, Merge custom attributes
CustomerAccess
May this customer use your app? Same calculation as the in-app wall (wall.after_days, annual_grace_days, wall.enabled of the recovery flow live in this mode; pause.inapp of the cancel flow). Holdout customers, paused flows, a disabled wall or no recovery run: full. Never card data.
- object enum
- customer_access
- customer string
- livemode boolean
- access enum
restricted: block your app (keep paying, resuming and cancelling reachable).
- full
- restricted
- reason enum | null
Null when full. paused: every live subscription is paused and the cancel flow's pause.inapp is wall.
- payment_failed
- paused
-
When the restriction started (the failure + the grace, or the start of the pause; null when unknown). Null when full.
-
When the oldest unpaid invoice under recovery started failing.
-
When access will be restricted if still unpaid (full now, wall enabled); else null.
- invoice string | null
The unpaid invoice (ninv_…) that sets the clock.
- pay_url string | null
Where the customer pays or updates their card (null when nothing is failing).
- subscription string | null
The paused subscription (nsub_…) when the cancel flow shows the pause (banner or wall); else null.
-
With subscription: when the pause started (null when unknown).
Show 2 more attributesHide 2 attributes
-
With subscription: when it resumes by itself (null: no date).
- cancel_url string | null
Where the customer cancels in one click (cancel.nochurn.sh/a/…, valid 30 days): show it next to pay_url (click to cancel). Null when nothing is failing or paused.
Used by: May this customer use your app?
CustomerDuplicate
- object enum
- customer_duplicate
- id string
- livemode boolean
- customer string
The pair is stored with the smaller id first.
- other_customer string
-
Name and email of customer then other_customer; null for one that no longer exists (merged away).
- identifier enum
What they share: an email, or ids one source sent together.
- stripe
- provider
- external
- reason string
- status enum
open (a To do), dismissed (not the same person), merged (one customer absorbed into the other).
- open
- dismissed
- merged
- suggested_keep string | null
Open: the customer to preselect as the one to keep: the one with a live subscription, else the one billed by a tool (Stripe or another), else the oldest. Merged: the kept one. Dismissed: null.
- kept_customer string | null
Merged: the customer that holds everything now (the other one no longer exists).
Show 2 more attributesHide 2 attributes
Used by: List possible duplicate customers, Dismiss a possible duplicate, Merge a possible duplicate
CustomerDuplicateList
- object enum
- list
- has_more boolean
- next_cursor string | null
Pass as starting_after to get the next page.
Used by: List possible duplicate customers
CustomerDuplicatePerson
Used by: List possible duplicate customers, Dismiss a possible duplicate, Merge a possible duplicate
CustomerDuplicateRun
- object enum
- customer_duplicate_run
- id string
- livemode boolean
- kind enum
scan: looks for duplicates among the customers already in base. merge_all: merges every open proposal into its suggested customer.
- scan
- merge_all
- status enum
- queued
- running
- done
- failed
- total integer
scan: customers read. merge_all: open proposals at the start.
- processed integer
How many of total were gone through so far (real progress).
- found integer
scan: new proposals created (pairs already proposed, dismissed or merged are never proposed again).
- merged integer
merge_all: pairs merged into their suggested customer.
- skipped integer
merge_all: pairs decided meanwhile, or folded into another pair by an earlier merge of the run.
- failed integer
merge_all: pairs that could not be merged (see failures); the others went on.
- failures array of objects
merge_all: each failed pair and why (the first 100).
Show 4 more attributesHide 4 attributes
- error string | null
failed: why the whole run stopped.
Used by: Scan the customers for possible duplicates, Merge every open possible duplicate
CustomerDuplicateSummary
- object enum
- customer_duplicate_summary
- livemode boolean
- open_count integer
Open proposals of this mode.
-
End of the last finished scan of this mode (null: never scanned).
- scan object | null
The latest scan (null: never).
Show child attributesHide child attributes
- object enum
- customer_duplicate_run
- id string
- livemode boolean
- kind enum
scan: looks for duplicates among the customers already in base. merge_all: merges every open proposal into its suggested customer.
- scan
- merge_all
- status enum
- queued
- running
- done
- failed
- total integer
scan: customers read. merge_all: open proposals at the start.
- processed integer
How many of total were gone through so far (real progress).
- found integer
scan: new proposals created (pairs already proposed, dismissed or merged are never proposed again).
- merged integer
merge_all: pairs merged into their suggested customer.
- skipped integer
merge_all: pairs decided meanwhile, or folded into another pair by an earlier merge of the run.
- failed integer
merge_all: pairs that could not be merged (see failures); the others went on.
- failures array of objects
merge_all: each failed pair and why (the first 100).
- error string | null
failed: why the whole run stopped.
-
- merge_all object | null
The latest merge all (null: never).
Show child attributesHide child attributes
- object enum
- customer_duplicate_run
- id string
- livemode boolean
- kind enum
scan: looks for duplicates among the customers already in base. merge_all: merges every open proposal into its suggested customer.
- scan
- merge_all
- status enum
- queued
- running
- done
- failed
- total integer
scan: customers read. merge_all: open proposals at the start.
- processed integer
How many of total were gone through so far (real progress).
- found integer
scan: new proposals created (pairs already proposed, dismissed or merged are never proposed again).
- merged integer
merge_all: pairs merged into their suggested customer.
- skipped integer
merge_all: pairs decided meanwhile, or folded into another pair by an earlier merge of the run.
- failed integer
merge_all: pairs that could not be merged (see failures); the others went on.
- failures array of objects
merge_all: each failed pair and why (the first 100).
- error string | null
failed: why the whole run stopped.
-
Used by: Possible duplicates: count and scans
CustomerFlag
FLAGGED: a prevention signal before the renewal. Cleared when a new card arrives.
- reason enum
- card_removed
- card_expiring
Used by: Sandbox: create a test customer, Sandbox: the customer removes their card before the renewal, Customer profile, Pause all flows for a customer, Resume flows for a customer, List customers, Create a customer, Resolve a customer from any of its ids, Retrieve a customer, Update a customer — e.g. link your own id to a Stripe customer, Churn score of a customer, Merge custom attributes
CustomerIdentifier
- kind enum
stripe (cus_), provider (a billing, store or support tool's id), external (your id, current or previous), email, nochurn (the cst_ id of a customer merged into this one, still accepted).
- stripe
- external
- provider
- nochurn
- provider string | null
The tool for stripe and provider ids (stripe, chargebee, app_store, intercom…).
- connection string | null
The billing connection (scn_ / bcn_) or support integration (itg_) the id belongs to.
- value string
- source enum
Who gave it: api, import, stripe, stripe_metadata, provider, support, manual, merge (moved by a merge).
- api
- stripe_metadata
- stripe
- manual
- provider
- support
- import
- merge
Used by: Sandbox: create a test customer, Sandbox: the customer removes their card before the renewal, Customer profile, Pause all flows for a customer, Resume flows for a customer, List customers, Create a customer, Resolve a customer from any of its ids, Retrieve a customer, Update a customer — e.g. link your own id to a Stripe customer, Merge custom attributes
CustomerInsight
- object enum
- customer_insight
- id string
- summary string
- signals array of strings
- next_step string | null
- sources array of enums
- stripe
- custom_data
- support
Used by: Customer profile, AI analysis of a customer
CustomerPage
- object enum
- list
- has_more boolean
- next_cursor string | null
Pass as starting_after to get the next page.
- total_count integer
With include[]=total_count.
Used by: List customers
CustomerProfile
- object enum
- customer_profile
- billing object
Show child attributesHide child attributes
- mrr_cents integer
- currency string | null
- lifetime_value_cents integer
-
Start of the history the lifetime value covers.
-
Default payment method (null when none).
- next_renewal object | null
Show child attributesHide child attributes
- amount_cents integer
- currency string | null
- subscription string
- subscriptions array of objects
Show child attributesHide child attributes
- id string
- plan string | null
- status string
- mrr_cents integer
- currency string | null
- interval string | null
- interval_count integer
- cancel_at_period_end boolean
-
-
- score object
Factors are computed with the churn score (M4).
- ai_analysis_status enum
fresh: less than 7 days old and no important event since (POST …/insight returns it without an AI call). stale: older, or an important event came after it (ai_analysis is the old one). missing: never analysed. not_enough_data: too little activity for an analysis (POST …/insight answers 422 insufficient_data).
- fresh
- stale
- missing
- not_enough_data
- attributes object
- links object
Show child attributesHide child attributes
Used by: Customer profile
CustomerSummary
- object enum
- customer_summary
- livemode boolean
- timezone string
- active object
Show child attributesHide child attributes
- count integer
- new_this_month integer
-
- high_risk object
- in_recovery object
- saved_this_month object
Show child attributesHide child attributes
- count integer | null
-
Used by: The 4 figures of the Customers page
Dispute
- object enum
- dispute
- id string
- livemode boolean
- provider enum
- stripe
- chargebee
- recurly
- maxio
- zuora
- paddle
- lemon_squeezy
- polar
- braintree
- mollie
- gocardless
- razorpay
- app_store
- google_play
- custom
- billing_connection string
- external_id string
- charge string | null
- customer string | null
- customer_name string | null
- customer_email string | null
- customer_plan string | null
Plan of the customer's latest subscription in this mode.
- amount_cents integer
Show 15 more attributesHide 15 attributes
- currency string
- reason string | null
- status enum
- needs_response
- under_review
- won
- lost
- accepted
- warning_needs_response
- warning_under_review
- warning_closed
- prevented
- no_decision
- submitted_by string | null
usr_… or system (auto-submit).
- provider_submitted boolean
The provider already has a reply (Stripe Smart Disputes, its dashboard): NoChurn will not send.
- read_only boolean
Nothing can be sent or edited: closed, submitted, or handled by the provider.
- capability enum
- evidence_api
- provider_handles
- refund_review
- none
- evidence_count integer
- draft_status enum | null
- draft
- approved
- sent
- win_score object | null
Chance of winning, 0–100: the AI's estimate from the evidence (an estimate, not a measured probability), or a person's (source manual). Null until estimated.
Show child attributesHide child attributes
- source enum
- ai
- manual
- confidence enum | null
- low
- medium
- high
- factors array of objects
- evidence_count integer | null
- model string | null
- set_by string | null
Used by: Disputes
DisputeDetail
- object enum
- dispute
- id string
- livemode boolean
- provider enum
- stripe
- chargebee
- recurly
- maxio
- zuora
- paddle
- lemon_squeezy
- polar
- braintree
- mollie
- gocardless
- razorpay
- app_store
- google_play
- custom
- billing_connection string
- external_id string
- charge string | null
- customer string | null
- customer_name string | null
- customer_email string | null
- customer_plan string | null
Plan of the customer's latest subscription in this mode.
- amount_cents integer
Show 19 more attributesHide 19 attributes
- currency string
- reason string | null
- status enum
- needs_response
- under_review
- won
- lost
- accepted
- warning_needs_response
- warning_under_review
- warning_closed
- prevented
- no_decision
- submitted_by string | null
usr_… or system (auto-submit).
- provider_submitted boolean
The provider already has a reply (Stripe Smart Disputes, its dashboard): NoChurn will not send.
- read_only boolean
Nothing can be sent or edited: closed, submitted, or handled by the provider.
- capability enum
- evidence_api
- provider_handles
- refund_review
- none
- evidence_count integer
- draft_status enum | null
- draft
- approved
- sent
- win_score object | null
Chance of winning, 0–100: the AI's estimate from the evidence (an estimate, not a measured probability), or a person's (source manual). Null until estimated.
Show child attributesHide child attributes
- source enum
- ai
- manual
- confidence enum | null
- low
- medium
- high
- factors array of objects
- evidence_count integer | null
- model string | null
- set_by string | null
- charge_details object | null
The disputed charge as NoChurn synced it; null when the payment is unknown.
Show child attributesHide child attributes
- recommendation object | null
Whether contesting is worth it; null once nothing can be sent. A suggestion only: NoChurn never accepts by itself.
Show child attributesHide child attributes
- suggestion enum | null
accept: no evidence from a record and the amount is at most the cost of contesting. null: not enough to compare.
- accept
- contest
- reason string
- evidence_count integer
Included evidence backed by a record (NoChurn's own statements excluded).
- amount_cents integer | null
Disputed amount in
currency; null without an exchange rate. - contest_cost_cents integer | null
From disputes_settings; null when not set.
- currency string
- win_score integer | null
Chance of winning used (AI or a person).
- expected_gain_cents integer | null
Chance × amount, compared with the cost of contesting; null without a score and a cost.
-
Used by: A dispute with its evidence and draft, Include, exclude, reorder or add evidence, Attach a file as evidence, Remove an attached file before sending, Draft the reply again, Edit or approve the reply, Send the reply to the provider, Accept the dispute, Set the chance of winning yourself, or give it back to the AI
DisputeDraft
- id string
- object enum
- dispute_draft
- text string
- cited_item_ids array of strings
Evidence items the reply relies on (dev_…).
- model string | null
AI model, or "template" when the AI answer was rejected.
- status enum
- draft
- approved
- sent
- edited_by string | null
Used by: A dispute with its evidence and draft, Include, exclude, reorder or add evidence, Attach a file as evidence, Remove an attached file before sending, Draft the reply again, Edit or approve the reply, Send the reply to the provider, Accept the dispute, Set the chance of winning yourself, or give it back to the AI
DisputeEvidenceItem
- id string
- object enum
- dispute_evidence_item
- kind enum
- communication
- policy
- usage
- reminder
- cancel_history
- refund_history
- receipt
- other
- title string
- content string | null
- source_type string | null
- source_id string | null
- included boolean
- position integer
- file object | null
A file attached by a person (source_type file): PDF, JPEG or PNG, 5 MB at most. null for other evidence.
Show child attributesHide child attributes
- filename string
- content_type enum
- application/pdf
- image/jpeg
- image/png
- byte_size integer
- sent_to_provider boolean
The provider has a copy (given when the reply was sent).
-
Used by: A dispute with its evidence and draft, Include, exclude, reorder or add evidence, Attach a file as evidence, Remove an attached file before sending, Draft the reply again, Edit or approve the reply, Send the reply to the provider, Accept the dispute, Set the chance of winning yourself, or give it back to the AI
DisputeList
- object enum
- list
- has_more boolean
- next_cursor string | null
Pass as starting_after to get the next page.
Used by: Disputes
DisputesSummary
- object enum
- disputes_summary
- livemode boolean
- days integer
- open integer
- due_within_72h integer
- open_amount array of objects
Show child attributesHide child attributes
- currency string
- amount_cents integer
-
-
Soonest upcoming deadline of an open dispute.
- drafts_ready integer
Open disputes NoChurn can send whose reply is drafted: they wait for a review.
- won integer
- lost integer
Lost or accepted.
- decided integer
Sample size of win_rate.
- win_rate number | null
Show 4 more attributesHide 4 attributes
- won_amount array of objects
Saved: disputes won and closed only.
Show child attributesHide child attributes
- currency string
- amount_cents integer
-
- win_score_accuracy object
How often the AI's chance of winning called the outcome (50+ = won), on decided disputes it scored.
- fraud_warnings_open integer
- fraud_warnings_refunded integer
Used by: Counts of the Disputes tab
EmailPreview
- object enum
- email_preview
- step string
email_1…, card_removed, card_expiring, renewal_reminder, d30, d60, d90, review_follow_up
- label string
- language string
- source enum
Where the text shown comes from.
- custom
- ai
- template
- subject string
Placeholders filled.
- text string
Plain-text body, placeholders filled.
- html string
HTML body as sent (escaped paragraphs and links, no script, no style).
- ai_generated boolean
- review object
- warnings array of strings
What the preview differs on, and problems of your text.
- customer object
Who the placeholders were filled for: the example customer (fictional data) or a real customer.
Show 7 more attributesHide 7 attributes
- sample boolean
True when the data is the example customer's.
- template object
NoChurn's text in this language, placeholders not filled (to start from or reset to).
- custom object | null
Your text saved in the draft for this language, or null.
- placeholders array of strings
- required_placeholders array of strings
- languages array of strings
- sources array of enums
- custom
- ai
- template
Used by: Preview an email of a flow
EmailSuppression
- object enum
- email_suppression
- id string
- livemode boolean
- email string
- reason enum
- unsubscribed
- bounced
- complained
- gdpr
- manual
- scope enum
- all
- marketing
- message string | null
Used by: Addresses never emailed again, Never email this address again
EmailSuppressionList
- object enum
- list
- has_more boolean
- next_cursor string | null
Pass as starting_after to get the next page.
Used by: Addresses never emailed again
Error
- error object
Show child attributesHide child attributes
- code enum
- unauthorized
- forbidden
- not_found
- invalid_request
- conflict
- internal_error
- rate_limited
- customer_not_found
- ambiguous_customer
- stripe_not_configured
- stripe_error
- two_factor_required
- attribute_type_mismatch
- attribute_limit_reached
- provider_not_available
- capability_missing
- dispute_already_submitted
- dispute_not_supported_by_provider
- provider_error
- evidence_file_unsupported
- evidence_file_too_large
- evidence_files_limit
- logo_unsupported
- logo_too_large
- plan_billing_not_configured
- custom_plan_required
- test_mode_only
- live_approval_required
- live_read_not_granted
- insufficient_scope
- publishable_key_required
- payload_too_large
- subscription_not_found
- subscription_required
- email_domain_provisioning_failed
- insufficient_data
- nothing_to_resume
- message string
- fix string
- retry_after integer
Seconds to wait (rate_limited only).
-
Used by: The account of the API key, Update account settings, Sandbox: create a test customer, Sandbox: simulate a failed payment, Integration checklist, Tested code for a platform and a case, List subscriptions, optionally for one customer, Send a subscription, List the API keys of the current mode, Create an API key, Rename a key or change its access, Revoke an API key, Connect a provider with API keys, Save the mapping rules, Turn the mapping on, List invoices, optionally for one customer, List payment methods, optionally for one customer, Upload a logo for the cancel modal, Remove a logo, Open the cancel flow for a customer, Add an offer to the cancel flow's library, Versions of NoChurn's client code calling the API, May this customer use your app?, Customer profile, Scan the customers for possible duplicates, List customers, Create a customer, Resolve a customer from any of its ids, Retrieve a customer, Update a customer — e.g. link your own id to a Stripe customer, List possible duplicate customers, Dismiss a possible duplicate, Merge a possible duplicate, One reply, KPIs, funnel and holdout of a flow, Track a usage event, Recompute now, A dispute with its evidence and draft, Attach a file as evidence, Remove an attached file before sending, Send the reply to the provider, Accept the dispute, Set the chance of winning yourself, or give it back to the AI, Preview an email of a flow, Resume the paused subscription, List events, newest first, Choose the events sent to Slack (and its channel) or added as Intercom notes, Retrieve a flow with its draft, Edit the draft, Pause a flow, What the customer's app shows: payment banner and wall, Connect Crisp (website or plugin token) or Gorgias, OAuth URL of a support tool or Slack, Sync now, Theme again, AI analysis of a customer, Ask a human to do something in live mode, Approve a live request, List the unified log, newest first, Count of today's lines and of the errors of a window, Retrieve a line with its payload, Approve an email waiting for review, Send a test email to yourself, Email a setup step to a colleague, Allow or stop an AI app's live reads, Revoke an AI app's access, Run a query, Schedule a report, Answer the customer, Add a review page, Merge custom attributes, Declare an attribute before its first send, Mark an attribute sensitive, Import a CSV of customers and attributes, Create a segment, Edit a segment, Delete a segment, Draft an A/B test, Start, stop, or pick a winner, Make flows follow Settings › Send schedule, Change the audience or any option, Add your sending domain, Check the DNS records, New random subdomain, Get the Stripe Connect URL to open in the browser, Choose who handles payment retries, or where your user id is read, Disconnect a Stripe account, Re-run the Stripe import, Change a member's role, Invite someone, Cancel a pending invitation, Add a webhook endpoint, Read a cancel session, Answer the current step, Cancel now, The widget had to restore the hidden cancel button, Track usage events from the browser
Event
- object enum
- event
- id string
- type string
- subject object | null
- reason string | null
- actor object
- livemode boolean
- data object
Used by: List events, newest first
EventList
- object enum
- list
- has_more boolean
- next_cursor string | null
Pass as starting_after to get the next page.
Used by: List events, newest first
Experiment
- object enum
- experiment
- id string
- flow string
- segment string | null
- name string
- target enum
- offer
- text
- timing
- design
- channel
- goal_metric enum
- saved
- card_updated_before_renewal
- recovered_within_7d
- won_back
- status enum
- draft
- running
- stopped
- decided
- auto_pick boolean
- threshold number
- min_sample integer
Show 5 more attributesHide 5 attributes
- winner string | null
- variants array of objects
Show child attributesHide child attributes
- id string
- label enum
- A
- B
- C
- D
- is_control boolean
- weight integer
- overrides object
Patch of the flow config (on top of the segment's). A send_window option left out follows the flow.
- exposures integer
- conversions integer
- conversion_rate number | null
- probability_best number | null
-
Used by: A/B tests, Draft an A/B test, Start, stop, or pick a winner
ExperimentList
- object enum
- list
- has_more boolean
- next_cursor string | null
Pass as starting_after to get the next page.
Used by: A/B tests
Feedback
- object enum
- feedback
- answers_90d integer
- run object | null
Show child attributesHide child attributes
- id string
- summary string | null
- answers_count integer
- currency string | null
Currency of the themes' mrr_lost_cents (the reporting currency when the run was computed).
- themes array of objects
Show child attributesHide child attributes
- id string
- title string
- mentions integer
Counted in code.
- delta_pct number | null
- main_reason_key string | null
- mrr_lost_cents integer
- unconverted_currencies array of strings
Currencies of lost MRR without an ECB rate: left out of mrr_lost_cents.
- quotes array of strings
Feedback item ids to quote.
-
-
- items array of objects
Show child attributesHide child attributes
Used by: Feedback themes and latest answers
FeedbackRefresh
Used by: Theme again
Flow
- object enum
- flow
- id string
- kind enum
- prevention
- recovery
- cancel
- winback
- key string
- name string
- status enum
draft: never published; test: runs in test mode only; live: runs in both modes; paused.
- draft
- test
- live
- paused
- holdout_percent integer
Share of customers NoChurn leaves alone, to measure its effect.
- test_version object | null
Show child attributesHide child attributes
- id string
- number integer
- published_to enum
- test
- live
-
- live_version object | null
Show child attributesHide child attributes
- id string
- number integer
- published_to enum
- test
- live
-
- unpublished_changes array of strings
Draft sections that differ from the last version.
- mode_status object
Where the flow stands in the mode of the request (NoChurn-Mode or the key's mode).
Show child attributesHide child attributes
- livemode boolean
- state enum
published: a version runs in this mode; draft: nothing published in this mode yet; paused: paused (both modes).
- published
- draft
- paused
- version integer | null
Number of the version that runs in this mode.
- unpublished_changes array of strings
Draft sections not yet published in this mode (a pending draft).
-
Show 3 more attributesHide 3 attributes
Used by: List the 4 flows
FlowDetail
- object enum
- flow
- id string
- kind enum
- prevention
- recovery
- cancel
- winback
- key string
- name string
- status enum
draft: never published; test: runs in test mode only; live: runs in both modes; paused.
- draft
- test
- live
- paused
- holdout_percent integer
Share of customers NoChurn leaves alone, to measure its effect.
- test_version object | null
Show child attributesHide child attributes
- id string
- number integer
- published_to enum
- test
- live
-
- live_version object | null
Show child attributesHide child attributes
- id string
- number integer
- published_to enum
- test
- live
-
- unpublished_changes array of strings
Draft sections that differ from the last version.
- mode_status object
Where the flow stands in the mode of the request (NoChurn-Mode or the key's mode).
Show child attributesHide child attributes
- livemode boolean
- state enum
published: a version runs in this mode; draft: nothing published in this mode yet; paused: paused (both modes).
- published
- draft
- paused
- version integer | null
Number of the version that runs in this mode.
- unpublished_changes array of strings
Draft sections not yet published in this mode (a pending draft).
-
Show 5 more attributesHide 5 attributes
- draft object
Configuration being edited, by section.
-
Logos uploaded for the cancel modal and not removed (POST /v1/flows/cancel/logos); [] for the other flows.
Used by: Remove a logo, Retrieve a flow with its draft, Edit the draft, Publish the draft to test or live mode, Discard the unpublished changes, Put an older version back in the draft, Pause a flow, Resume a paused flow
FlowList
- object enum
- list
- has_more boolean
- next_cursor string | null
Pass as starting_after to get the next page.
Used by: List the 4 flows
FlowNotifications
- object enum
- flow_notifications
- livemode boolean
- events array of objects
The events that can be notified, with the flow that emits them.
- slack object
Show child attributesHide child attributes
- kind enum
- slack
- intercom_note
- connected boolean
The integration (Slack, Intercom) is connected and active.
- integration_status enum | null
null: never connected.
- active
- error
- revoked
- workspace string | null
The Slack workspace or Intercom app.
- events array of enums
Empty: nothing is sent.
- recovery.opened
- recovery.recovered
- recovery.lost
- cancel_session.offer_accepted
- cancel_session.completed
- customer.flagged
- winback.reactivated
- channel string | null
Slack only: where messages go (the channel chosen for Slack alerts until one is saved here).
- notes_access enum | null
Intercom only: whether the install may write notes on contacts. reconnect_required: Intercom refused a note, reconnect it.
- unknown
- ok
- reconnect_required
- last_error string | null
Why the last notification failed, with what to do.
-
- intercom object
Show child attributesHide child attributes
- kind enum
- slack
- intercom_note
- connected boolean
The integration (Slack, Intercom) is connected and active.
- integration_status enum | null
null: never connected.
- active
- error
- revoked
- workspace string | null
The Slack workspace or Intercom app.
- events array of enums
Empty: nothing is sent.
- recovery.opened
- recovery.recovered
- recovery.lost
- cancel_session.offer_accepted
- cancel_session.completed
- customer.flagged
- winback.reactivated
- channel string | null
Slack only: where messages go (the channel chosen for Slack alerts until one is saved here).
- notes_access enum | null
Intercom only: whether the install may write notes on contacts. reconnect_required: Intercom refused a note, reconnect it.
- unknown
- ok
- reconnect_required
- last_error string | null
Why the last notification failed, with what to do.
-
Used by: Slack messages and Intercom notes sent when a flow acts, Choose the events sent to Slack (and its channel) or added as Intercom notes
FlowRun
- object enum
- flow_run
- id string
- livemode boolean
- flow string
- version integer
- customer object | null
- subject object | null
- holdout boolean
In the holdout group: NoChurn does nothing, the run is only measured.
- state enum
- active
- succeeded
- failed
- stopped
- current_step string | null
- outcome enum | null
- prevented
- recovered
- saved
- won_back
- lost
- cancelled
- abandoned
Show 7 more attributesHide 7 attributes
- outcome_mrr_cents integer | null
- outcome_cents integer | null
- currency string | null
- confirmation enum | null
pending, then confirmed if the customer still pays 30 days later, else reverted.
- pending
- confirmed
- reverted
- stop_reason string | null
Used by: Customers in this flow
FlowRunList
- object enum
- list
- has_more boolean
- next_cursor string | null
Pass as starting_after to get the next page.
Used by: Customers in this flow
FlowStats
- object enum
- flow_stats
- flow string
- kind enum
- prevention
- recovery
- cancel
- winback
- livemode boolean
- period object
- kpis array of objects
4 KPIs; saved / recovered / won back / prevented count confirmed outcomes.
Show child attributesHide child attributes
- key string
- label string
- value number | null
- unit enum
- count
- money
- rate
- days
- sample_size integer
- pending integer
Outcomes reached but not confirmed yet (30 days).
- currency string
- open_rate number | null
- breakdown array of objects
Per original currency: the amount and its value in the reporting currency (ECB rate of its day).
Show child attributesHide child attributes
- currency string
- amount_cents integer
In this currency.
- converted_cents integer
Its converted part, in the reporting currency.
- unconverted_cents integer
In this currency: amounts of days without an ECB rate, left out of the total.
-
-
- funnel array of objects
5 steps: runs started in the period that reached each step, share of the first.
- holdout object
Show child attributesHide child attributes
- percent integer | null
- runs integer
- natural_rate number | null
What happened without NoChurn (holdout group).
- treated_rate number | null
- lift number | null
- sample_size integer
-
Used by: KPIs, funnel and holdout of a flow
FlowTestEmail
- object enum
- flow_test_email
- to string
- subject string
- body string
- ai_generated boolean
- source enum
custom: your text; ai: written by the AI; template: NoChurn's text.
- custom
- ai
- template
- review object
Used by: Send a test email to yourself
FlowVersion
- object enum
- flow_version
- id string
- flow string
- number integer
- config object
- holdout_percent integer
- published_to enum
- test
- live
- published_by string | null
FlowVersionList
- object enum
- list
- has_more boolean
- next_cursor string | null
Pass as starting_after to get the next page.
FraudWarning
- id string
- object enum
- fraud_warning
- livemode boolean
- provider string
- external_id string
- charge string | null
- customer string | null
- customer_name string | null
- customer_email string | null
- customer_plan string | null
- amount_cents integer | null
- currency string | null
Show 7 more attributesHide 7 attributes
- fraud_type string | null
- actionable boolean
- action enum
- none
- refunded
- dismissed
- acted_by string | null
- note string | null
Used by: Early fraud warnings, Refund before the dispute, Keep the payment
FraudWarningList
- object enum
- list
- has_more boolean
- next_cursor string | null
Pass as starting_after to get the next page.
Used by: Early fraud warnings
Import
- object enum
- import
- id string
- status enum
- pending
- running
- completed
- failed
- filename string | null
- mapping object
- rows_total integer
- rows_imported integer
- rows_failed integer
- errors array of objects
Row by row, 500 at most.
- livemode boolean
Show 1 more attributesHide 1 attributes
Used by: Imports, Import a CSV of customers and attributes, An import and its error report
ImportList
- object enum
- list
- has_more boolean
- next_cursor string | null
Pass as starting_after to get the next page.
Used by: Imports
ImportPreview
- object enum
- import_preview
- columns array of objects
- rows_total integer
- rows array of objects
First 10 rows.
InappPausedDetails
kind paused: what the paused wall or banner draws.
- kind enum
- paused
-
When the pause started (null when NoChurn never saw it start).
-
When it resumes by itself (null: no date set).
- regular_amount_cents integer
The price per interval once resumed (quantity included).
- currency string | null
- resume_allowed boolean
POST /v1/inapp/resume can resume it (Stripe, or a provider NoChurn resumes); false for billing by API.
Used by: Resume the paused subscription, What the customer's app shows: payment banner and wall, Hide the banner for 24 hours
InappPaymentDetails
kind payment_failed: what the payment wall draws. Never more card data than brand, last4 and expiry; never the provider's message.
- kind enum
- payment_failed
- amount_due_cents integer
- currency string | null
-
The invoice's due date when the billing set one, else null.
- payment_method object | null
The method of the failed payment, else the customer's default one; null when unknown.
- decline enum
Mapped from the provider's decline or failure code (expired_card → expired; insufficient_funds; authentication_required; anything else → declined).
- expired
- insufficient_funds
- authentication_required
- declined
Used by: Resume the paused subscription, What the customer's app shows: payment banner and wall, Hide the banner for 24 hours
InappState
- object enum
- inapp_state
- customer string
- access enum
restricted exactly when wall.show is true: the same calculation as GET /v1/customers/{id}/access (DECISIONS 81, 87).
- full
- restricted
- access_reason enum | null
Why access is restricted; null when full. paused: only when the cancel flow's pause.inapp is wall.
- payment_failed
- paused
- locale enum
?locale=, then the customer's language, then the account's.
- en
- fr
- de
- it
- pt
- texts object | null
Banner and wall texts in this locale (banner_text, banner_cta, dismiss, banner_days_left, banner_last_day, wall_title, wall_text, wall_cta, pay_cta, amount_due, card_expired, decline_expired, decline_insufficient_funds, decline_authentication_required, decline_declined, checking_payment, back_in_title, back_in_text, data_safe, paused_banner_text, paused_title, paused_text, paused_resumes, resume_cta, resuming, resumed_title, resumed_text, cancel_now): the recovery flow's inapp.texts, else NoChurn's. {{amount}} is already filled (the unpaid amount, or the regular price when paused); {{days}}, {{date}} and {{exp}} are for the widget to fill (from details, days_left, in the customer's locale). Null when nothing is shown.
-
The cancel flow's design (same tokens as the modal). Null when nothing is shown.
- banner object
Show child attributesHide child attributes
- show boolean
- text string
- cta_url string | null
- cta_label string | null
- kind enum
- payment_failed
- paused
- audience enum
- admins
- everyone
- dismissible_for_hours integer
- dismiss_label string
-
payment_failed: when the wall comes up if still unpaid (wall enabled, not up yet); else null.
-
Whole days until restricts_at, in the customer's time zone (0 = last day); null with restricts_at.
- details object | null
The facts the banner draws (same as wall.details); null when the banner is not shown.
-
- wall object
Show child attributesHide child attributes
- show boolean
- text string
- cta_url string | null
- cta_label string | null
- kind enum
- payment_failed
- paused
- shows_after_days integer | null
payment_failed: the grace in days; null for paused (at once).
- cancel object
Click to cancel on the wall: open the cancel modal (NoChurn.cancel, POST /v1/cancel_sessions); if that fails, POST the customer token as a form field
tokento fallback_url.Show child attributesHide child attributes
- label string
The cancel flow's cancel_now text (or the in-app override).
- fallback_url string | null
The publishable key's fallback cancel link (null for a secret key).
-
- details object | null
The facts the wall draws; null when the wall is not shown. paused: cta_label is the resume button (POST /v1/inapp/resume), null when resume_allowed is false; cta_url is null.
- kind enum
- payment_failed
- amount_due_cents integer
- currency string | null
-
The invoice's due date when the billing set one, else null.
- payment_method object | null
The method of the failed payment, else the customer's default one; null when unknown.
- decline enum
Mapped from the provider's decline or failure code (expired_card → expired; insufficient_funds; authentication_required; anything else → declined).
- expired
- insufficient_funds
- authentication_required
- declined
- kind enum
- paused
-
When the pause started (null when NoChurn never saw it start).
-
When it resumes by itself (null: no date set).
- regular_amount_cents integer
The price per interval once resumed (quantity included).
- currency string | null
- resume_allowed boolean
POST /v1/inapp/resume can resume it (Stripe, or a provider NoChurn resumes); false for billing by API.
-
-
Used by: Resume the paused subscription, What the customer's app shows: payment banner and wall, Hide the banner for 24 hours
Insights
- object enum
- insights
- run object | null
Show child attributesHide child attributes
- id string
- population integer
- churned integer
- baseline_rate number | null
- window_days integer
- drivers array of objects
Show child attributesHide child attributes
- id string
- attribute string
- source enum
- nochurn
- custom
- bucket string
- customers integer
- churned integer
- churn_rate number
- relative_risk number | null
- ci_low number | null
- ci_high number | null
- q_value number | null
- significant boolean
- sample_ok boolean
- delta_vs_previous number | null
- mrr_cents integer
MRR of the active customers of the bucket.
-
-
- insight object | null
Show child attributesHide child attributes
- id string
- run string
- model string | null
- prompt_version string
- headline string | null
- insights array of objects
- data_gaps array of strings
- drivers array of objects
The drivers the insight cites, from its own run (may be older than
run).Show child attributesHide child attributes
- id string
- attribute string
- bucket string
- customers integer
- churn_rate number
- relative_risk number | null
- significant boolean
-
-
Used by: Churn drivers and AI insights
InsightsRefresh
Used by: Recompute now
Integration
- object enum
- integration
- id string
- kind enum
- intercom
- crisp
- zendesk
- hubspot
- helpscout
- gorgias
- slack
- status enum
- active
- error
- revoked
- external_account string | null
- config object
Slack: the channel NoChurn posts to.
Show child attributesHide child attributes
- channel string
-
- error string | null
Actionable: why it needs a reconnection.
- conversations_count integer | null
Used by: Connected tools, Connect Crisp (website or plugin token) or Gorgias, Slack channel, Disconnect, Sync now
IntegrationAuthorizeUrl
Used by: OAuth URL of a support tool or Slack
IntegrationList
- object enum
- list
- has_more boolean
- next_cursor string | null
Pass as starting_after to get the next page.
Used by: Connected tools
IntegrationSnippets
- object enum
- integration_snippets
- version string
- platform string | null
- language string | null
- api_base_url string
- snippets array of objects
Show child attributesHide child attributes
- case string
- status enum
- available
- not_available_yet
- title string
- language enum | null
- node
- ruby
- python
- curl
- browser
- label string
- syntax string
- runs_on enum
- server
- browser
- insert string
Where to put it in the project.
- env array of strings
Environment variables the code reads.
- file string
- code string | null
- detail string
-
IntegrationVerification
- object enum
- integration_verification
- livemode enum
- false
- complete boolean
- passed integer
- total integer
- checks array of objects
Show child attributesHide child attributes
- go_live_url string | null
Where a human goes live, once everything passes.
Used by: Integration checklist, Integration checklist, with the code to scan for secrets
Invitation
- object enum
- invitation
- id string
- email string
- role enum
- owner
- admin
- member
- status enum
- pending
- accepted
- revoked
- expired
- url string | null
Invitation link. Only returned at creation: copy it and send it yourself.
- invited_by string | null
Used by: Pending invitations, Invite someone, Cancel a pending invitation
InvitationList
- object enum
- list
- has_more boolean
- next_cursor string | null
Pass as starting_after to get the next page.
Used by: Pending invitations
Invoice
- object enum
- invoice
- id string
- customer string
- subscription string | null
- stripe_invoice_id string | null
- external_id string | null
- livemode boolean
- number string | null
- status enum
- draft
- open
- paid
- uncollectible
- void
- amount_due_cents integer
- amount_paid_cents integer
- amount_remaining_cents integer
Show 8 more attributesHide 8 attributes
- currency string | null
- attempt_count integer
- failure_code string | null
- decline_code string | null
- hosted_invoice_url string | null
Used by: Sandbox: simulate a failed payment, List invoices, optionally for one customer
InvoiceList
- object enum
- list
- has_more boolean
- next_cursor string | null
Pass as starting_after to get the next page.
LiveRequest
- object enum
- live_request
- id string
- action enum
The operation (LiveRequestCreate lists each one with its params).
- create_live_api_key
- publish_flow_live
- set_billing_source
- create_webhook_endpoint
- update_webhook_endpoint
- delete_webhook_endpoint
- test_webhook_endpoint
- create_attribute_definition
- update_attribute_definition
- create_customer
- update_customer
- set_customer_attributes
- record_usage_event
- record_usage_events
- create_subscription
- update_subscription
- record_payment
- title string
The operation's name, e.g. Add a live webhook endpoint.
- summary string
What approving does, written by NoChurn from the params (never by the AI app).
- params object
The operation's params as checked by NoChurn (LiveRequestParams*), e.g. a customer reference resolved to its cst_… id.
- precondition object | null
What must still hold at approval, else the request fails without acting.
Show child attributesHide child attributes
- kind enum
- draft_digest
- current_value
- record_version
- record_exists
- object string | null
flow, billing_source, webhook_endpoint, attribute_definition, customer, subscription
- id string | null
- expected string | null
current_value only: the value when the app asked.
- status enum | null
Pending requests only: checked now.
- holds
- changed
- description string
-
- reason string | null
Written by the AI app: untrusted text, show it as text.
- status enum
- pending
- approved
- rejected
- expired
- failed
- requested_by object
- approval_url string
Dashboard page where an owner or admin approves or rejects it.
- decided_by object | null
Show 7 more attributesHide 7 attributes
- result object
What the approval produced: object and id only (plus api_key_id, flow_version_id, billing_source for the first three operations). Never live data.
- error string | null
failed: why the action did not run.
-
Approval of create_live_api_key only: the new live key with its secret, shown once to the approver.
- response object | null
Approval answer only, to the approver: the operation's API response (it may hold a secret shown once: a live key's token, a webhook endpoint's signing secret). Never stored.
Used by: List live requests, Ask a human to do something in live mode, Retrieve a live request, Approve a live request, Reject a live request
LiveRequestCreate
object
LiveRequestCreateCreateAttributeDefinition
- action enum
- create_attribute_definition
-
Params of create_attribute_definition: Declare a live customer attribute.
-
Shown to the human as the app's note (untrusted text).
LiveRequestCreateCreateCustomer
- action enum
- create_customer
-
Params of create_customer: Create a live customer.
-
Shown to the human as the app's note (untrusted text).
LiveRequestCreateCreateLiveApiKey
- action enum
- create_live_api_key
-
Params of create_live_api_key: Create a live API key.
-
Shown to the human as the app's note (untrusted text).
LiveRequestCreateCreateSubscription
- action enum
- create_subscription
-
Params of create_subscription: Record a live subscription.
-
Shown to the human as the app's note (untrusted text).
LiveRequestCreateCreateWebhookEndpoint
- action enum
- create_webhook_endpoint
-
Params of create_webhook_endpoint: Add a live webhook endpoint.
-
Shown to the human as the app's note (untrusted text).
LiveRequestCreateDeleteWebhookEndpoint
- action enum
- delete_webhook_endpoint
-
Params of delete_webhook_endpoint: Remove a live webhook endpoint.
-
Shown to the human as the app's note (untrusted text).
LiveRequestCreatePublishFlowLive
- action enum
- publish_flow_live
-
Params of publish_flow_live: Publish a flow to live mode.
-
Shown to the human as the app's note (untrusted text).
LiveRequestCreateRecordPayment
- action enum
- record_payment
-
Params of record_payment: Record a live payment attempt.
-
Shown to the human as the app's note (untrusted text).
LiveRequestCreateRecordUsageEvent
- action enum
- record_usage_event
-
Params of record_usage_event: Record a live usage event.
-
Shown to the human as the app's note (untrusted text).
LiveRequestCreateRecordUsageEvents
- action enum
- record_usage_events
-
Params of record_usage_events: Record live usage events.
-
Shown to the human as the app's note (untrusted text).
LiveRequestCreateSetBillingSource
- action enum
- set_billing_source
-
Params of set_billing_source: Change the billing source.
-
Shown to the human as the app's note (untrusted text).
LiveRequestCreateSetCustomerAttributes
- action enum
- set_customer_attributes
-
Params of set_customer_attributes: Set attributes on a live customer.
-
Shown to the human as the app's note (untrusted text).
LiveRequestCreateTestWebhookEndpoint
- action enum
- test_webhook_endpoint
-
Params of test_webhook_endpoint: Send a test webhook to a live endpoint.
-
Shown to the human as the app's note (untrusted text).
LiveRequestCreateUpdateAttributeDefinition
- action enum
- update_attribute_definition
-
Params of update_attribute_definition: Change a live customer attribute.
-
Shown to the human as the app's note (untrusted text).
LiveRequestCreateUpdateCustomer
- action enum
- update_customer
-
Params of update_customer: Change a live customer.
-
Shown to the human as the app's note (untrusted text).
LiveRequestCreateUpdateSubscription
- action enum
- update_subscription
-
Params of update_subscription: Change a live subscription.
-
Shown to the human as the app's note (untrusted text).
LiveRequestCreateUpdateWebhookEndpoint
- action enum
- update_webhook_endpoint
-
Params of update_webhook_endpoint: Change a live webhook endpoint.
-
Shown to the human as the app's note (untrusted text).
LiveRequestList
- object enum
- list
- has_more boolean
- next_cursor string | null
Pass as starting_after to get the next page.
Used by: List live requests
LiveRequestParamsCreateAttributeDefinition
Params of create_attribute_definition: Declare a live customer attribute.
LiveRequestParamsCreateCustomer
Params of create_customer: Create a live customer.
LiveRequestParamsCreateLiveApiKey
Params of create_live_api_key: Create a live API key.
- kind enum
- secret
- publishable
- access enum
- full
- restricted
- permissions object
LiveRequestParamsCreateSubscription
Params of create_subscription: Record a live subscription.
- customer string | object
cst_…, cus_… or your own id, or { external_id, email, name }
string
- interval enum
- day
- week
- month
- year
-
ISO 8601
- cancel_at_period_end boolean
-
ISO 8601
LiveRequestParamsCreateWebhookEndpoint
Params of create_webhook_endpoint: Add a live webhook endpoint.
- events enum | array of enums
LiveRequestParamsDeleteWebhookEndpoint
Params of delete_webhook_endpoint: Remove a live webhook endpoint.
LiveRequestParamsPublishFlowLive
Params of publish_flow_live: Publish a flow to live mode.
-
flw_… or a kind: prevention, recovery, cancel, winback
LiveRequestParamsRecordPayment
Params of record_payment: Record a live payment attempt.
LiveRequestParamsRecordUsageEvent
Params of record_usage_event: Record a live usage event.
-
ISO 8601
- properties object
LiveRequestParamsRecordUsageEvents
Params of record_usage_events: Record live usage events.
-
Show child attributesHide child attributes
-
ISO 8601
- properties object
LiveRequestParamsSetBillingSource
Params of set_billing_source: Change the billing source.
- billing_source enum
- stripe
- api
LiveRequestParamsSetCustomerAttributes
Params of set_customer_attributes: Set attributes on a live customer.
- attributes object
Custom attributes; null removes a key.
LiveRequestParamsTestWebhookEndpoint
Params of test_webhook_endpoint: Send a test webhook to a live endpoint.
- type enum
- recovery.opened
- recovery.recovered
- recovery.lost
- outcome.confirmed
- outcome.reverted
- billing.retry_requested
- billing.cancel_requested
- billing.discount_requested
- billing.pause_requested
- billing.downgrade_requested
- customer.scored
- customer.flagged
- customer.access_restricted
- customer.access_restored
- cancel_session.started
- cancel_session.offer_accepted
- cancel_session.completed
- winback.reactivated
LiveRequestParamsUpdateAttributeDefinition
Params of update_attribute_definition: Change a live customer attribute.
- sensitive boolean
LiveRequestParamsUpdateCustomer
Params of update_customer: Change a live customer.
- attributes object
Custom attributes; null removes a key.
LiveRequestParamsUpdateSubscription
Params of update_subscription: Change a live subscription.
- interval enum
- day
- week
- month
- year
-
ISO 8601
- cancel_at_period_end boolean
-
ISO 8601
LiveRequestParamsUpdateWebhookEndpoint
Params of update_webhook_endpoint: Change a live webhook endpoint.
LogEntry
- object enum
- log_entry
- id string
- livemode boolean
-
Millisecond precision.
- source enum
stripe (webhooks), api (your calls with an API key), nochurn (decisions), widget, webhook (outgoing), a billing tool (chargebee, zuora…: its webhooks and what NoChurn reads from it), a support tool (intercom, crisp, zendesk, hubspot, helpscout, gorgias).
- stripe
- api
- nochurn
- widget
- webhook
- chargebee
- recurly
- maxio
- zuora
- paddle
- lemon_squeezy
- polar
- braintree
- mollie
- gocardless
- razorpay
- app_store
- google_play
- custom
- intercom
- crisp
- zendesk
- hubspot
- helpscout
- gorgias
- type string
- customer object | null
The customer this line is about (open it with /v1/customers/{id}).
- summary string | null
- status string
HTTP status ("200", "500") or ok, received, ignored, failed.
- error boolean
- why string | null
Why this happened (the reason of the NoChurn decision).
- ref object | null
Show 1 more attributesHide 1 attributes
- request_id string | null
Used by: List the unified log, newest first
LogEntryDetail
- object enum
- log_entry
- id string
- livemode boolean
-
Millisecond precision.
- source enum
stripe (webhooks), api (your calls with an API key), nochurn (decisions), widget, webhook (outgoing), a billing tool (chargebee, zuora…: its webhooks and what NoChurn reads from it), a support tool (intercom, crisp, zendesk, hubspot, helpscout, gorgias).
- stripe
- api
- nochurn
- widget
- webhook
- chargebee
- recurly
- maxio
- zuora
- paddle
- lemon_squeezy
- polar
- braintree
- mollie
- gocardless
- razorpay
- app_store
- google_play
- custom
- intercom
- crisp
- zendesk
- hubspot
- helpscout
- gorgias
- type string
- customer object | null
The customer this line is about (open it with /v1/customers/{id}).
- summary string | null
- status string
HTTP status ("200", "500") or ok, received, ignored, failed.
- error boolean
- why string | null
Why this happened (the reason of the NoChurn decision).
- ref object | null
Show 2 more attributesHide 2 attributes
- request_id string | null
- payload object
Secrets, tokens and emails are filtered.
Used by: Retrieve a line with its payload
LogEntryPage
- object enum
- list
- has_more boolean
With after=: more new lines are waiting, poll again now.
- next_cursor string | null
Pass as starting_after to get older lines.
- poll_cursor string | null
Pass as after to get only newer lines (live view).
- retention_days integer
Used by: List the unified log, newest first
LogStats
- object enum
- log_stats
- livemode boolean
- timezone string
- today_count integer
-
Error lines in the window and filters passed (same as GET /v1/logs: 24 hours by default).
- retention_days integer
Used by: Count of today's lines and of the errors of a window
Membership
- object enum
- membership
- id string
- role enum
- owner
- admin
- member
- user object
Show child attributesHide child attributes
- id string
- email string
- name string | null
- two_factor_enabled boolean
-
Used by: Team members of the account, Change a member's role, Remove a member
MembershipList
- object enum
- list
- has_more boolean
- next_cursor string | null
Pass as starting_after to get the next page.
Used by: Team members of the account
Message
- object enum
- message
- id string
- livemode boolean
- channel enum
- customer object
- flow_run string | null
- template_key string | null
- locale string | null
- from string
- from_name string | null
- reply_to string | null
- to string
Show 15 more attributesHide 15 attributes
- subject string
- ai_generated boolean
- review_state enum
- auto_approved
- needs_review
- approved
- rejected
- review_issues array of strings
Why the automatic review kept it for a human.
- status enum
- queued
- sending
- sent
- delivered
- bounced
- complained
- failed
- suppressed
- cancelled
- schedule_reasons array of strings
- error string | null
Used by: List emails sent or queued
MessageDetail
- object enum
- message
- id string
- livemode boolean
- channel enum
- customer object
- flow_run string | null
- template_key string | null
- locale string | null
- from string
- from_name string | null
- reply_to string | null
- to string
Show 17 more attributesHide 17 attributes
- subject string
- ai_generated boolean
- review_state enum
- auto_approved
- needs_review
- approved
- rejected
- review_issues array of strings
Why the automatic review kept it for a human.
- status enum
- queued
- sending
- sent
- delivered
- bounced
- complained
- failed
- suppressed
- cancelled
- schedule_reasons array of strings
- error string | null
- body_text string
- body_html string | null
Used by: Approve an email waiting for review, Reject an email: it is never sent, One email, with its body, Edit an email waiting for review, Answer the customer
MessageList
- object enum
- list
- has_more boolean
- next_cursor string | null
Pass as starting_after to get the next page.
Used by: List emails sent or queued
MessageReply
- object enum
- message_reply
- id string
- message string
The email it answers (msg_…).
- customer string | null
- customer_email string | null
- customer_name string | null
- flow_run string | null
- flow enum | null
- prevention
- recovery
- cancel
- winback
- from string
- subject string | null
- text string
The reply without quoted history. Customer content: show as text.
- category enum
- wants_to_return
- question
- not_interested
- unsubscribe
- out_of_office
- other
Show 7 more attributesHide 7 attributes
- summary string | null
One line by the AI; null when keyword rules sorted it.
- needs_human boolean
- status enum
- open
- handled
- ignored
- answer_message string | null
The answer sent from To do (msg_…).
- livemode boolean
Used by: One reply, Replies to NoChurn emails, Ignore a reply, Mark a reply handled
MessageReplyPage
- object enum
- list
- has_more boolean
- next_cursor string | null
Pass as starting_after to get the next page.
- open_count integer
Replies still open in this mode (To do badge).
Used by: Replies to NoChurn emails
OauthGrant
- object enum
- oauth_grant
- id string
- client object
Show child attributesHide child attributes
- id string
- name string
- verified boolean
true when every redirect URI of the client is a known callback of one vendor (Claude, ChatGPT, Cursor; Oauth::VerifiedClients), never because of its name. Loopback redirects are never verified.
- verified_name enum | null
The vendor's canonical name when verified (show it instead of name), null otherwise.
- Claude
- ChatGPT
- Cursor
- client_uri string | null
-
- user object
Who connected the app. The app acts with this user's role.
- scopes array of enums
- read
- configure
- sandbox
- live_read boolean
The app may read live data (NoChurn-Mode: live, reads only). Off unless a human allowed it.
- live_write enum
Changes in live mode always go through a live request.
- approval_required
Used by: List the AI apps connected to the account, Allow or stop an AI app's live reads, Revoke an AI app's access
OauthGrantList
- object enum
- list
- has_more boolean
- next_cursor string | null
Pass as starting_after to get the next page.
Offer
Used by: Offer library, Add an offer to the cancel flow's library, Edit an offer, Archive an offer
OfferList
- object enum
- list
- has_more boolean
- next_cursor string | null
Pass as starting_after to get the next page.
Used by: Offer library
Payment
- object enum
- payment
- id string
- livemode boolean
- customer string
- subscription string | null
- invoice string | null
- external_id string | null
- stripe_charge_id string | null
- status enum
- succeeded
- failed
- pending
- amount_cents integer
- currency string
- decline_code string | null
Show 3 more attributesHide 3 attributes
- failure_code string | null
Used by: Sandbox: simulate a failed payment, Payments, Send a payment
PaymentList
- object enum
- list
- has_more boolean
- next_cursor string | null
Pass as starting_after to get the next page.
Used by: Payments
PaymentMethod
Metadata only. NoChurn never stores card numbers.
- object enum
- payment_method
- id string
- customer string | null
- stripe_payment_method_id string | null
- livemode boolean
- type string
- brand string | null
- last4 string | null
- exp_month integer | null
- exp_year integer | null
- funding string | null
credit, debit, prepaid or unknown
- country string | null
Show 4 more attributesHide 4 attributes
- wallet string | null
apple_pay, google_pay, link…
- is_default boolean
Used by: Sandbox: create a test customer, Sandbox: the customer removes their card before the renewal, List payment methods, optionally for one customer
PaymentMethodList
- object enum
- list
- has_more boolean
- next_cursor string | null
Pass as starting_after to get the next page.
PaymentMethodSummary
Default payment method (null when none).
- id string
- type string
- brand string | null
- last4 string | null
- exp_month integer | null
- exp_year integer | null
- funding string | null
- wallet string | null
- risk_category enum | null
- bank_card
- wallet
- link
- sepa
- neobank
- prepaid
- disposable
- label string
Used by: Sandbox: create a test customer, Sandbox: the customer removes their card before the renewal, Customer profile, Pause all flows for a customer, Resume flows for a customer, List customers, Create a customer, Resolve a customer from any of its ids, Retrieve a customer, Update a customer — e.g. link your own id to a Stripe customer, Merge custom attributes
ProjectDetection
- object enum
- project_detection
- platforms array of objects
- backend string | null
- frontend string | null
- mobile array of strings
- billing object
- plan object
Show child attributesHide child attributes
- steps array of objects
Show child attributesHide child attributes
- key string
- title string
- status enum
- available
- not_available_yet
- tools array of strings
- snippet_cases array of strings
- snippet_platform string
- detail string
-
- warnings array of strings
-
Used by: Detect the project's platforms and plan the integration
QueryRun
- object enum
- query_run
- id string
- status enum
- succeeded
- failed
- timeout
-
NoChurn query builder (no SQL). Either metrics (+ dimensions) or fields.
- columns array of strings
- rows array of arrays
- row_count integer
- duration_ms integer
Used by: Run a query
QuerySource
- source enum
- customers
- subscriptions
- invoices
- payments
- cancel_sessions
- flow_runs
- usage_events
- messages
- label string
- description string
One line: what a row of this source is.
- fields array of objects
Show child attributesHide child attributes
- field string
- type enum
- string
- number
- boolean
- date
- label string
- description string
One line, shown as a hint.
-
Enum-like fields only. closed: every allowed value. observed: the values seen for this account and mode, most frequent first (50 at most, cached 10 minutes): other values are still accepted.
- values_kind enum
Present with values.
- closed
- observed
-
Used by: What a query can read
QuerySourceList
- object enum
- list
- has_more boolean
- next_cursor string | null
Pass as starting_after to get the next page.
Used by: What a query can read
QuerySpec
NoChurn query builder (no SQL). Either metrics (+ dimensions) or fields.
- source enum
- customers
- subscriptions
- invoices
- payments
- cancel_sessions
- flow_runs
- usage_events
- messages
- period object | null
- sort object | null
Used by: Run a query, Ask anything, Saved queries, Save a query, Rename or change a saved query, Schedule a report, Stop a report
QueryTranslation
- object enum
- query_translation
- question string
-
NoChurn query builder (no SQL). Either metrics (+ dimensions) or fields.
- explanation string
Used by: Ask anything
ReviewPlatform
- object enum
- review_platform
- id string
- kind enum
- g2
- capterra
- trustpilot
- app_store
- product_hunt
- url string
- status enum
- active
- disabled
- review_count integer | null
- rating number | null
- rules object
Used by: Edit or disable a review page, Your review pages, Add a review page
ReviewPlatformList
- object enum
- list
- has_more boolean
- next_cursor string | null
Pass as starting_after to get the next page.
Used by: Your review pages
ReviewRequestStats
- object enum
- review_request_stats
- cancellations integer
- requested integer
- clicked integer
- follow_ups_sent integer
- by_platform object
Used by: Review requests this month
SandboxCancelFlowRun
- object enum
- sandbox_cancel_flow_run
Used by: Sandbox: play the cancel flow
SandboxCardRemoved
- object enum
- sandbox_card_removed
-
Metadata only. NoChurn never stores card numbers.
- flagged boolean
- prevention_run object | null
Show child attributesHide child attributes
- id string
- state string
- holdout boolean
- stop_reason string | null
-
Used by: Sandbox: the customer removes their card before the renewal
SandboxCustomer
Used by: Sandbox: create a test customer
SandboxFailedPayment
- object enum
- sandbox_failed_payment
- customer string
- recovery_run object | null
Show child attributesHide child attributes
- id string
- state string
- holdout boolean
- stop_reason string | null
-
- skipped object | null
Why no recovery run started (e.g. not_published).
- next string
Used by: Sandbox: simulate a failed payment
SavedQuery
- object enum
- saved_query
- id string
- name string
- question string | null
-
NoChurn query builder (no SQL). Either metrics (+ dimensions) or fields.
- view enum
- table
- chart
- chart object
- schedule object | null
Show child attributesHide child attributes
- cadence enum
- daily
- weekly
- monthly
- day enum | integer | null
weekly: the weekday; monthly: the day of the month (1–28); daily: null.
- time string
Read only: the hour the report goes out (the hour it was first scheduled at), in timezone.
- timezone string
The account's time zone.
- destination enum
- slack
- target string | null
- last_run string | null
-
Used by: Saved queries, Save a query, Rename or change a saved query, Schedule a report, Stop a report
SavedQueryList
- object enum
- list
- has_more boolean
- next_cursor string | null
Pass as starting_after to get the next page.
Used by: Saved queries
Segment
- object enum
- segment
- id string
- flow string
- name string
- position integer
- is_default boolean
Everyone else: always last, no conditions.
- conditions object
{ any: [ { all: [ { source, field, op, value } ] } ] }
- overrides object
THEN: patch of the flow config, frozen on each run at entry. A send_window option left out follows the flow.
- customers_count integer | null
- mrr_cents integer | null
Used by: Segments of a flow, Create a segment, Edit a segment
SegmentField
- source enum
- stripe
- nochurn
- custom
- field string
- type enum
- string
- number
- boolean
- date
- label string
- ops array of strings
Used by: Fields a segment can use
SegmentFieldList
- object enum
- list
- has_more boolean
- next_cursor string | null
Pass as starting_after to get the next page.
Used by: Fields a segment can use
SegmentList
- object enum
- list
- has_more boolean
- next_cursor string | null
Pass as starting_after to get the next page.
Used by: Segments of a flow
SegmentPreview
- object enum
- segment_preview
- customers_count integer
- mrr_cents integer
Used by: Count the customers of conditions
SendingDomain
- object enum
- sending_domain
- id string
- domain string
- sender_name string | null
- sender_email string
- sending_host string
- status enum
provisioning: Mailgun is preparing the records (dns_records is empty until then, or provisioning_error says why it could not); pending: records to add; verified: records found and the domain active at Mailgun; failed: records still missing after 7 days.
- provisioning
- pending
- verified
- failed
- provider enum
Who holds the domain: mailgun, or fake outside production (sample records, nothing created).
- mailgun
- fake
- provisioning_error object | null
Why the records could not be prepared yet, with what to do; null otherwise.
- existing_dmarc boolean
A DMARC record already exists: NoChurn does not propose another one.
Show 4 more attributesHide 4 attributes
- fallback_address string
- from_address string
Emails go out from this address now: the sender once verified, the fallback before.
- dns_records array of objects
Used by: List sending domains, Add your sending domain, Check the DNS records, New random subdomain, Retrieve the sending domain, Change the sender
SendingDomainList
- object enum
- list
- has_more boolean
- next_cursor string | null
Pass as starting_after to get the next page.
Used by: List sending domains
SendSchedule
- object enum
- send_schedule
- audience enum | null
- b2b
- b2c
- overrides object
The account's own options on top of the preset.
Show child attributesHide child attributes
- audience enum
- b2b
- b2c
- respect_customer_timezone boolean
- skip_weekends boolean
- skip_public_holidays boolean
Holidays of the customer's country (and state).
- windows object
- quiet_hours object
- days_off array of strings
-
- effective object
What applies (before a flow's own overrides).
Show child attributesHide child attributes
- audience enum
- b2b
- b2c
- respect_customer_timezone boolean
- skip_weekends boolean
- skip_public_holidays boolean
Holidays of the customer's country (and state).
- windows object
- quiet_hours object
- days_off array of strings
-
- presets object
Every option's default, per audience (the preset, then the defaults common to both: time zone, quiet hours, days off). An option equal to it is sent as null to follow the preset.
Show child attributesHide child attributes
- b2b object
B2B preset.
Show child attributesHide child attributes
- audience enum
- b2b
- b2c
- respect_customer_timezone boolean
- skip_weekends boolean
- skip_public_holidays boolean
Holidays of the customer's country (and state).
- windows object
- quiet_hours object
- days_off array of strings
-
- b2c object
B2C preset.
Show child attributesHide child attributes
- audience enum
- b2b
- b2c
- respect_customer_timezone boolean
- skip_weekends boolean
- skip_public_holidays boolean
Holidays of the customer's country (and state).
- windows object
- quiet_hours object
- days_off array of strings
-
-
- suggested_audience object | null
Suggestion from the customers' email domains (onboarding step 1); null below 20 customers with an email.
Show child attributesHide child attributes
- audience enum
- b2b
- b2c
- reason string
- sample_size integer
-
Used by: When NoChurn may contact your customers, Change the audience or any option
SendScheduleFlowOverride
- object enum
- send_schedule_flow_override
- flow object
- version object | null
The version that runs in this mode; null when none.
Show child attributesHide child attributes
- id string
- number integer
- published_to enum
- test
- live
-
- published object
Options the version of this mode sets itself.
Show child attributesHide child attributes
- audience enum
- b2b
- b2c
- respect_customer_timezone boolean
- skip_weekends boolean
- skip_public_holidays boolean
Holidays of the customer's country (and state).
- windows object
- quiet_hours object
- days_off array of strings
-
- draft object
Options the draft sets itself (published at the next publication).
Show child attributesHide child attributes
- audience enum
- b2b
- b2c
- respect_customer_timezone boolean
- skip_weekends boolean
- skip_public_holidays boolean
Holidays of the customer's country (and state).
- windows object
- quiet_hours object
- days_off array of strings
-
- segments array of objects
Segments of the flow whose THEN sets options itself. A segment has no mode and no draft: it applies to the next runs of both modes.
Show child attributesHide child attributes
- id string
- name string
- is_default boolean
Everyone else.
- overrides object
Options the segment sets itself.
Show child attributesHide child attributes
- audience enum
- b2b
- b2c
- respect_customer_timezone boolean
- skip_weekends boolean
- skip_public_holidays boolean
Holidays of the customer's country (and state).
- windows object
- quiet_hours object
- days_off array of strings
-
-
- variants array of objects
A/B variants of the flow that set options themselves: every variant of a draft or running test, the winner of a decided test (stopped tests and losing variants never apply again). No mode. Those of a running test are listed with applies false: applying does not change them.
Show child attributesHide child attributes
- id string
- label enum
- A
- B
- C
- D
- is_control boolean
- experiment object
- overrides object
Options the variant sets itself.
Show child attributesHide child attributes
- audience enum
- b2b
- b2c
- respect_customer_timezone boolean
- skip_weekends boolean
- skip_public_holidays boolean
Holidays of the customer's country (and state).
- windows object
- quiet_hours object
- days_off array of strings
-
- applies boolean
false: the variant's test is running; applying leaves it unchanged (stop the test to apply).
- not_applied_reason enum | null
Why applying does not change the variant; null when it does.
- running_test
-
SendScheduleFlowOverrideList
- object enum
- list
- has_more boolean
- next_cursor string | null
Pass as starting_after to get the next page.
SendScheduleFlowsApplied
- object enum
- send_schedule_flows_applied
- livemode boolean
- applied integer
Number of flows changed, in their own settings, segments or A/B variants (0 when none overrode the account).
- counts object
- data array of objects
Show child attributesHide child attributes
- object enum
- send_schedule_flow_applied
- flow object
- version object | null
The version published with those options at null; null when only the draft changed.
Show child attributesHide child attributes
- id string
- number integer
- published_to enum
- test
- live
-
- published object
The options the replaced version set (now null).
Show child attributesHide child attributes
- audience enum
- b2b
- b2c
- respect_customer_timezone boolean
- skip_weekends boolean
- skip_public_holidays boolean
Holidays of the customer's country (and state).
- windows object
- quiet_hours object
- days_off array of strings
-
- draft object
The options the draft set (now null).
Show child attributesHide child attributes
- audience enum
- b2b
- b2c
- respect_customer_timezone boolean
- skip_weekends boolean
- skip_public_holidays boolean
Holidays of the customer's country (and state).
- windows object
- quiet_hours object
- days_off array of strings
-
- segments array of objects
The segments whose THEN no longer sets those options.
Show child attributesHide child attributes
- id string
- name string
- is_default boolean
Everyone else.
- overrides object
The options the segment set (now removed: it follows its flow).
Show child attributesHide child attributes
- audience enum
- b2b
- b2c
- respect_customer_timezone boolean
- skip_weekends boolean
- skip_public_holidays boolean
Holidays of the customer's country (and state).
- windows object
- quiet_hours object
- days_off array of strings
-
-
- variants array of objects
The A/B variants that no longer set those options (never those of a running test).
Show child attributesHide child attributes
- id string
- label enum
- A
- B
- C
- D
- is_control boolean
- experiment object
- overrides object
The options the variant set (now removed: it follows its flow).
Show child attributesHide child attributes
- audience enum
- b2b
- b2c
- respect_customer_timezone boolean
- skip_weekends boolean
- skip_public_holidays boolean
Holidays of the customer's country (and state).
- windows object
- quiet_hours object
- days_off array of strings
-
- applies boolean
false: the variant's test is running; applying leaves it unchanged (stop the test to apply).
- not_applied_reason enum | null
Why applying does not change the variant; null when it does.
- running_test
-
-
SendSlot
Setup
- object enum
- setup
- livemode boolean
- billing_source enum
- stripe
- api
- api_base_url string
Public URL of the API (e.g. https://api.nochurn.sh), for the dashboard's copy-paste examples.
- complete boolean
Every step done, or skipped (set up later).
- steps array of objects
Show child attributesHide child attributes
- onboarding object
Show child attributesHide child attributes
- counters object
Show child attributesHide child attributes
- customers_imported integer
- active_customers integer
- mrr array of objects
One entry per currency, largest first. Never converted.
- failed_payments_to_recover object
Open invoices with at least one failed attempt.
- high_risk_customers integer
- scored_customers integer
0 until churn scores are computed (M4).
-
Customers with two or more live subscriptions in this mode.
-
Cancel sessions of the last 30 days opened without a
subscription(token claim or server request). With customers_with_multiple_subscriptions > 0, sign the token withsubscription(DECISIONS 72).
-
- history_import object | null
12-month Stripe history import of the latest connection (null with billing by API).
Show child attributesHide child attributes
Used by: Setup checklist: what is installed and what is missing
StripeAuthorizeUrl
StripeConnection
- object enum
- stripe_connection
- id string
- stripe_account_id string
- livemode boolean
- status enum
- active
- revoked
- error
- smart_retries_mode enum
stripe: keep Stripe Smart Retries. nochurn: NoChurn schedules the retries (turn Smart Retries off in Stripe).
- stripe
- nochurn
- internal_id object | null
Where NoChurn reads your app's id for a customer (your user id, stored as external_id) in this tool; null for a tool that carries none (stores, universal webhook). Nothing found: the email decides.
Show child attributesHide child attributes
- backfill object
Show child attributesHide child attributes
- history object
12-month history import (invoices and payment attempts), after the backfill.
Show child attributesHide child attributes
- last_webhook_type string | null
Type of the newest Stripe event received for this connection; null before the first.
Show 1 more attributesHide 1 attributes
Used by: List connected Stripe accounts, Choose who handles payment retries, or where your user id is read, Disconnect a Stripe account, Re-run the Stripe import
StripeConnectionList
- object enum
- list
- has_more boolean
- next_cursor string | null
Pass as starting_after to get the next page.
Used by: List connected Stripe accounts
Subscription
- object enum
- subscription
- id string
- customer string
- stripe_subscription_id string | null
- external_id string | null
- livemode boolean
- status enum
- incomplete
- incomplete_expired
- trialing
- active
- past_due
- canceled
- unpaid
- paused
- plan string | null
- amount_cents integer
- currency string | null
- interval string | null
- interval_count integer
Show 7 more attributesHide 7 attributes
- mrr_cents integer
- cancel_at_period_end boolean
Used by: Sandbox: create a test customer, List subscriptions, optionally for one customer, Send a subscription, Change a subscription sent by API
SubscriptionList
- object enum
- list
- has_more boolean
- next_cursor string | null
Pass as starting_after to get the next page.
TimelinePage
- object enum
- list
- data array of objects
- has_more boolean
- next_cursor string | null
Used by: Customer activity, newest first
UsageEventBatch
- object enum
- usage_event_batch
- accepted integer
- inserted integer
- duplicates integer
Already received (same idempotency_key).
- errors array of objects
Used by: Track a usage event, Track up to 1,000 events
WebhookDelivery
- object enum
- webhook_delivery
- id string
- livemode boolean
- endpoint string
- destination enum
http: your endpoint; slack / intercom_note: a flow notification.
- http
- slack
- intercom_note
- event string | null
- type string
- status enum
skipped: a notification NoChurn chose not to send (no Intercom contact for this customer).
- pending
- retrying
- delivered
- failed
- skipped
- attempts integer
- response_status integer | null
- response_ms integer | null
Show 5 more attributesHide 5 attributes
Used by: Webhooks sent, with their attempts
WebhookDeliveryDetail
- object enum
- webhook_delivery
- id string
- livemode boolean
- endpoint string
- destination enum
http: your endpoint; slack / intercom_note: a flow notification.
- http
- slack
- intercom_note
- event string | null
- type string
- status enum
skipped: a notification NoChurn chose not to send (no Intercom contact for this customer).
- pending
- retrying
- delivered
- failed
- skipped
- attempts integer
- response_status integer | null
- response_ms integer | null
Show 7 more attributesHide 7 attributes
- error string | null
- replay_of string | null
- payload object
- response_excerpt string | null
Used by: Send a test message to the Slack channel now, Send a signed test event now, One delivery, with its payload, Replay a delivery
WebhookDeliveryList
- object enum
- list
- has_more boolean
- next_cursor string | null
Pass as starting_after to get the next page.
Used by: Webhooks sent, with their attempts
WebhookEndpoint
- object enum
- webhook_endpoint
- id string
- livemode boolean
- url string
- description string | null
- events array of strings
- status enum
- enabled
- disabled
- secret string | null
whsec_…: only when created or rotated.
- last_status integer | null
- failure_streak integer
Used by: List webhook endpoints, Add a webhook endpoint, Change an endpoint, disable it or rotate its secret
WebhookEndpointList
- object enum
- list
- has_more boolean
- next_cursor string | null
Pass as starting_after to get the next page.
Used by: List webhook endpoints
WidgetEventBatch
- object enum
- widget_event_batch
- accepted integer
Stored or already received.
- duplicates integer
Already received (same idempotency_key in this mode).
- rejected array of objects
Used by: Track usage events from the browser
WidgetGuardReport
WidgetPing
- object enum
- widget_ping
- cancel_fallback_url string | null
The key's fallback cancel link: POST { token } as a form when a cancel session cannot be opened.
Used by: The widget loaded
WidgetSecret
- object enum
- widget_secret
- configured boolean
- secret string | null
Only when created or rotated: shown once.
Used by: Is the widget signing secret set?, Create or rotate the widget signing secret