Rank your flows by performance over a period — best performers first,
remaining flows by recency. Each row combines email and SMS stats
across the flow’s message steps. Use /v1/reports/flows/{flow_id}
for one flow’s report including the per-node message breakdown.
Every flow with the requested status is listed, quiet ones included —
unlike the display and campaign leaderboards nothing is dropped for
having no activity, so this doubles as a performance-annotated flow
inventory. A flow’s configuration is /v1/flows/{id}.
Target a subaccount instead of the main connected account.
Pass a subaccount id from get_account's subaccounts list. Only direct subaccounts
of the connected account are reachable — omit this for the main account itself.
The resolved date range the report covers, inclusive, in the account's
time zone. Every label except last_month ends today, so the last day
of the range is still in progress: last_7_days is the six days before
today plus today, this_month runs from the 1st through today, and
last_month is the whole previous calendar month. Custom ranges cannot
exceed 366 days.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Privy Knowledge Base","colors":{"primary":"#254E5A","light":"#E3E32B","dark":"#254E5A"},"logo":{"light":"https://mintcdn.com/privy/fGrkZt933tBjY_zl/logo/light.svg?fit=max\u0026auto=format\u0026n=fGrkZt933tBjY_zl\u0026q=85\u0026s=36a01db426b7c94fac423778765cd517","dark":"https://mintcdn.com/privy/fGrkZt933tBjY_zl/logo/dark.svg?fit=max\u0026auto=format\u0026n=fGrkZt933tBjY_zl\u0026q=85\u0026s=24576b53a928bf065f4a636ab8dc3431"},"favicon":"https://mintcdn.com/privy/fGrkZt933tBjY_zl/logo/favicon.svg?fit=max\u0026auto=format\u0026n=fGrkZt933tBjY_zl\u0026q=85\u0026s=9fee6eb5a3c74b929294365e07a3f01d","background":{"color":{"light":"#FFF","dark":"#0D1D23"}},"navbar":{"links":[{"href":"https://www.privy.com/pricing","label":"Pricing"},{"href":"mailto:support@privy.com","label":"Contact Support"}],"primary":{"type":"button","label":"Login","href":"https://dashboard.privy.com"}},"footer":{"socials":{"x":"https://x.com/privy","linkedin":"https://www.linkedin.com/company/privy"}},"seo":{"indexing":"all"},"fonts":{"heading":{"family":"Matter","weight":650,"source":"https://public-assets.privy.com/MatterStandard-VF.woff2","format":"woff2"},"body":{"family":"Matter","weight":400,"source":"https://public-assets.privy.com/MatterStandard-VF.woff2","format":"woff2"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"privy","hasAudioNarration":false,"actualSubdomain":"privy","customDomains":["help.privy.com"],"gitSource":{"type":"github","owner":"privy","repo":"mintlify-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true,"issues":true,"edits":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af3ac7069be62302954224f","clientVersion":"0.0.4111","searchFilterCounts":[{"language":"default","tag":"Learn","count":275},{"language":"default","tag":"Developer","count":49},{"language":"default","tag":"Integrations","count":30},{"language":"default","tag":"Strategy Guides","count":24},{"language":"default","tag":"Flows","count":18},{"language":"default","tag":"Account + Billing","count":18},{"language":"default","tag":"Contacts","count":17},{"language":"default","tag":"Displays","count":15},{"language":"default","tag":"Deliverability","count":11},{"language":"default","tag":"Content","count":10}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"@font-face{font-family:\"Matter\";src:url(\"https://public-assets.privy.com/MatterStandard-VF.woff2\") format(\"woff2\");font-display:swap;font-style:normal;font-weight:600}.mdx-content strong,.mdx-content b{font-weight:600}.mdx-content em,.mdx-content i{font-style:italic}"}],"page":{"pagePath":"docs/api-reference/list-flow-performance","slug":"/docs/api-reference/list-flow-performance","pageMetadata":{"title":"List flow performance","openapi":"openapi/privy-api.yaml GET /reports/flows","description":"Rank your flows by performance over a period — best performers first,\nremaining flows by recency. Each row combines email and SMS stats\nacross the flow's message steps. Use `/v1/reports/flows/{flow_id}`\nfor one flow's report including the per-node message breakdown.\n\nEvery flow with the requested status is listed, quiet ones included —\nunlike the display and campaign leaderboards nothing is dropped for\nhaving no activity, so this doubles as a performance-annotated flow\ninventory. A flow's configuration is `/v1/flows/{id}`.\n\n**Required scope:** `reports_read`\n","href":"/docs/api-reference/list-flow-performance"},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Rank your flows by performance over a period — best performers first,\\nremaining flows by recency. Each row combines email and SMS stats\\nacross the flow’s message steps. Use \", _jsx(_components.code, {\n children: \"/v1/reports/flows/{flow_id}\"\n }), \"\\nfor one flow’s report including the per-node message breakdown.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Every flow with the requested status is listed, quiet ones included —\\nunlike the display and campaign leaderboards nothing is dropped for\\nhaving no activity, so this doubles as a performance-annotated flow\\ninventory. A flow’s configuration is \", _jsx(_components.code, {\n children: \"/v1/flows/{id}\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Required scope:\"\n }), \" \", _jsx(_components.code, {\n children: \"reports_read\"\n })]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"List flow performance","openapi":"openapi/privy-api.yaml GET /reports/flows","description":"Rank your flows by performance over a period — best performers first,\nremaining flows by recency. Each row combines email and SMS stats\nacross the flow's message steps. Use `/v1/reports/flows/{flow_id}`\nfor one flow's report including the per-node message breakdown.\n\nEvery flow with the requested status is listed, quiet ones included —\nunlike the display and campaign leaderboards nothing is dropped for\nhaving no activity, so this doubles as a performance-annotated flow\ninventory. A flow's configuration is `/v1/flows/{id}`.\n\n**Required scope:** `reports_read`\n","href":"/docs/api-reference/list-flow-performance"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"listFlowReports","summary":"List flow performance","description":"Rank your flows by performance over a period — best performers first,\nremaining flows by recency. Each row combines email and SMS stats\nacross the flow's message steps. Use `/v1/reports/flows/{flow_id}`\nfor one flow's report including the per-node message breakdown.\n\nEvery flow with the requested status is listed, quiet ones included —\nunlike the display and campaign leaderboards nothing is dropped for\nhaving no activity, so this doubles as a performance-annotated flow\ninventory. A flow's configuration is `/v1/flows/{id}`.\n\n**Required scope:** `reports_read`\n","tags":["Reports"],"security":["ba5ade5d-a386-45bc-aa31-09172a8490ab"],"parameters":["63354efb-a20a-4737-8c67-7fce61361d81","aa55f831-f559-44f3-851c-80f9b3644349","8c3ce1f1-4adf-46a6-8047-625c8ce850c8","d115f156-42a2-403a-b176-87a3ea3ce1fc","9aea5a5c-0582-48d4-b689-9da91fb0df83","332538a3-9c82-4adc-9e49-23b1f4174c15","579eb70a-626c-48c1-97ec-31b0f114a6a1"],"responses":{"200":"03b79ec0-f0c3-4798-a237-9663ed02805f","401":"8af677e2-de17-445a-8a75-4ef87e3a71bd","403":"d58942ad-05ab-4d65-9965-5d20df1deeed","422":"14bae5e4-4a24-4cb0-a392-0483463b4bd9","429":"b0e4ab9c-aedf-46fa-a1b2-d99d111c0610"},"method":"get","type":"path","servers":["97f63e03-f020-41b7-a5b9-e312bbfed47d"],"path":"/reports/flows","baseUrlOptions":["https://api.privy.com/v1"],"title":"List flow performance","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"63354efb-a20a-4737-8c67-7fce61361d81":{"name":"Privy-Account-Id","in":"header","required":false,"description":"Target a subaccount instead of the main connected account.\nPass a subaccount `id` from get_account's `subaccounts` list. Only direct subaccounts\nof the connected account are reachable — omit this for the main account itself.\n","schema":{"type":"string","isRequired":false,"description":"Target a subaccount instead of the main connected account.\nPass a subaccount `id` from get_account's `subaccounts` list. Only direct subaccounts\nof the connected account are reachable — omit this for the main account itself.\n","uniqueKey":"","typeLabel":"string"},"example":"S1U2B3A4C5C6T7"},"aa55f831-f559-44f3-851c-80f9b3644349":{"name":"period","in":"query","description":"The date range to report over, resolved in the account's time zone. Pass `custom` together with `start_date` and `end_date`.","schema":{"type":"string","enum":["last_7_days","last_30_days","last_90_days","this_month","last_month","custom"],"default":"last_30_days","description":"The date range to report over, resolved in the account's time zone. Pass `custom` together with `start_date` and `end_date`.","uniqueKey":"","typeLabel":"enum\u003cstring>"},"example":"last_30_days"},"8c3ce1f1-4adf-46a6-8047-625c8ce850c8":{"name":"start_date","in":"query","description":"Inclusive start of a `custom` period (ISO 8601 date). Required when `period=custom`, ignored otherwise.","schema":{"type":"string","format":"date","description":"Inclusive start of a `custom` period (ISO 8601 date). Required when `period=custom`, ignored otherwise.","uniqueKey":"","typeLabel":"string\u003cdate>"},"example":"2026-06-01"},"d115f156-42a2-403a-b176-87a3ea3ce1fc":{"name":"end_date","in":"query","description":"Inclusive end of a `custom` period (ISO 8601 date). Required when `period=custom`, ignored otherwise. Custom periods are capped at 366 days.","schema":{"type":"string","format":"date","description":"Inclusive end of a `custom` period (ISO 8601 date). Required when `period=custom`, ignored otherwise. Custom periods are capped at 366 days.","uniqueKey":"","typeLabel":"string\u003cdate>"},"example":"2026-06-30"},"9aea5a5c-0582-48d4-b689-9da91fb0df83":{"name":"status","in":"query","description":"Only include flows with this status. Any other value is rejected.","schema":{"type":"string","enum":["draft","active","inactive"],"description":"Only include flows with this status. Any other value is rejected.","uniqueKey":"","typeLabel":"enum\u003cstring>"},"example":"active"},"332538a3-9c82-4adc-9e49-23b1f4174c15":{"name":"page","in":"query","description":"Page number (starts at 1).","schema":{"type":"integer","default":1,"minimum":1,"description":"Page number (starts at 1).","uniqueKey":"","typeLabel":"integer"},"example":1},"579eb70a-626c-48c1-97ec-31b0f114a6a1":{"name":"per_page","in":"query","description":"Flows per page. Values above 25 are clamped to 25; omitted or invalid values default to 10.","schema":{"type":"integer","default":10,"minimum":1,"maximum":25,"description":"Flows per page. Values above 25 are clamped to 25; omitted or invalid values default to 10.","uniqueKey":"","typeLabel":"integer"},"example":10}},"responses":{"03b79ec0-f0c3-4798-a237-9663ed02805f":{"description":"Flows ranked by performance over the resolved period.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"flow_id":{"type":"string","description":"The flow's unique identifier. Use this value in `/v1/reports/flows/{flow_id}` and `/v1/flows/{id}`.","example":"Vq7L3mN9xR","uniqueKey":"data.items.[INDEX].flow_id","typeLabel":"string"},"title":{"oneOf":[{"type":"string","example":"Abandoned Cart Recovery","uniqueKey":"data.items.[INDEX].title.oneOf.0","typeLabel":"string"},{"type":"null","example":"Abandoned Cart Recovery","uniqueKey":"data.items.[INDEX].title.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.items.[INDEX].title","typeLabel":"string | null"},"status":{"type":"string","enum":["draft","active","inactive"],"example":"active","uniqueKey":"data.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"trigger_type":{"oneOf":[{"type":"string","description":"Normalized name of the event that starts the flow (e.g. `order_placed`, `cart_abandoned`, `customer_subscribed_to_marketing`) — the same vocabulary `GET /v1/flows` returns.","example":"cart_abandoned","uniqueKey":"data.items.[INDEX].trigger_type.oneOf.0","typeLabel":"string"},{"type":"null","description":"Normalized name of the event that starts the flow (e.g. `order_placed`, `cart_abandoned`, `customer_subscribed_to_marketing`) — the same vocabulary `GET /v1/flows` returns.","example":"cart_abandoned","uniqueKey":"data.items.[INDEX].trigger_type.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.items.[INDEX].trigger_type","typeLabel":"string | null"},"trigger_label":{"oneOf":[{"type":"string","description":"Human-readable form of `trigger_type`.","example":"Cart abandoned","uniqueKey":"data.items.[INDEX].trigger_label.oneOf.0","typeLabel":"string"},{"type":"null","description":"Human-readable form of `trigger_type`.","example":"Cart abandoned","uniqueKey":"data.items.[INDEX].trigger_label.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.items.[INDEX].trigger_label","typeLabel":"string | null"},"channels":{"oneOf":[{"type":"string","enum":["email","sms","multi",null],"description":"Message channels the flow sends on. `null` when the flow has no message nodes.","example":"multi","uniqueKey":"data.items.[INDEX].channels.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["email","sms","multi",null],"description":"Message channels the flow sends on. `null` when the flow has no message nodes.","example":"multi","uniqueKey":"data.items.[INDEX].channels.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.items.[INDEX].channels","typeLabel":"enum\u003cstring> | null"},"current_enrollment":{"type":"object","description":"Contacts with a journey in progress right now — a point-in-time count,\nnot scoped to the report period, and at most one journey per contact.\n","properties":{"value":{"type":"number","example":42,"uniqueKey":"data.items.[INDEX].current_enrollment.value","typeLabel":"number"},"unit":{"type":"string","description":"`count`, `percent`, or a lowercased ISO 4217 currency code.","example":"count","uniqueKey":"data.items.[INDEX].current_enrollment.unit","typeLabel":"string"}},"uniqueKey":"data.items.[INDEX].current_enrollment","typeLabel":"object"},"stats":{"type":"object","description":"Combined email + SMS performance for one flow over the report period,\nsummed across the flow's message nodes. `sent` counts send attempts and\n`delivered` counts provider-confirmed deliveries — separate counters,\nneither derived from the other. `opened` and `clicked` are unique counts\n(contacts who opened or clicked at least once within the report period),\nnot totals of every event.\n`open_rate` is `opened` over email deliveries only, since opens do not\nexist for SMS; `click_rate` and `order_rate` are over email and SMS\ndeliveries combined. `attributed_orders` and `attributed_revenue` credit\nthe flow when one of its messages was the contact's most recent\nengagement — email open, email click, or SMS click — in the 7 days before\nthe order was placed: last-touch attribution, where that single most\nrecent engagement takes the whole order.\n","properties":{"sent":{"type":"object","description":"A single report metric with its unit. `count` values are whole\nnumbers, `percent` values are 0–100 with one decimal. Money metrics\ncarry the account's lowercased ISO 4217 currency code as their unit\n(e.g. `usd`, `eur`, `jpy`) and are expressed in that currency's major\nunits, two decimals. A rate whose denominator was zero reports 0, not\nnull — so 0 does not distinguish \"no activity\" from \"activity that\nnever converted\"; read the underlying counts to tell those apart.\n","properties":{"value":{"type":"number","example":42,"uniqueKey":"data.items.[INDEX].stats.sent.value","typeLabel":"number"},"unit":{"type":"string","description":"`count`, `percent`, or a lowercased ISO 4217 currency code.","example":"count","uniqueKey":"data.items.[INDEX].stats.sent.unit","typeLabel":"string"}},"uniqueKey":"data.items.[INDEX].stats.sent","typeLabel":"object"},"delivered":{"type":"object","description":"A single report metric with its unit. `count` values are whole\nnumbers, `percent` values are 0–100 with one decimal. Money metrics\ncarry the account's lowercased ISO 4217 currency code as their unit\n(e.g. `usd`, `eur`, `jpy`) and are expressed in that currency's major\nunits, two decimals. A rate whose denominator was zero reports 0, not\nnull — so 0 does not distinguish \"no activity\" from \"activity that\nnever converted\"; read the underlying counts to tell those apart.\n","properties":{"value":{"type":"number","example":42,"uniqueKey":"data.items.[INDEX].stats.delivered.value","typeLabel":"number"},"unit":{"type":"string","description":"`count`, `percent`, or a lowercased ISO 4217 currency code.","example":"count","uniqueKey":"data.items.[INDEX].stats.delivered.unit","typeLabel":"string"}},"uniqueKey":"data.items.[INDEX].stats.delivered","typeLabel":"object"},"opened":{"type":"object","description":"A single report metric with its unit. `count` values are whole\nnumbers, `percent` values are 0–100 with one decimal. Money metrics\ncarry the account's lowercased ISO 4217 currency code as their unit\n(e.g. `usd`, `eur`, `jpy`) and are expressed in that currency's major\nunits, two decimals. A rate whose denominator was zero reports 0, not\nnull — so 0 does not distinguish \"no activity\" from \"activity that\nnever converted\"; read the underlying counts to tell those apart.\n","properties":{"value":{"type":"number","example":42,"uniqueKey":"data.items.[INDEX].stats.opened.value","typeLabel":"number"},"unit":{"type":"string","description":"`count`, `percent`, or a lowercased ISO 4217 currency code.","example":"count","uniqueKey":"data.items.[INDEX].stats.opened.unit","typeLabel":"string"}},"uniqueKey":"data.items.[INDEX].stats.opened","typeLabel":"object"},"clicked":{"type":"object","description":"A single report metric with its unit. `count` values are whole\nnumbers, `percent` values are 0–100 with one decimal. Money metrics\ncarry the account's lowercased ISO 4217 currency code as their unit\n(e.g. `usd`, `eur`, `jpy`) and are expressed in that currency's major\nunits, two decimals. A rate whose denominator was zero reports 0, not\nnull — so 0 does not distinguish \"no activity\" from \"activity that\nnever converted\"; read the underlying counts to tell those apart.\n","properties":{"value":{"type":"number","example":42,"uniqueKey":"data.items.[INDEX].stats.clicked.value","typeLabel":"number"},"unit":{"type":"string","description":"`count`, `percent`, or a lowercased ISO 4217 currency code.","example":"count","uniqueKey":"data.items.[INDEX].stats.clicked.unit","typeLabel":"string"}},"uniqueKey":"data.items.[INDEX].stats.clicked","typeLabel":"object"},"open_rate":{"type":"object","description":"A single report metric with its unit. `count` values are whole\nnumbers, `percent` values are 0–100 with one decimal. Money metrics\ncarry the account's lowercased ISO 4217 currency code as their unit\n(e.g. `usd`, `eur`, `jpy`) and are expressed in that currency's major\nunits, two decimals. A rate whose denominator was zero reports 0, not\nnull — so 0 does not distinguish \"no activity\" from \"activity that\nnever converted\"; read the underlying counts to tell those apart.\n","properties":{"value":{"type":"number","example":42,"uniqueKey":"data.items.[INDEX].stats.open_rate.value","typeLabel":"number"},"unit":{"type":"string","description":"`count`, `percent`, or a lowercased ISO 4217 currency code.","example":"count","uniqueKey":"data.items.[INDEX].stats.open_rate.unit","typeLabel":"string"}},"uniqueKey":"data.items.[INDEX].stats.open_rate","typeLabel":"object"},"click_rate":{"type":"object","description":"A single report metric with its unit. `count` values are whole\nnumbers, `percent` values are 0–100 with one decimal. Money metrics\ncarry the account's lowercased ISO 4217 currency code as their unit\n(e.g. `usd`, `eur`, `jpy`) and are expressed in that currency's major\nunits, two decimals. A rate whose denominator was zero reports 0, not\nnull — so 0 does not distinguish \"no activity\" from \"activity that\nnever converted\"; read the underlying counts to tell those apart.\n","properties":{"value":{"type":"number","example":42,"uniqueKey":"data.items.[INDEX].stats.click_rate.value","typeLabel":"number"},"unit":{"type":"string","description":"`count`, `percent`, or a lowercased ISO 4217 currency code.","example":"count","uniqueKey":"data.items.[INDEX].stats.click_rate.unit","typeLabel":"string"}},"uniqueKey":"data.items.[INDEX].stats.click_rate","typeLabel":"object"},"attributed_orders":{"type":"object","description":"A single report metric with its unit. `count` values are whole\nnumbers, `percent` values are 0–100 with one decimal. Money metrics\ncarry the account's lowercased ISO 4217 currency code as their unit\n(e.g. `usd`, `eur`, `jpy`) and are expressed in that currency's major\nunits, two decimals. A rate whose denominator was zero reports 0, not\nnull — so 0 does not distinguish \"no activity\" from \"activity that\nnever converted\"; read the underlying counts to tell those apart.\n","properties":{"value":{"type":"number","example":42,"uniqueKey":"data.items.[INDEX].stats.attributed_orders.value","typeLabel":"number"},"unit":{"type":"string","description":"`count`, `percent`, or a lowercased ISO 4217 currency code.","example":"count","uniqueKey":"data.items.[INDEX].stats.attributed_orders.unit","typeLabel":"string"}},"uniqueKey":"data.items.[INDEX].stats.attributed_orders","typeLabel":"object"},"attributed_revenue":{"type":"object","description":"A single report metric with its unit. `count` values are whole\nnumbers, `percent` values are 0–100 with one decimal. Money metrics\ncarry the account's lowercased ISO 4217 currency code as their unit\n(e.g. `usd`, `eur`, `jpy`) and are expressed in that currency's major\nunits, two decimals. A rate whose denominator was zero reports 0, not\nnull — so 0 does not distinguish \"no activity\" from \"activity that\nnever converted\"; read the underlying counts to tell those apart.\n","properties":{"value":{"type":"number","example":42,"uniqueKey":"data.items.[INDEX].stats.attributed_revenue.value","typeLabel":"number"},"unit":{"type":"string","description":"`count`, `percent`, or a lowercased ISO 4217 currency code.","example":"count","uniqueKey":"data.items.[INDEX].stats.attributed_revenue.unit","typeLabel":"string"}},"uniqueKey":"data.items.[INDEX].stats.attributed_revenue","typeLabel":"object"},"order_rate":{"type":"object","description":"A single report metric with its unit. `count` values are whole\nnumbers, `percent` values are 0–100 with one decimal. Money metrics\ncarry the account's lowercased ISO 4217 currency code as their unit\n(e.g. `usd`, `eur`, `jpy`) and are expressed in that currency's major\nunits, two decimals. A rate whose denominator was zero reports 0, not\nnull — so 0 does not distinguish \"no activity\" from \"activity that\nnever converted\"; read the underlying counts to tell those apart.\n","properties":{"value":{"type":"number","example":42,"uniqueKey":"data.items.[INDEX].stats.order_rate.value","typeLabel":"number"},"unit":{"type":"string","description":"`count`, `percent`, or a lowercased ISO 4217 currency code.","example":"count","uniqueKey":"data.items.[INDEX].stats.order_rate.unit","typeLabel":"string"}},"uniqueKey":"data.items.[INDEX].stats.order_rate","typeLabel":"object"},"average_order_value":{"type":"object","description":"A single report metric with its unit. `count` values are whole\nnumbers, `percent` values are 0–100 with one decimal. Money metrics\ncarry the account's lowercased ISO 4217 currency code as their unit\n(e.g. `usd`, `eur`, `jpy`) and are expressed in that currency's major\nunits, two decimals. A rate whose denominator was zero reports 0, not\nnull — so 0 does not distinguish \"no activity\" from \"activity that\nnever converted\"; read the underlying counts to tell those apart.\n","properties":{"value":{"type":"number","example":42,"uniqueKey":"data.items.[INDEX].stats.average_order_value.value","typeLabel":"number"},"unit":{"type":"string","description":"`count`, `percent`, or a lowercased ISO 4217 currency code.","example":"count","uniqueKey":"data.items.[INDEX].stats.average_order_value.unit","typeLabel":"string"}},"uniqueKey":"data.items.[INDEX].stats.average_order_value","typeLabel":"object"},"unsubscribed":{"type":"object","description":"A single report metric with its unit. `count` values are whole\nnumbers, `percent` values are 0–100 with one decimal. Money metrics\ncarry the account's lowercased ISO 4217 currency code as their unit\n(e.g. `usd`, `eur`, `jpy`) and are expressed in that currency's major\nunits, two decimals. A rate whose denominator was zero reports 0, not\nnull — so 0 does not distinguish \"no activity\" from \"activity that\nnever converted\"; read the underlying counts to tell those apart.\n","properties":{"value":{"type":"number","example":42,"uniqueKey":"data.items.[INDEX].stats.unsubscribed.value","typeLabel":"number"},"unit":{"type":"string","description":"`count`, `percent`, or a lowercased ISO 4217 currency code.","example":"count","uniqueKey":"data.items.[INDEX].stats.unsubscribed.unit","typeLabel":"string"}},"uniqueKey":"data.items.[INDEX].stats.unsubscribed","typeLabel":"object"},"bounced":{"type":"object","description":"A single report metric with its unit. `count` values are whole\nnumbers, `percent` values are 0–100 with one decimal. Money metrics\ncarry the account's lowercased ISO 4217 currency code as their unit\n(e.g. `usd`, `eur`, `jpy`) and are expressed in that currency's major\nunits, two decimals. A rate whose denominator was zero reports 0, not\nnull — so 0 does not distinguish \"no activity\" from \"activity that\nnever converted\"; read the underlying counts to tell those apart.\n","properties":{"value":{"type":"number","example":42,"uniqueKey":"data.items.[INDEX].stats.bounced.value","typeLabel":"number"},"unit":{"type":"string","description":"`count`, `percent`, or a lowercased ISO 4217 currency code.","example":"count","uniqueKey":"data.items.[INDEX].stats.bounced.unit","typeLabel":"string"}},"uniqueKey":"data.items.[INDEX].stats.bounced","typeLabel":"object"},"sms_opted_out":{"type":"object","description":"A single report metric with its unit. `count` values are whole\nnumbers, `percent` values are 0–100 with one decimal. Money metrics\ncarry the account's lowercased ISO 4217 currency code as their unit\n(e.g. `usd`, `eur`, `jpy`) and are expressed in that currency's major\nunits, two decimals. A rate whose denominator was zero reports 0, not\nnull — so 0 does not distinguish \"no activity\" from \"activity that\nnever converted\"; read the underlying counts to tell those apart.\n","properties":{"value":{"type":"number","example":42,"uniqueKey":"data.items.[INDEX].stats.sms_opted_out.value","typeLabel":"number"},"unit":{"type":"string","description":"`count`, `percent`, or a lowercased ISO 4217 currency code.","example":"count","uniqueKey":"data.items.[INDEX].stats.sms_opted_out.unit","typeLabel":"string"}},"uniqueKey":"data.items.[INDEX].stats.sms_opted_out","typeLabel":"object"},"sms_failed":{"type":"object","description":"A single report metric with its unit. `count` values are whole\nnumbers, `percent` values are 0–100 with one decimal. Money metrics\ncarry the account's lowercased ISO 4217 currency code as their unit\n(e.g. `usd`, `eur`, `jpy`) and are expressed in that currency's major\nunits, two decimals. A rate whose denominator was zero reports 0, not\nnull — so 0 does not distinguish \"no activity\" from \"activity that\nnever converted\"; read the underlying counts to tell those apart.\n","properties":{"value":{"type":"number","example":42,"uniqueKey":"data.items.[INDEX].stats.sms_failed.value","typeLabel":"number"},"unit":{"type":"string","description":"`count`, `percent`, or a lowercased ISO 4217 currency code.","example":"count","uniqueKey":"data.items.[INDEX].stats.sms_failed.unit","typeLabel":"string"}},"uniqueKey":"data.items.[INDEX].stats.sms_failed","typeLabel":"object"}},"uniqueKey":"data.items.[INDEX].stats","typeLabel":"object"}},"uniqueKey":"data.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data","typeLabel":"object[]"},"period":{"type":"object","description":"The resolved date range the report covers, inclusive, in the account's\ntime zone. Every label except `last_month` ends today, so the last day\nof the range is still in progress: `last_7_days` is the six days before\ntoday plus today, `this_month` runs from the 1st through today, and\n`last_month` is the whole previous calendar month. Custom ranges cannot\nexceed 366 days.\n","properties":{"label":{"type":"string","enum":["last_7_days","last_30_days","last_90_days","this_month","last_month","custom"],"example":"last_30_days","uniqueKey":"period.label","typeLabel":"enum\u003cstring>"},"start_date":{"type":"string","format":"date","example":"2026-06-21","uniqueKey":"period.start_date","typeLabel":"string\u003cdate>"},"end_date":{"type":"string","format":"date","example":"2026-07-20","uniqueKey":"period.end_date","typeLabel":"string\u003cdate>"}},"uniqueKey":"period","typeLabel":"object"},"pagination":{"type":"object","properties":{"page":{"type":"integer","example":1,"uniqueKey":"pagination.page","typeLabel":"integer"},"per_page":{"type":"integer","example":25,"uniqueKey":"pagination.per_page","typeLabel":"integer"},"total_count":{"type":"integer","example":142,"uniqueKey":"pagination.total_count","typeLabel":"integer"},"total_pages":{"type":"integer","example":6,"uniqueKey":"pagination.total_pages","typeLabel":"integer"}},"uniqueKey":"pagination","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"data":[{"flow_id":"Vq7L3mN9xR","title":"Abandoned Cart Recovery","status":"active","trigger_type":"cart_abandoned","channels":"multi","current_enrollment":{"value":86,"unit":"count"},"stats":{"sent":{"value":5200,"unit":"count"},"delivered":{"value":5050,"unit":"count"},"opened":{"value":2210,"unit":"count"},"clicked":{"value":640,"unit":"count"},"open_rate":{"value":51.4,"unit":"percent"},"click_rate":{"value":12.7,"unit":"percent"},"attributed_orders":{"value":210,"unit":"count"},"attributed_revenue":{"value":9640.5,"unit":"usd"},"order_rate":{"value":4.2,"unit":"percent"},"average_order_value":{"value":45.91,"unit":"usd"},"unsubscribed":{"value":34,"unit":"count"},"bounced":{"value":61,"unit":"count"},"sms_opted_out":{"value":12,"unit":"count"},"sms_failed":{"value":9,"unit":"count"}}}],"period":{"label":"last_30_days","start_date":"2026-06-21","end_date":"2026-07-20"},"pagination":{"page":1,"per_page":10,"total_count":4,"total_pages":1}},"examples":{"Example":{"title":"Example","value":{"data":[{"flow_id":"Vq7L3mN9xR","title":"Abandoned Cart Recovery","status":"active","trigger_type":"cart_abandoned","channels":"multi","current_enrollment":{"value":86,"unit":"count"},"stats":{"sent":{"value":5200,"unit":"count"},"delivered":{"value":5050,"unit":"count"},"opened":{"value":2210,"unit":"count"},"clicked":{"value":640,"unit":"count"},"open_rate":{"value":51.4,"unit":"percent"},"click_rate":{"value":12.7,"unit":"percent"},"attributed_orders":{"value":210,"unit":"count"},"attributed_revenue":{"value":9640.5,"unit":"usd"},"order_rate":{"value":4.2,"unit":"percent"},"average_order_value":{"value":45.91,"unit":"usd"},"unsubscribed":{"value":34,"unit":"count"},"bounced":{"value":61,"unit":"count"},"sms_opted_out":{"value":12,"unit":"count"},"sms_failed":{"value":9,"unit":"count"}}}],"period":{"label":"last_30_days","start_date":"2026-06-21","end_date":"2026-07-20"},"pagination":{"page":1,"per_page":10,"total_count":4,"total_pages":1}}}},"exampleType":"examples"}},"exampleType":"examples"},"8af677e2-de17-445a-8a75-4ef87e3a71bd":{"description":"Missing or invalid bearer token.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["invalid_client","invalid_scope","unauthorized","insufficient_scope","forbidden","paid_plan_required","api_access_required","segment_builder_required","not_found","no_connected_store","conflict","contacts_not_ready","validation_failed","idempotency_key_reused","rate_limited","store_unavailable","store_rate_limited","not_a_draft","design_changed","sms_missing","email_missing","ab_test_draft","idempotency_key_reused","template_unavailable","design_unavailable","render_failed"],"example":"validation_failed","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","example":"One or more fields are invalid","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","example":"email","uniqueKey":"error.details.items.[INDEX].field","typeLabel":"string"},"message":{"type":"string","example":"is required","uniqueKey":"error.details.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"error.details.items.[INDEX]","typeLabel":"object"},"uniqueKey":"error.details","typeLabel":"object[]"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"unauthorized","message":"Bearer token is missing or invalid"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"unauthorized","message":"Bearer token is missing or invalid"}}}},"exampleType":"examples"}},"exampleType":"examples"},"d58942ad-05ab-4d65-9965-5d20df1deeed":{"description":"`insufficient_scope` when the token lacks the required scope for this endpoint.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["invalid_client","invalid_scope","unauthorized","insufficient_scope","forbidden","paid_plan_required","api_access_required","segment_builder_required","not_found","no_connected_store","conflict","contacts_not_ready","validation_failed","idempotency_key_reused","rate_limited","store_unavailable","store_rate_limited","not_a_draft","design_changed","sms_missing","email_missing","ab_test_draft","idempotency_key_reused","template_unavailable","design_unavailable","render_failed"],"example":"validation_failed","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","example":"One or more fields are invalid","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","example":"email","uniqueKey":"error.details.items.[INDEX].field","typeLabel":"string"},"message":{"type":"string","example":"is required","uniqueKey":"error.details.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"error.details.items.[INDEX]","typeLabel":"object"},"uniqueKey":"error.details","typeLabel":"object[]"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"insufficient_scope","message":"Token does not have the required scope"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"insufficient_scope","message":"Token does not have the required scope"}}}},"exampleType":"examples"}},"exampleType":"examples"},"14bae5e4-4a24-4cb0-a392-0483463b4bd9":{"description":"One or more fields failed validation.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["invalid_client","invalid_scope","unauthorized","insufficient_scope","forbidden","paid_plan_required","api_access_required","segment_builder_required","not_found","no_connected_store","conflict","contacts_not_ready","validation_failed","idempotency_key_reused","rate_limited","store_unavailable","store_rate_limited","not_a_draft","design_changed","sms_missing","email_missing","ab_test_draft","idempotency_key_reused","template_unavailable","design_unavailable","render_failed"],"example":"validation_failed","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","example":"One or more fields are invalid","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","example":"email","uniqueKey":"error.details.items.[INDEX].field","typeLabel":"string"},"message":{"type":"string","example":"is required","uniqueKey":"error.details.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"error.details.items.[INDEX]","typeLabel":"object"},"uniqueKey":"error.details","typeLabel":"object[]"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"validation_failed","message":"One or more fields are invalid","details":[{"field":"email","message":"is required"}]}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"validation_failed","message":"One or more fields are invalid","details":[{"field":"email","message":"is required"}]}}}},"exampleType":"examples"}},"exampleType":"examples"},"b0e4ab9c-aedf-46fa-a1b2-d99d111c0610":{"description":"Rate limit exceeded. Retry after the specified time.","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"},"example":42},"X-RateLimit-Limit-Minute":{"description":"Maximum requests allowed per minute.","schema":{"type":"integer"},"example":60},"X-RateLimit-Remaining-Minute":{"description":"Requests remaining in the current minute window.","schema":{"type":"integer"},"example":0},"X-RateLimit-Reset-Minute":{"description":"Unix timestamp when the minute window resets.","schema":{"type":"integer"},"example":1711929600},"X-RateLimit-Limit-Day":{"description":"Maximum requests allowed per day.","schema":{"type":"integer"},"example":10000},"X-RateLimit-Remaining-Day":{"description":"Requests remaining in the current day window.","schema":{"type":"integer"},"example":9500},"X-RateLimit-Reset-Day":{"description":"Unix timestamp when the day window resets.","schema":{"type":"integer"},"example":1712016000}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["invalid_client","invalid_scope","unauthorized","insufficient_scope","forbidden","paid_plan_required","api_access_required","segment_builder_required","not_found","no_connected_store","conflict","contacts_not_ready","validation_failed","idempotency_key_reused","rate_limited","store_unavailable","store_rate_limited","not_a_draft","design_changed","sms_missing","email_missing","ab_test_draft","idempotency_key_reused","template_unavailable","design_unavailable","render_failed"],"example":"validation_failed","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","example":"One or more fields are invalid","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","example":"email","uniqueKey":"error.details.items.[INDEX].field","typeLabel":"string"},"message":{"type":"string","example":"is required","uniqueKey":"error.details.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"error.details.items.[INDEX]","typeLabel":"object"},"uniqueKey":"error.details","typeLabel":"object[]"}},"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"rate_limited","message":"Rate limit exceeded"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"rate_limited","message":"Rate limit exceeded"}}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"ba5ade5d-a386-45bc-aa31-09172a8490ab":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API token or OAuth access token","description":"Send either an API token or an OAuth access token as\n`Authorization: Bearer \u003ctoken>`. See the Authentication page for details.\n","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"97f63e03-f020-41b7-a5b9-e312bbfed47d":{"url":"https://api.privy.com/v1","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"API token or OAuth access token","description":"Send either an API token or an OAuth access token as\n`Authorization: Bearer \u003ctoken>`. See the Authentication page for details.\n","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Send either an API token or an OAuth access token as\n`Authorization: Bearer \u003ctoken>`. See the Authentication page for details.\n","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"openapi/privy-api.yaml"},"subdomain":"privy","siteName":"Privy Knowledge Base","title":"List flow performance - Privy Knowledge Base","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-22T23:08:30.077Z","originalFileLocation":"docs/api-reference/list-flow-performance.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Rank your flows by performance over a period — best performers first, remaining flows by recency. Each row combines email and SMS stats across the flow\u0026#x27;s message steps. Use /v1/reports/flows/{flow_id} for one flow\u0026#x27;s report including the per-node message breakdown. Every flow with the requested status is listed, quiet ones included — unlike the display and campaign leaderboards nothing is dropped for having no activity, so this doubles as a performance-annotated flow inventory. A flow\u0026#x27;s configuration is /v1/flows/{id}. Required scope: reports_read\">\u003cmeta data-mint-head name=\"application-name\" content=\"Privy Knowledge Base\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/privy/fvbglk3MPcKWjtyG/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/privy/fvbglk3MPcKWjtyG/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/privy/fvbglk3MPcKWjtyG/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/privy/fvbglk3MPcKWjtyG/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/privy/fvbglk3MPcKWjtyG/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/privy/fvbglk3MPcKWjtyG/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/privy/fvbglk3MPcKWjtyG/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/privy/fvbglk3MPcKWjtyG/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/privy/fvbglk3MPcKWjtyG/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"List flow performance - Privy Knowledge Base\">\u003cmeta data-mint-head property=\"og:description\" content=\"Rank your flows by performance over a period — best performers first, remaining flows by recency. Each row combines email and SMS stats across the flow\u0026#x27;s message steps. Use /v1/reports/flows/{flow_id} for one flow\u0026#x27;s report including the per-node message breakdown. Every flow with the requested status is listed, quiet ones included — unlike the display and campaign leaderboards nothing is dropped for having no activity, so this doubles as a performance-annotated flow inventory. A flow\u0026#x27;s configuration is /v1/flows/{id}. Required scope: reports_read\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Privy Knowledge Base\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://help.privy.com/docs/api-reference/list-flow-performance\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://privy.mintlify.site/_mintlify/api/og/v2?division=Reports\u0026amp;title=List+flow+performance\u0026amp;description=Rank+your+flows+by+performance+over+a+period+%E2%80%94+best+performers+first%2C%0Aremaining+flows+by+recency.+Each+row+combines+email+and+SMS+stats%0Aacross+the+flow%27s+messag\u0026amp;theme=a5dbdd3119e247d04186b21c\u0026amp;signature=80d83b34cb4be07c8aaa5fb5506662832d20de3df320a2560439a67ad30ccc41\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"List flow performance - Privy Knowledge Base\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Rank your flows by performance over a period — best performers first, remaining flows by recency. Each row combines email and SMS stats across the flow\u0026#x27;s message steps. Use /v1/reports/flows/{flow_id} for one flow\u0026#x27;s report including the per-node message breakdown. Every flow with the requested status is listed, quiet ones included — unlike the display and campaign leaderboards nothing is dropped for having no activity, so this doubles as a performance-annotated flow inventory. A flow\u0026#x27;s configuration is /v1/flows/{id}. Required scope: reports_read\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://privy.mintlify.site/_mintlify/api/og/v2?division=Reports\u0026amp;title=List+flow+performance\u0026amp;description=Rank+your+flows+by+performance+over+a+period+%E2%80%94+best+performers+first%2C%0Aremaining+flows+by+recency.+Each+row+combines+email+and+SMS+stats%0Aacross+the+flow%27s+messag\u0026amp;theme=a5dbdd3119e247d04186b21c\u0026amp;signature=80d83b34cb4be07c8aaa5fb5506662832d20de3df320a2560439a67ad30ccc41\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/privy/fvbglk3MPcKWjtyG/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Privy Knowledge Base\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#254E5A\">\u003clink data-mint-head rel=\"canonical\" href=\"https://help.privy.com/docs/api-reference/list-flow-performance\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/api-reference/list-flow-performance.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://help.privy.com/#organization\",\"name\":\"Privy Knowledge Base\",\"url\":\"https://help.privy.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/privy/fGrkZt933tBjY_zl/logo/light.svg?fit=max\u0026auto=format\u0026n=fGrkZt933tBjY_zl\u0026q=85\u0026s=36a01db426b7c94fac423778765cd517\"}},{\"@type\":\"WebSite\",\"@id\":\"https://help.privy.com#website\",\"name\":\"Privy Knowledge Base\",\"url\":\"https://help.privy.com\",\"publisher\":{\"@id\":\"https://help.privy.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://help.privy.com/docs/api-reference/list-flow-performance#webpage\",\"url\":\"https://help.privy.com/docs/api-reference/list-flow-performance\",\"name\":\"List flow performance\",\"description\":\"Rank your flows by performance over a period — best performers first, remaining flows by recency. Each row combines email and SMS stats across the flow's message steps. Use /v1/reports/flows/{flow_id} for one flow's report including the per-node message breakdown. Every flow with the requested status is listed, quiet ones included — unlike the display and campaign leaderboards nothing is dropped for having no activity, so this doubles as a performance-annotated flow inventory. A flow's configuration is /v1/flows/{id}. Required scope: reports_read\",\"dateModified\":\"2026-10-22T23:08:30.077Z\",\"isPartOf\":{\"@id\":\"https://help.privy.com#website\"},\"breadcrumb\":{\"@id\":\"https://help.privy.com/docs/api-reference/list-flow-performance#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://help.privy.com/docs/api-reference/list-flow-performance#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Reports\",\"item\":\"https://help.privy.com/docs/api-reference/get-report-summary\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"List flow performance\",\"item\":\"https://help.privy.com/docs/api-reference/list-flow-performance\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://help.privy.com/docs/api-reference/list-flow-performance#apireference\",\"headline\":\"List flow performance\",\"name\":\"List flow performance\",\"description\":\"Rank your flows by performance over a period — best performers first, remaining flows by recency. Each row combines email and SMS stats across the flow's message steps. Use /v1/reports/flows/{flow_id} for one flow's report including the per-node message breakdown. Every flow with the requested status is listed, quiet ones included — unlike the display and campaign leaderboards nothing is dropped for having no activity, so this doubles as a performance-annotated flow inventory. A flow's configuration is /v1/flows/{id}. Required scope: reports_read\",\"url\":\"https://help.privy.com/docs/api-reference/list-flow-performance\",\"mainEntityOfPage\":{\"@id\":\"https://help.privy.com/docs/api-reference/list-flow-performance#webpage\"},\"dateModified\":\"2026-10-22T23:08:30.077Z\",\"publisher\":{\"@id\":\"https://help.privy.com/#organization\"},\"isPartOf\":{\"@id\":\"https://help.privy.com#website\"}}]}\u003c/script>","agentPointerHref":"/docs/api-reference/list-flow-performance.md","siteName":"Privy Knowledge Base","nav":{"global":null,"tabs":[{"tab":"Learn","icon":"house","pages":[{"title":"Learn","href":"/docs/learn/home"}]},{"tab":"Developer","icon":"square-terminal","groups":[{"group":"API Reference","pages":[{"title":"API Overview","sidebarTitle":"Overview","icon":"book-open","href":"/docs/api-reference/overview"},{"title":"Authentication","sidebarTitle":"Authentication","icon":"lock","href":"/docs/api-reference/authentication"},{"title":"API Tokens","sidebarTitle":"API Tokens","icon":"key","href":"/docs/api-reference/api-tokens"},{"title":"Rate Limits","sidebarTitle":"Rate Limits","icon":"gauge","href":"/docs/api-reference/rate-limits"},{"title":"Errors","sidebarTitle":"Errors","icon":"triangle-exclamation","href":"/docs/api-reference/errors"},{"title":"API Changelog","sidebarTitle":"Changelog","icon":"clock-rotate-left","href":"/docs/api-reference/changelog"}]},{"group":"Account","pages":[{"title":"Get account","openapi":"openapi/privy-api.yaml GET /account","href":"/docs/api-reference/get-account"},{"title":"Get account setup","openapi":"openapi/privy-api.yaml GET /account/setup","href":"/docs/api-reference/get-account-setup"}]},{"group":"Contacts","pages":[{"title":"List contacts","openapi":"openapi/privy-api.yaml GET /contacts","href":"/docs/api-reference/list-contacts"},{"title":"Get a contact","openapi":"openapi/privy-api.yaml GET /contacts/{id}","href":"/docs/api-reference/get-contact"},{"title":"Create a contact","openapi":"openapi/privy-api.yaml POST /contacts","href":"/docs/api-reference/create-contact"},{"title":"Update a contact","openapi":"openapi/privy-api.yaml PATCH /contacts/{id}","href":"/docs/api-reference/update-contact"},{"title":"Delete a contact","openapi":"openapi/privy-api.yaml DELETE /contacts/{id}","href":"/docs/api-reference/delete-contact"},{"title":"List a contact's activity","openapi":"openapi/privy-api.yaml GET /contacts/{id}/events","href":"/docs/api-reference/list-contact-activity"}]},{"group":"Imports","pages":[{"title":"List contact imports","openapi":"openapi/privy-api.yaml GET /imports","href":"/docs/api-reference/list-imports"},{"title":"Get a contact import","openapi":"openapi/privy-api.yaml GET /imports/{id}","href":"/docs/api-reference/get-import"}]},{"group":"Tags","pages":[{"title":"List tags","openapi":"openapi/privy-api.yaml GET /tags","href":"/docs/api-reference/list-tags"},{"title":"Get a tag","openapi":"openapi/privy-api.yaml GET /tags/{id}","href":"/docs/api-reference/get-tag"}]},{"group":"Campaigns","pages":[{"title":"List campaigns","openapi":"openapi/privy-api.yaml GET /campaigns","href":"/docs/api-reference/list-campaigns"},{"title":"Get a campaign","openapi":"openapi/privy-api.yaml GET /campaigns/{id}","href":"/docs/api-reference/get-campaign"}]},{"group":"Displays","pages":[{"title":"List displays","openapi":"openapi/privy-api.yaml GET /displays","href":"/docs/api-reference/list-displays"},{"title":"Get a display","openapi":"openapi/privy-api.yaml GET /displays/{id}","href":"/docs/api-reference/get-display"}]},{"group":"Coupons","pages":[{"title":"List coupons","openapi":"openapi/privy-api.yaml GET /coupons","href":"/docs/api-reference/list-coupons"},{"title":"Get a coupon","openapi":"openapi/privy-api.yaml GET /coupons/{id}","href":"/docs/api-reference/get-coupon"},{"title":"Check a coupon code","openapi":"openapi/privy-api.yaml GET /coupons/{id}/codes/{code}","href":"/docs/api-reference/check-coupon-code"}]},{"group":"Reports","pages":[{"title":"Get business report summary","openapi":"openapi/privy-api.yaml GET /reports/summary","href":"/docs/api-reference/get-report-summary"},{"title":"List campaign performance","openapi":"openapi/privy-api.yaml GET /reports/campaigns","href":"/docs/api-reference/list-campaign-performance"},{"title":"Get campaign performance","openapi":"openapi/privy-api.yaml GET /reports/campaigns/{campaign_id}","description":"One message campaign's engagement funnel — sends, deliveries, opens,\nclicks, attribution, and the derived rates — plus its most-clicked\nlinks. Resolves newsletters and flow campaigns alike (flow campaigns\ncarry no `sent_date`, and instead name the flow that sends them in\n`flow`). SMS campaigns return the SMS stat set (`opted_out`,\n`failed`) and no links.\n\nWithout period parameters the funnel covers the campaign's **whole\nlife**. Pass `period` (or `period=custom` with `start_date`/`end_date`)\nto scope it to a reporting window — the same window vocabulary as\nevery other report read, so its numbers line up with\n`/v1/reports/campaigns` rows for the same period. The response echoes\nthe window in `period`; `null` means lifetime. `top_links` is always\nlifetime — link clicks are not stored by day.\n\nThe campaign's configuration is `/v1/campaigns/{id}`.\n\n**Required scope:** `reports_read`\n","href":"/docs/api-reference/get-campaign-performance"},{"title":"List flow performance","openapi":"openapi/privy-api.yaml GET /reports/flows","href":"/docs/api-reference/list-flow-performance"},{"title":"Get flow performance","openapi":"openapi/privy-api.yaml GET /reports/flows/{flow_id}","description":"One flow's performance over a period: the combined email + SMS stat\nset plus a per-node breakdown of each email and SMS message step.\n\nConfiguration — trigger, filters, re-entry behavior, branch graph — is\n`/v1/flows/{id}`. The per-node `uuid`s match that response's node `uuid`s,\nwhich is how a message step is placed in the flow graph; a step the flow\nno longer contains has no counterpart there.\n\n**Required scope:** `reports_read`\n","href":"/docs/api-reference/get-flow-performance"},{"title":"List display performance","openapi":"openapi/privy-api.yaml GET /reports/displays","href":"/docs/api-reference/list-display-performance"},{"title":"Get display performance","openapi":"openapi/privy-api.yaml GET /reports/displays/{display_id}","href":"/docs/api-reference/get-display-performance"},{"title":"List top products","openapi":"openapi/privy-api.yaml GET /reports/top_products","href":"/docs/api-reference/list-top-products"}]},{"group":"Flows","pages":[{"title":"List flows","openapi":"openapi/privy-api.yaml GET /flows","href":"/docs/api-reference/list-flows"},{"title":"Get a flow","openapi":"openapi/privy-api.yaml GET /flows/{id}","href":"/docs/api-reference/get-flow"}]},{"group":"Segments","pages":[{"title":"List segments","openapi":"openapi/privy-api.yaml GET /segments","href":"/docs/api-reference/list-segments"},{"title":"Get a segment","openapi":"openapi/privy-api.yaml GET /segments/{id}","href":"/docs/api-reference/get-segment"},{"title":"List a segment's contacts","openapi":"openapi/privy-api.yaml GET /segments/{id}/contacts","href":"/docs/api-reference/list-segment-contacts"}]},{"group":"Orders","pages":[{"title":"Order placed","openapi":"openapi/privy-api.yaml POST /orders/placed","href":"/docs/api-reference/order-placed"},{"title":"List orders","openapi":"openapi/privy-api.yaml GET /orders","href":"/docs/api-reference/list-orders"},{"title":"Get an order","openapi":"openapi/privy-api.yaml GET /orders/{order_id}","href":"/docs/api-reference/get-order"}]},{"group":"Products","pages":[{"title":"List products","openapi":"openapi/privy-api.yaml GET /products","href":"/docs/api-reference/list-products"},{"title":"Get a product","openapi":"openapi/privy-api.yaml GET /products/{id}","href":"/docs/api-reference/get-product"},{"title":"List product collections","openapi":"openapi/privy-api.yaml GET /product_collections","href":"/docs/api-reference/list-product-collections"},{"title":"Get a product collection","openapi":"openapi/privy-api.yaml GET /product_collections/{id}","href":"/docs/api-reference/get-product-collection"},{"title":"List a collection's products","openapi":"openapi/privy-api.yaml GET /product_collections/{id}/products","href":"/docs/api-reference/list-collection-products"},{"title":"List a product's collections","openapi":"openapi/privy-api.yaml GET /products/{id}/collections","href":"/docs/api-reference/list-collections-for-product"}]},{"group":"Events","pages":[{"title":"Ingest an event","openapi":"openapi/privy-api.yaml POST /events","href":"/docs/api-reference/ingest-event"},{"title":"Send cart events from your storefront","sidebarTitle":"Browser events","href":"/docs/api-reference/browser-events"}]}]}]},"basePath":"","title":"List flow performance - Privy Knowledge Base","buildId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","deploymentId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CybtLBIt.js","utils-BMLj2fvV.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-B6In562Y.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Dr8Mfhp9.js","snippetPresets-2rmQvMVl.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-WMqJYdZj.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CJ-MlPHu.js","shallow-dY3TMRCk.js","getApiPlaygroundDisplay-v-1B2bKm.js","CodeSnippet-BDhiTB7U.js","CodeSnippets-D9hnzQcS.js","Page-C4GwDT3_.js","getPastedJson-Th2V45jI.js","icon-BQXch1W9.js","MethodPill-BCqUneP3.js","DuplicateIcon-Q_-bhurZ.js","createIcon-DUjLHRqp.js","DynamicMarkdown-B-f2cqXQ.js","SectionHeading-Da5NsV4v.js","axios-vUo_bRtp.js","Markdown-D13FWkIM.js","clsx-D3Isdib3.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-C-XZBk9h.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink--qIqmmVG.js"]}