Compares completion for engaged real-user flows affected by the selected error flavours with
all engaged real-user flows of the same types and date range. The baseline includes affected flows.
Engagement requires a subflow or resolved decision in the flow or a nested flow, matching the time-series
engagement=engaged filter. Results show correlation, not causation; flows may carry other errors.
Each group includes up to flowLimit flows, newest first (default 5,000; maximum 50,000).
When capped, sampled: true means all reported metrics use that sample. analyzedFlowLimit
reports the applied cap; flowListID identifies the exact analyzed flows.
The baseline completionRate weights rates by the affected group’s osName/browserName mix.
rawCompletionRate reports the unweighted baseline rate.
Outcomes skipped, invisible and visible-auto-skip count as other and are excluded from
completion rates. Occurrences without flows are reported as orphans and excluded from rates.
baseline is absent when no comparable engaged flows exist.
Use naive UTC datetimes (YYYY-MM-DDTHH:mm:ss) for the half-open interval [fromDate, toDate),
with a maximum range of 30 days.
Required API key permission: observe:errorFlavours:read.
Use an Observe API key from the management console. The key selects the project and must grant the permission listed on the operation. Keep this key on your server.
Maximum number of flows to analyze PER GROUP (affected and baseline). Both groups are read as raw flow rows, so this is what bounds the analysis; a group that hits the limit is marked sampled and describes the most recent flowLimit flows of that group. Defaults to 5000. High values buy completeness (fewer sampled groups, so per-user tallies see a user's whole history in range) at the cost of a slower analysis.
Optional stored ID list (format idl-<number>, from POST /observe/idLists or a previous analysis) to
use verbatim as the baseline group instead of building one. The listed flows are read as raw rows
(capped at flowLimit, most recent first) and compared against the affected group with the usual
device-mix standardization; matching is ignored when this is set.
Baseline modeling configuration. When present, the baseline is not "all engaged flows of the affected flow types" but a stratified sample matched to the affected group on the requested dimensions — controlling for WHERE in the flow the error happened (pathPrefix) and for the population mix, so the completion comparison isolates the error instead of the route that leads to it. The response's matchingReport describes the strata, the achieved balance, and every fallback taken.
The curated error whose impact is being analyzed (format err-<number>). When set, the flavourIDs must
be exactly the error's current member flavours, and the analysis result is stored on the error as its
last-known impact (served as lastImpact in the errors list). Omit for ad-hoc flavour analyses, which
are never stored.
The finding whose impact is being analyzed (format fnd-<number>). When set, the flavourIDs must be
exactly the flavours of the finding's errors (its own errors plus the errors its scope references),
and the result is stored on the finding as its last-known impact (requires observe:findings:write).
Not allowed together with errorID.
Restricts the affected group to these flows. With findingID and neither population nor comparison set,
the finding's first segment is used (unless ignoreFindingSegment).
Restricts the baseline to these flows (still without the analyzed flavours). Defaults to population,
i.e. the same group without the errors; with findingID the segment's stored comparison is used.
Analyze only affected flows of these flow types; the baseline follows, as it is drawn from the affected
flows' types. With findingID and no flowTypes, the finding's scope.flowTypes are used.
A group of flows defined by environment values: flows matching every value in dimensions and not
matching all values in exclude. Keys are os, browser, applicationId (format app-<number>) or a
custom tag key such as country; other keys (e.g. vendor) cannot be filtered and are reported as
ignored. An empty dimensions object means all flows.
A group of flows defined by environment values: flows matching every value in dimensions and not
matching all values in exclude. Keys are os, browser, applicationId (format app-<number>) or a
custom tag key such as country; other keys (e.g. vendor) cannot be filtered and are reported as
ignored. An empty dimensions object means all flows.
True when the project's default saved filter does not reduce to a set of visitor types (its visitor
type condition depends on other dimensions, e.g. any of a visitor type and an OS condition): the
analysis counted every visitor type. Absent otherwise; the analysis reads flows and applies only the
visitor type part of the default saved filter.
affected.completionRate minus baseline.completionRate (percentage points as a fraction, negative = affected flows complete less). Absent when either side has no completion rate.
Distinct users among affected flows (flows without a user reference contribute none), counted over the whole affected group also when the analysis was sampled. Absent when no flows are affected.
Distinct users who hit the analyzed flavours MORE THAN ONCE in range, i.e. at least two occurrences — whether spread over several flows or fired twice within one flow. Subset of affectedUserCount; flows without a user reference contribute none. Absent when no flows are affected. Computed over the analyzed flows, so on a sampled affected group it is a lower bound (a user's earlier flows may fall outside the sample).
Handle of a stored ID list (format idl-<number>) holding the affected flows of the repeat users, for
opening exactly those high-impact users in user search. Empty when no user hit the flavours more than
once.
The distribution behind repeatUserCount: the affected users grouped into occurrence bands (1, 2, 3-4, 5-9, 10+), ascending, empty bands omitted. Every band above the first is made of repeat users, so their user counts sum to repeatUserCount and all bands together to affectedUserCount. Same sampling caveat as repeatUserCount — on a sampled affected group users shift toward the lower bands.
Incomplete affected flows whose last occurrence of the analyzed flavours fell within 10 seconds of the flow's end - the error was (close to) the last thing that happened. Absent when no flows are affected.
The per-group flow cap the analysis ran with (the request's flowLimit, or the default). Together with each group's sampled flag it tells a caller whether raising the limit would change the numbers.
All affected flows in the range. Equals the affected group's flowCount unless that group is sampled; then it is the uncapped count, for scaling sample-based totals.
How the baseline group was modeled and how well it mirrors the affected group. Present when the request asked for matching or supplied baselineFlowListID; absent on a plain (unmatched) analysis.
The completion comparison split per flow type of the affected group, biggest affected slice first. The group-level completionLift is a weighted mean over these; when the per-type lifts diverge (different sign, or a large spread), the blended number hides differently-hurt flow types and a caller should present this cut instead. Empty when no flows are affected.
How the ERRORING SUBFLOW itself ended on both sides — did this step succeed, as opposed to completionLift's did the whole flow succeed (possibly via a fallback). The affected side measures the segment the analyzed flavours fired on (falling back to the flow's first segment of the subflow's code when embedding does not locate it); the baseline side the first segment of the same code, so flows that never attempted the subflow are excluded. Flow-type-agnostic by construction: a passkey-login attempt is the same unit in a login and in a signup flow, so this comparison stays clean when the affected group mixes flow types. Absent when the analyzed flavours span several subflow types or none resolves to a known code.
Show child attributes
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Corbado docs","colors":{"primary":"#184aff","light":"#629eff","dark":"#184aff"},"logo":{"light":"https://mintcdn.com/corbado-43/uh5IdxgOHQMtEt9x/logo/corbado-logo-light.svg?fit=max\u0026auto=format\u0026n=uh5IdxgOHQMtEt9x\u0026q=85\u0026s=decbc139fa76d9eeee8dcfbe91ed2094","dark":"https://mintcdn.com/corbado-43/uh5IdxgOHQMtEt9x/logo/corbado-logo-dark.svg?fit=max\u0026auto=format\u0026n=uh5IdxgOHQMtEt9x\u0026q=85\u0026s=398183bb6eb303cda3062b080363672b"},"favicon":"https://mintcdn.com/corbado-43/uh5IdxgOHQMtEt9x/logo/favicon.svg?fit=max\u0026auto=format\u0026n=uh5IdxgOHQMtEt9x\u0026q=85\u0026s=7e718008fe38fabeacb4a3d75472a491","navbar":{"links":[{"href":"mailto:support@corbado.com","label":"Support"}],"primary":{"type":"button","label":"Start for free","href":"https://app.corbado.com/"}},"footer":{"socials":{"twitter":"https://twitter.com/corbadotech","linkedin":"https://www.linkedin.com/company/corbado"}},"integrations":{"hotjar":{"hjid":"3375029","hjsv":"6"},"koala":{"publicApiKey":"pk_ca0e031974819fc6f69a82b884ff6f1cb661"}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Community","icon":"slack","href":"https://bit.ly/passkeys-community"},{"anchor":"GitHub","icon":"github","href":"https://github.com/corbado"},{"anchor":"Blog","icon":"newspaper","href":"https://www.corbado.com/blog"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"corbado-43","hasAudioNarration":false,"actualSubdomain":"corbado-43","customDomains":["docs.corbado.com"],"gitSource":{"type":"github","owner":"corbadotech","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aec3e1525c041b786079735","collectionId":"dfcf9d0e-3ac9-4252-a39b-21a2d577fca8","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aec3e1525c041b786079735"},"feedback":{"thumbs":true,"edits":false,"issues":false},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6aedee1cde69105c4467d729","clientVersion":"0.0.4074","searchFilterCounts":[{"language":"default","tag":"API Reference","count":184},{"language":"default","tag":"Corbado Connect","count":155},{"language":"default","tag":"Corbado Observe","count":137},{"language":"default","tag":"API endpoints","count":91},{"language":"default","tag":"Backend API","count":69},{"language":"default","tag":"Passkey UI Flows","count":32},{"language":"default","tag":"Alert management","count":23},{"language":"default","tag":"Overview","count":17},{"language":"default","tag":"Web","count":16},{"language":"default","tag":"Analytics and configuration","count":16}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","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":"vite-origin","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":"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},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"html{scroll-behavior:smooth!important}.pk-accent{fill:#184aff}.dark .pk-accent{fill:#629eff}.pk-accent-text{fill:#184aff}.dark .pk-accent-text{fill:#629eff}.pk-node{cursor:pointer;transition:opacity 0.15s ease}.pk-node:hover{opacity:0.72}.observe-visual-light,.observe-visual-dark,.connect-visual-light,.connect-visual-dark{width:100%;height:auto}.observe-visual-light,.connect-visual-light{display:block}.observe-visual-dark,.connect-visual-dark{display:none}.dark .observe-visual-light,.dark .connect-visual-light{display:none}.dark .observe-visual-dark,.dark .connect-visual-dark{display:block}"}],"page":{"pagePath":"api-reference/observe/error-impact","slug":"/api-reference/observe/error-impact","pageMetadata":{"title":"Analyze the flow impact of error flavours","description":"Compares completion for engaged real-user flows affected by the selected error flavours with\nall engaged real-user flows of the same types and date range. The baseline includes affected flows.\nEngagement requires a subflow or resolved decision in the flow or a nested flow, matching the time-series\n`engagement=engaged` filter. Results show correlation, not causation; flows may carry other errors.\n\nEach group includes up to `flowLimit` flows, newest first (default 5,000; maximum 50,000).\nWhen capped, `sampled: true` means all reported metrics use that sample. `analyzedFlowLimit`\nreports the applied cap; `flowListID` identifies the exact analyzed flows.\n\nThe baseline `completionRate` weights rates by the affected group's `osName`/`browserName` mix.\n`rawCompletionRate` reports the unweighted baseline rate.\n\nOutcomes `skipped`, `invisible` and `visible-auto-skip` count as `other` and are excluded from\ncompletion rates. Occurrences without flows are reported as orphans and excluded from rates.\n`baseline` is absent when no comparable engaged flows exist.\n\nUse naive UTC datetimes (`YYYY-MM-DDTHH:mm:ss`) for the half-open interval [fromDate, toDate),\nwith a maximum range of 30 days.\n\nRequired API key permission: `observe:errorFlavours:read`.","deprecated":null,"version":null,"sidebarTitle":"Error impact","openapi":"/api-reference/openapi/observe.yaml post /observe/errorFlavours/impact","href":"/api-reference/observe/error-impact","autogeneratedByOpenApi":true},"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 ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Compares completion for engaged real-user flows affected by the selected error flavours with\\nall engaged real-user flows of the same types and date range. The baseline includes affected flows.\\nEngagement requires a subflow or resolved decision in the flow or a nested flow, matching the time-series\\n\", _jsx(_components.code, {\n children: \"engagement=engaged\"\n }), \" filter. Results show correlation, not causation; flows may carry other errors.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Each group includes up to \", _jsx(_components.code, {\n children: \"flowLimit\"\n }), \" flows, newest first (default 5,000; maximum 50,000).\\nWhen capped, \", _jsx(_components.code, {\n children: \"sampled: true\"\n }), \" means all reported metrics use that sample. \", _jsx(_components.code, {\n children: \"analyzedFlowLimit\"\n }), \"\\nreports the applied cap; \", _jsx(_components.code, {\n children: \"flowListID\"\n }), \" identifies the exact analyzed flows.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The baseline \", _jsx(_components.code, {\n children: \"completionRate\"\n }), \" weights rates by the affected group’s \", _jsx(_components.code, {\n children: \"osName\"\n }), \"/\", _jsx(_components.code, {\n children: \"browserName\"\n }), \" mix.\\n\", _jsx(_components.code, {\n children: \"rawCompletionRate\"\n }), \" reports the unweighted baseline rate.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Outcomes \", _jsx(_components.code, {\n children: \"skipped\"\n }), \", \", _jsx(_components.code, {\n children: \"invisible\"\n }), \" and \", _jsx(_components.code, {\n children: \"visible-auto-skip\"\n }), \" count as \", _jsx(_components.code, {\n children: \"other\"\n }), \" and are excluded from\\ncompletion rates. Occurrences without flows are reported as orphans and excluded from rates.\\n\", _jsx(_components.code, {\n children: \"baseline\"\n }), \" is absent when no comparable engaged flows exist.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Use naive UTC datetimes (\", _jsx(_components.code, {\n children: \"YYYY-MM-DDTHH:mm:ss\"\n }), \") for the half-open interval [fromDate, toDate),\\nwith a maximum range of 30 days.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Required API key permission: \", _jsx(_components.code, {\n children: \"observe:errorFlavours: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":"Analyze the flow impact of error flavours","description":"Compares completion for engaged real-user flows affected by the selected error flavours with\nall engaged real-user flows of the same types and date range. The baseline includes affected flows.\nEngagement requires a subflow or resolved decision in the flow or a nested flow, matching the time-series\n`engagement=engaged` filter. Results show correlation, not causation; flows may carry other errors.\n\nEach group includes up to `flowLimit` flows, newest first (default 5,000; maximum 50,000).\nWhen capped, `sampled: true` means all reported metrics use that sample. `analyzedFlowLimit`\nreports the applied cap; `flowListID` identifies the exact analyzed flows.\n\nThe baseline `completionRate` weights rates by the affected group's `osName`/`browserName` mix.\n`rawCompletionRate` reports the unweighted baseline rate.\n\nOutcomes `skipped`, `invisible` and `visible-auto-skip` count as `other` and are excluded from\ncompletion rates. Occurrences without flows are reported as orphans and excluded from rates.\n`baseline` is absent when no comparable engaged flows exist.\n\nUse naive UTC datetimes (`YYYY-MM-DDTHH:mm:ss`) for the half-open interval [fromDate, toDate),\nwith a maximum range of 30 days.\n\nRequired API key permission: `observe:errorFlavours:read`.","deprecated":null,"version":null,"sidebarTitle":"Error impact","openapi":"/api-reference/openapi/observe.yaml post /observe/errorFlavours/impact","href":"/api-reference/observe/error-impact","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/corbado-43/07f8b5952369ac3b/content/matomo.js","/_mintlify/custom/corbado-43/3de72dcbd84a772a/content/linkedin-insight-tag.js","/_mintlify/custom/corbado-43/674dd5320b6b99a7/content/commonroom.js"],"openApiReferenceData":{"operation":{"x-mint":{"href":"/api-reference/observe/error-impact"},"summary":"Analyze the flow impact of error flavours","description":"Compares completion for engaged real-user flows affected by the selected error flavours with\nall engaged real-user flows of the same types and date range. The baseline includes affected flows.\nEngagement requires a subflow or resolved decision in the flow or a nested flow, matching the time-series\n`engagement=engaged` filter. Results show correlation, not causation; flows may carry other errors.\n\nEach group includes up to `flowLimit` flows, newest first (default 5,000; maximum 50,000).\nWhen capped, `sampled: true` means all reported metrics use that sample. `analyzedFlowLimit`\nreports the applied cap; `flowListID` identifies the exact analyzed flows.\n\nThe baseline `completionRate` weights rates by the affected group's `osName`/`browserName` mix.\n`rawCompletionRate` reports the unweighted baseline rate.\n\nOutcomes `skipped`, `invisible` and `visible-auto-skip` count as `other` and are excluded from\ncompletion rates. Occurrences without flows are reported as orphans and excluded from rates.\n`baseline` is absent when no comparable engaged flows exist.\n\nUse naive UTC datetimes (`YYYY-MM-DDTHH:mm:ss`) for the half-open interval [fromDate, toDate),\nwith a maximum range of 30 days.\n\nRequired API key permission: `observe:errorFlavours:read`.","operationId":"ObserveErrorFlavourImpact","tags":["ObserveErrorFlavour"],"security":["75b9fa2b-5be6-49d5-a514-119ecfff5e4e"],"requestBody":"2afbb453-8d8b-49f4-bde8-40cebd1295e5","responses":{"200":"47066708-58e8-4fde-b6f7-374585e88b4c","default":"e85b885a-123d-427c-9073-d8a8e336f844"},"method":"post","type":"path","servers":["22c3014f-9385-4d0c-83b4-842924313628"],"path":"/observe/errorFlavours/impact","baseUrlOptions":["https://api.cloud.corbado.io/v1"],"title":"Analyze the flow impact of error flavours","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["flavourIDs","fromDate","toDate"],"properties":{"flavourIDs":{"type":"array","minItems":1,"maxItems":2000,"items":{"type":"string","x-oapi-codegen-extra-tags":{"validate":"required,id=erf"},"uniqueKey":"flavourIDs.items.[INDEX]","typeLabel":"string"},"description":"Flavour IDs to analyze together (format `erf-\u003cnumber>`), e.g. an error's member flavours.","x-oapi-codegen-extra-tags":{"validate":"required,min=1,max=2000,dive"},"isRequired":true,"uniqueKey":"flavourIDs","typeLabel":"string[]"},"fromDate":{"type":"string","description":"Range start, naive UTC datetime (inclusive).","example":"2026-08-01T00:00:00","x-oapi-codegen-extra-tags":{"validate":"required,datetime=2006-01-02T15:04:05"},"isRequired":true,"uniqueKey":"fromDate","typeLabel":"string"},"toDate":{"type":"string","description":"Range end, naive UTC datetime (exclusive).","example":"2026-08-08T00:00:00","x-oapi-codegen-extra-tags":{"validate":"required,datetime=2006-01-02T15:04:05"},"isRequired":true,"uniqueKey":"toDate","typeLabel":"string"},"flowLimit":{"type":"integer","minimum":1,"maximum":50000,"description":"Maximum number of flows to analyze PER GROUP (affected and baseline). Both groups are read as raw flow rows, so this is what bounds the analysis; a group that hits the limit is marked `sampled` and describes the most recent `flowLimit` flows of that group. Defaults to 5000. High values buy completeness (fewer sampled groups, so per-user tallies see a user's whole history in range) at the cost of a slower analysis.","example":5000,"x-oapi-codegen-extra-tags":{"validate":"omitempty,min=1,max=50000"},"uniqueKey":"flowLimit","typeLabel":"integer"},"baselineFlowListID":{"type":"string","description":"Optional stored ID list (format `idl-\u003cnumber>`, from POST /observe/idLists or a previous analysis) to\nuse verbatim as the baseline group instead of building one. The listed flows are read as raw rows\n(capped at `flowLimit`, most recent first) and compared against the affected group with the usual\ndevice-mix standardization; `matching` is ignored when this is set.","x-oapi-codegen-extra-tags":{"validate":"omitempty,id=idl"},"uniqueKey":"baselineFlowListID","typeLabel":"string"},"matching":{"type":"object","description":"Baseline modeling configuration. When present, the baseline is not \"all engaged flows of the affected flow types\" but a stratified sample matched to the affected group on the requested dimensions — controlling for WHERE in the flow the error happened (pathPrefix) and for the population mix, so the completion comparison isolates the error instead of the route that leads to it. The response's `matchingReport` describes the strata, the achieved balance, and every fallback taken.","properties":{"dimensions":{"type":"array","description":"Dimensions to match the baseline on. `pathPrefix` is the flow's coarse route up to (and including the code of) the erroring subflow, derived from long_path — it requires the project to have error-flavour embedding enabled (observeClassificationConfig); without embedded data the analysis degrades to the remaining dimensions and reports `prefixesUnavailable`. Defaults to [pathPrefix, osName, browserName].","items":{"type":"string","enum":["pathPrefix","osName","browserName","touchpoint","applicationID"],"uniqueKey":"matching.dimensions.items.[INDEX]","typeLabel":"enum\u003cstring>"},"x-oapi-codegen-extra-tags":{"validate":"omitempty,min=1,max=5,dive,oneof=pathPrefix osName browserName touchpoint applicationID"},"uniqueKey":"matching.dimensions","typeLabel":"enum\u003cstring>[]"},"prefixMode":{"type":"string","enum":["code","raw"],"description":"Prefix coarsening. `code` (default) reduces every segment to its kind and code (s_pr-id|d_1|s_pk-lo), so routes match regardless of variant detail; `raw` matches the exact long_path prefix including variant aliases — far more strata, only useful on very high-volume flows.","x-oapi-codegen-extra-tags":{"validate":"omitempty,oneof=code raw"},"uniqueKey":"matching.prefixMode","typeLabel":"enum\u003cstring>"},"ratio":{"type":"integer","minimum":1,"maximum":10,"description":"Baseline sample size per stratum as a multiple of the stratum's affected flows. Defaults to 3.","x-oapi-codegen-extra-tags":{"validate":"omitempty,min=1,max=10"},"uniqueKey":"matching.ratio","typeLabel":"integer"},"coverage":{"type":"number","minimum":0.5,"maximum":1,"description":"Share of affected flows the kept top prefixes must cover; the long tail of rarer prefixes is matched without the prefix dimension and reported as `uncoveredPrefixShare`. Defaults to 0.9.","x-oapi-codegen-extra-tags":{"validate":"omitempty,min=0.5,max=1"},"uniqueKey":"matching.coverage","typeLabel":"number"},"minCellSize":{"type":"integer","minimum":1,"maximum":1000,"description":"Minimum baseline candidates a stratum needs before it falls back to a coarser match (prefix dropped first, then the extra dimensions, down to env-only). Defaults to 20.","x-oapi-codegen-extra-tags":{"validate":"omitempty,min=1,max=1000"},"uniqueKey":"matching.minCellSize","typeLabel":"integer"}},"uniqueKey":"matching","typeLabel":"object"},"errorID":{"type":"string","description":"The curated error whose impact is being analyzed (format `err-\u003cnumber>`). When set, the flavourIDs must\nbe exactly the error's current member flavours, and the analysis result is stored on the error as its\nlast-known impact (served as `lastImpact` in the errors list). Omit for ad-hoc flavour analyses, which\nare never stored.","x-oapi-codegen-extra-tags":{"validate":"excluded_with=FindingID,omitempty,id=err"},"uniqueKey":"errorID","typeLabel":"string"},"findingID":{"type":"string","description":"The finding whose impact is being analyzed (format `fnd-\u003cnumber>`). When set, the flavourIDs must be\nexactly the flavours of the finding's errors (its own errors plus the errors its scope references),\nand the result is stored on the finding as its last-known impact (requires `observe:findings:write`).\nNot allowed together with errorID.","x-oapi-codegen-extra-tags":{"validate":"omitempty,id=fnd"},"uniqueKey":"findingID","typeLabel":"string"},"population":{"type":"object","description":"Restricts the affected group to these flows. With findingID and neither population nor comparison set,\nthe finding's first segment is used (unless ignoreFindingSegment).","required":["dimensions"],"properties":{"dimensions":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"population.dimensions.additionalProperties","typeLabel":"string"},"description":"Values every flow of the group has, e.g. `{\"os\": \"Android\"}`.","x-oapi-codegen-extra-tags":{"validate":"required,max=10,dive,keys,min=1,max=64,endkeys,min=1,max=128"},"isRequired":true,"uniqueKey":"population.dimensions","typeLabel":"object"},"exclude":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"population.exclude.additionalProperties","typeLabel":"string"},"description":"Flows having all of these values are left out, e.g. `{\"country\": \"KR\"}`.","x-oapi-codegen-extra-tags":{"validate":"omitempty,max=10,dive,keys,min=1,max=64,endkeys,min=1,max=128"},"uniqueKey":"population.exclude","typeLabel":"object"}},"uniqueKey":"population","typeLabel":"object"},"comparison":{"type":"object","description":"Restricts the baseline to these flows (still without the analyzed flavours). Defaults to population,\ni.e. the same group without the errors; with findingID the segment's stored comparison is used.","required":["dimensions"],"properties":{"dimensions":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"comparison.dimensions.additionalProperties","typeLabel":"string"},"description":"Values every flow of the group has, e.g. `{\"os\": \"Android\"}`.","x-oapi-codegen-extra-tags":{"validate":"required,max=10,dive,keys,min=1,max=64,endkeys,min=1,max=128"},"isRequired":true,"uniqueKey":"comparison.dimensions","typeLabel":"object"},"exclude":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"comparison.exclude.additionalProperties","typeLabel":"string"},"description":"Flows having all of these values are left out, e.g. `{\"country\": \"KR\"}`.","x-oapi-codegen-extra-tags":{"validate":"omitempty,max=10,dive,keys,min=1,max=64,endkeys,min=1,max=128"},"uniqueKey":"comparison.exclude","typeLabel":"object"}},"uniqueKey":"comparison","typeLabel":"object"},"ignoreFindingSegment":{"type":"boolean","description":"With findingID, analyze all flows instead of the finding's first segment.","uniqueKey":"ignoreFindingSegment","typeLabel":"boolean"},"flowTypes":{"type":"array","maxItems":50,"items":{"type":"string","uniqueKey":"flowTypes.items.[INDEX]","typeLabel":"string"},"description":"Analyze only affected flows of these flow types; the baseline follows, as it is drawn from the affected\nflows' types. With findingID and no flowTypes, the finding's scope.flowTypes are used.","x-oapi-codegen-extra-tags":{"validate":"omitempty,max=50,dive,min=1,max=64"},"uniqueKey":"flowTypes","typeLabel":"string[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"flavourIDs":["\u003cstring>"],"fromDate":"2026-08-01T00:00:00","toDate":"2026-08-08T00:00:00","flowLimit":5000,"baselineFlowListID":"\u003cstring>","matching":{"dimensions":[],"ratio":5,"coverage":0.75,"minCellSize":500},"errorID":"\u003cstring>","findingID":"\u003cstring>","ignoreFindingSegment":true,"flowTypes":["\u003cstring>"]}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"47066708-58e8-4fde-b6f7-374585e88b4c":{"description":"Impact analysis for the given flavours and range.","content":{"application/json":{"schema":{"type":"object","required":["affected","occurrenceCount","orphanOccurrenceCount"],"properties":{"affected":{"type":"object","required":["flowCount","completeCount","incompleteCount","otherCount"],"properties":{"flowCount":{"type":"integer","format":"int64","description":"Distinct flows in the group.","isRequired":true,"uniqueKey":"affected.flowCount","typeLabel":"integer\u003cint64>"},"completeCount":{"type":"integer","format":"int64","description":"Flows with outcome `complete`.","isRequired":true,"uniqueKey":"affected.completeCount","typeLabel":"integer\u003cint64>"},"incompleteCount":{"type":"integer","format":"int64","description":"Flows with outcome `incomplete`.","isRequired":true,"uniqueKey":"affected.incompleteCount","typeLabel":"integer\u003cint64>"},"otherCount":{"type":"integer","format":"int64","description":"Flows with any other outcome (`skipped`, `invisible`, `visible-auto-skip`); excluded from completion rates.","isRequired":true,"uniqueKey":"affected.otherCount","typeLabel":"integer\u003cint64>"},"completionRate":{"type":"number","format":"double","description":"completeCount / (completeCount + incompleteCount). For the baseline group this is standardized to the affected group's (osName, browserName) mix. Absent when no attempts-outcome flows exist.","uniqueKey":"affected.completionRate","typeLabel":"number\u003cdouble>"},"rawCompletionRate":{"type":"number","format":"double","description":"Baseline only — unweighted completion rate of the whole population, for transparency next to the mix-weighted completionRate.","uniqueKey":"affected.rawCompletionRate","typeLabel":"number\u003cdouble>"},"envMix":{"type":"array","maxItems":1000,"description":"Per-(osName, browserName) cells of the group. Empty dimension values mean unknown.","items":{"type":"object","required":["osName","browserName","flowCount"],"properties":{"osName":{"type":"string","description":"OS name; empty when unknown.","isRequired":true,"uniqueKey":"affected.envMix.items.[INDEX].osName","typeLabel":"string"},"browserName":{"type":"string","description":"Browser (web) or app name (app); empty when unknown.","isRequired":true,"uniqueKey":"affected.envMix.items.[INDEX].browserName","typeLabel":"string"},"flowCount":{"type":"integer","format":"int64","description":"Distinct flows in this cell.","isRequired":true,"uniqueKey":"affected.envMix.items.[INDEX].flowCount","typeLabel":"integer\u003cint64>"},"completedDurationP50Ms":{"type":"integer","format":"int64","description":"Median flow duration in milliseconds within this environment, over completed flows only. Absent when the cell has no completed flows.","uniqueKey":"affected.envMix.items.[INDEX].completedDurationP50Ms","typeLabel":"integer\u003cint64>"},"completedFlowsMeasured":{"type":"integer","format":"int64","description":"How many completed flows this cell's median rests on.","uniqueKey":"affected.envMix.items.[INDEX].completedFlowsMeasured","typeLabel":"integer\u003cint64>"},"completionRate":{"type":"number","format":"double","description":"Completion rate within this cell. Absent when the cell has no attempts-outcome flows.","uniqueKey":"affected.envMix.items.[INDEX].completionRate","typeLabel":"number\u003cdouble>"}},"uniqueKey":"affected.envMix.items.[INDEX]","typeLabel":"object"},"uniqueKey":"affected.envMix","typeLabel":"object[]"},"flowTypes":{"type":"array","maxItems":1000,"description":"Which flow types the group's analyzed flows belong to, biggest first. On the affected group this is also what the baseline was drawn from. A funnel diagram renders exactly one flow type, so a caller offering to open these flows in the funnel needs this list to know which funnel(s) apply.","items":{"type":"object","required":["flowType","flowCount"],"properties":{"flowType":{"type":"string","description":"Flow type name (`login`, `enrollment`, `recovery`, `signup` or a project's custom type); empty when the flow carries none.","isRequired":true,"uniqueKey":"affected.flowTypes.items.[INDEX].flowType","typeLabel":"string"},"flowCount":{"type":"integer","format":"int64","description":"Analyzed flows of this type in the group.","isRequired":true,"uniqueKey":"affected.flowTypes.items.[INDEX].flowCount","typeLabel":"integer\u003cint64>"}},"uniqueKey":"affected.flowTypes.items.[INDEX]","typeLabel":"object"},"uniqueKey":"affected.flowTypes","typeLabel":"object[]"},"sampled":{"type":"boolean","description":"True when the group hit `flowLimit`, i.e. every number describing it was computed over the most recent `flowLimit` flows of the group rather than its whole population.","uniqueKey":"affected.sampled","typeLabel":"boolean"},"completedDurationP25Ms":{"type":"integer","format":"int64","description":"25th percentile flow duration in milliseconds, over COMPLETED flows only (an incomplete flow's duration is time-until-abandonment, a different quantity). Absent when the group has no completed flows.","uniqueKey":"affected.completedDurationP25Ms","typeLabel":"integer\u003cint64>"},"completedDurationP50Ms":{"type":"integer","format":"int64","description":"Median flow duration in milliseconds, over completed flows only.","uniqueKey":"affected.completedDurationP50Ms","typeLabel":"integer\u003cint64>"},"completedDurationP90Ms":{"type":"integer","format":"int64","description":"90th percentile flow duration in milliseconds, over completed flows only.","uniqueKey":"affected.completedDurationP90Ms","typeLabel":"integer\u003cint64>"},"completedFlowsMeasured":{"type":"integer","format":"int64","description":"How many completed flows the duration percentiles rest on.","uniqueKey":"affected.completedFlowsMeasured","typeLabel":"integer\u003cint64>"},"flowListID":{"type":"string","description":"Handle of a stored ID list (format `idl-\u003cnumber>`) holding exactly the analyzed flows of this group, for\nopening them in user search. Empty when the group is empty.","uniqueKey":"affected.flowListID","typeLabel":"string"}},"isRequired":true,"uniqueKey":"affected","typeLabel":"object"},"occurrenceCount":{"type":"integer","format":"int64","description":"Occurrences of the given flavours on real-user flows in range.","isRequired":true,"uniqueKey":"occurrenceCount","typeLabel":"integer\u003cint64>"},"orphanOccurrenceCount":{"type":"integer","format":"int64","description":"Occurrences in range without an attached flow (inferred / never attached); excluded from all rates.","isRequired":true,"uniqueKey":"orphanOccurrenceCount","typeLabel":"integer\u003cint64>"},"population":{"type":"object","description":"A group of flows defined by environment values: flows matching every value in `dimensions` and not\nmatching all values in `exclude`. Keys are `os`, `browser`, `applicationId` (format `app-\u003cnumber>`) or a\ncustom tag key such as `country`; other keys (e.g. `vendor`) cannot be filtered and are reported as\nignored. An empty `dimensions` object means all flows.","required":["dimensions"],"properties":{"dimensions":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"population.dimensions.additionalProperties","typeLabel":"string"},"description":"Values every flow of the group has, e.g. `{\"os\": \"Android\"}`.","x-oapi-codegen-extra-tags":{"validate":"required,max=10,dive,keys,min=1,max=64,endkeys,min=1,max=128"},"isRequired":true,"uniqueKey":"population.dimensions","typeLabel":"object"},"exclude":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"population.exclude.additionalProperties","typeLabel":"string"},"description":"Flows having all of these values are left out, e.g. `{\"country\": \"KR\"}`.","x-oapi-codegen-extra-tags":{"validate":"omitempty,max=10,dive,keys,min=1,max=64,endkeys,min=1,max=128"},"uniqueKey":"population.exclude","typeLabel":"object"}},"uniqueKey":"population","typeLabel":"object"},"comparison":{"type":"object","description":"A group of flows defined by environment values: flows matching every value in `dimensions` and not\nmatching all values in `exclude`. Keys are `os`, `browser`, `applicationId` (format `app-\u003cnumber>`) or a\ncustom tag key such as `country`; other keys (e.g. `vendor`) cannot be filtered and are reported as\nignored. An empty `dimensions` object means all flows.","required":["dimensions"],"properties":{"dimensions":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"comparison.dimensions.additionalProperties","typeLabel":"string"},"description":"Values every flow of the group has, e.g. `{\"os\": \"Android\"}`.","x-oapi-codegen-extra-tags":{"validate":"required,max=10,dive,keys,min=1,max=64,endkeys,min=1,max=128"},"isRequired":true,"uniqueKey":"comparison.dimensions","typeLabel":"object"},"exclude":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"comparison.exclude.additionalProperties","typeLabel":"string"},"description":"Flows having all of these values are left out, e.g. `{\"country\": \"KR\"}`.","x-oapi-codegen-extra-tags":{"validate":"omitempty,max=10,dive,keys,min=1,max=64,endkeys,min=1,max=128"},"uniqueKey":"comparison.exclude","typeLabel":"object"}},"uniqueKey":"comparison","typeLabel":"object"},"ignoredDimensions":{"type":"array","maxItems":20,"items":{"type":"string","uniqueKey":"ignoredDimensions.items.[INDEX]","typeLabel":"string"},"description":"Dimensions of population or comparison that cannot be filtered and were left out.","uniqueKey":"ignoredDimensions","typeLabel":"string[]"},"savedFilterVisitorTypesIgnored":{"type":"boolean","description":"True when the project's default saved filter does not reduce to a set of visitor types (its visitor\ntype condition depends on other dimensions, e.g. `any` of a visitor type and an OS condition): the\nanalysis counted every visitor type. Absent otherwise; the analysis reads flows and applies only the\nvisitor type part of the default saved filter.","uniqueKey":"savedFilterVisitorTypesIgnored","typeLabel":"boolean"},"flowTypes":{"type":"array","maxItems":50,"items":{"type":"string","uniqueKey":"flowTypes.items.[INDEX]","typeLabel":"string"},"description":"Flow types the affected flows were restricted to. Absent when all flow types were analyzed.","uniqueKey":"flowTypes","typeLabel":"string[]"},"baseline":{"type":"object","required":["flowCount","completeCount","incompleteCount","otherCount"],"properties":{"flowCount":{"type":"integer","format":"int64","description":"Distinct flows in the group.","isRequired":true,"uniqueKey":"baseline.flowCount","typeLabel":"integer\u003cint64>"},"completeCount":{"type":"integer","format":"int64","description":"Flows with outcome `complete`.","isRequired":true,"uniqueKey":"baseline.completeCount","typeLabel":"integer\u003cint64>"},"incompleteCount":{"type":"integer","format":"int64","description":"Flows with outcome `incomplete`.","isRequired":true,"uniqueKey":"baseline.incompleteCount","typeLabel":"integer\u003cint64>"},"otherCount":{"type":"integer","format":"int64","description":"Flows with any other outcome (`skipped`, `invisible`, `visible-auto-skip`); excluded from completion rates.","isRequired":true,"uniqueKey":"baseline.otherCount","typeLabel":"integer\u003cint64>"},"completionRate":{"type":"number","format":"double","description":"completeCount / (completeCount + incompleteCount). For the baseline group this is standardized to the affected group's (osName, browserName) mix. Absent when no attempts-outcome flows exist.","uniqueKey":"baseline.completionRate","typeLabel":"number\u003cdouble>"},"rawCompletionRate":{"type":"number","format":"double","description":"Baseline only — unweighted completion rate of the whole population, for transparency next to the mix-weighted completionRate.","uniqueKey":"baseline.rawCompletionRate","typeLabel":"number\u003cdouble>"},"envMix":{"type":"array","maxItems":1000,"description":"Per-(osName, browserName) cells of the group. Empty dimension values mean unknown.","items":{"type":"object","required":["osName","browserName","flowCount"],"properties":{"osName":{"type":"string","description":"OS name; empty when unknown.","isRequired":true,"uniqueKey":"baseline.envMix.items.[INDEX].osName","typeLabel":"string"},"browserName":{"type":"string","description":"Browser (web) or app name (app); empty when unknown.","isRequired":true,"uniqueKey":"baseline.envMix.items.[INDEX].browserName","typeLabel":"string"},"flowCount":{"type":"integer","format":"int64","description":"Distinct flows in this cell.","isRequired":true,"uniqueKey":"baseline.envMix.items.[INDEX].flowCount","typeLabel":"integer\u003cint64>"},"completedDurationP50Ms":{"type":"integer","format":"int64","description":"Median flow duration in milliseconds within this environment, over completed flows only. Absent when the cell has no completed flows.","uniqueKey":"baseline.envMix.items.[INDEX].completedDurationP50Ms","typeLabel":"integer\u003cint64>"},"completedFlowsMeasured":{"type":"integer","format":"int64","description":"How many completed flows this cell's median rests on.","uniqueKey":"baseline.envMix.items.[INDEX].completedFlowsMeasured","typeLabel":"integer\u003cint64>"},"completionRate":{"type":"number","format":"double","description":"Completion rate within this cell. Absent when the cell has no attempts-outcome flows.","uniqueKey":"baseline.envMix.items.[INDEX].completionRate","typeLabel":"number\u003cdouble>"}},"uniqueKey":"baseline.envMix.items.[INDEX]","typeLabel":"object"},"uniqueKey":"baseline.envMix","typeLabel":"object[]"},"flowTypes":{"type":"array","maxItems":1000,"description":"Which flow types the group's analyzed flows belong to, biggest first. On the affected group this is also what the baseline was drawn from. A funnel diagram renders exactly one flow type, so a caller offering to open these flows in the funnel needs this list to know which funnel(s) apply.","items":{"type":"object","required":["flowType","flowCount"],"properties":{"flowType":{"type":"string","description":"Flow type name (`login`, `enrollment`, `recovery`, `signup` or a project's custom type); empty when the flow carries none.","isRequired":true,"uniqueKey":"baseline.flowTypes.items.[INDEX].flowType","typeLabel":"string"},"flowCount":{"type":"integer","format":"int64","description":"Analyzed flows of this type in the group.","isRequired":true,"uniqueKey":"baseline.flowTypes.items.[INDEX].flowCount","typeLabel":"integer\u003cint64>"}},"uniqueKey":"baseline.flowTypes.items.[INDEX]","typeLabel":"object"},"uniqueKey":"baseline.flowTypes","typeLabel":"object[]"},"sampled":{"type":"boolean","description":"True when the group hit `flowLimit`, i.e. every number describing it was computed over the most recent `flowLimit` flows of the group rather than its whole population.","uniqueKey":"baseline.sampled","typeLabel":"boolean"},"completedDurationP25Ms":{"type":"integer","format":"int64","description":"25th percentile flow duration in milliseconds, over COMPLETED flows only (an incomplete flow's duration is time-until-abandonment, a different quantity). Absent when the group has no completed flows.","uniqueKey":"baseline.completedDurationP25Ms","typeLabel":"integer\u003cint64>"},"completedDurationP50Ms":{"type":"integer","format":"int64","description":"Median flow duration in milliseconds, over completed flows only.","uniqueKey":"baseline.completedDurationP50Ms","typeLabel":"integer\u003cint64>"},"completedDurationP90Ms":{"type":"integer","format":"int64","description":"90th percentile flow duration in milliseconds, over completed flows only.","uniqueKey":"baseline.completedDurationP90Ms","typeLabel":"integer\u003cint64>"},"completedFlowsMeasured":{"type":"integer","format":"int64","description":"How many completed flows the duration percentiles rest on.","uniqueKey":"baseline.completedFlowsMeasured","typeLabel":"integer\u003cint64>"},"flowListID":{"type":"string","description":"Handle of a stored ID list (format `idl-\u003cnumber>`) holding exactly the analyzed flows of this group, for\nopening them in user search. Empty when the group is empty.","uniqueKey":"baseline.flowListID","typeLabel":"string"}},"uniqueKey":"baseline","typeLabel":"object"},"completionLift":{"type":"number","format":"double","description":"affected.completionRate minus baseline.completionRate (percentage points as a fraction, negative = affected flows complete less). Absent when either side has no completion rate.","uniqueKey":"completionLift","typeLabel":"number\u003cdouble>"},"occurrencesPerFlowAvg":{"type":"number","format":"double","description":"Average occurrences per affected flow (occurrenceCount / affected.flowCount). Absent when no flows are affected.","uniqueKey":"occurrencesPerFlowAvg","typeLabel":"number\u003cdouble>"},"affectedUserCount":{"type":"integer","format":"int64","description":"Distinct users among affected flows (flows without a user reference contribute none), counted over the whole affected group also when the analysis was sampled. Absent when no flows are affected.","uniqueKey":"affectedUserCount","typeLabel":"integer\u003cint64>"},"repeatUserCount":{"type":"integer","format":"int64","description":"Distinct users who hit the analyzed flavours MORE THAN ONCE in range, i.e. at least two occurrences — whether spread over several flows or fired twice within one flow. Subset of `affectedUserCount`; flows without a user reference contribute none. Absent when no flows are affected. Computed over the analyzed flows, so on a `sampled` affected group it is a lower bound (a user's earlier flows may fall outside the sample).","uniqueKey":"repeatUserCount","typeLabel":"integer\u003cint64>"},"repeatUserOccurrenceCount":{"type":"integer","format":"int64","description":"Occurrences on the repeat users' flows — how much of `occurrenceCount` is concentrated on users who keep hitting this.","uniqueKey":"repeatUserOccurrenceCount","typeLabel":"integer\u003cint64>"},"repeatUserFlowCount":{"type":"integer","format":"int64","description":"Affected flows belonging to the repeat users, i.e. the size of the cohort behind `repeatUserFlowListID`.","uniqueKey":"repeatUserFlowCount","typeLabel":"integer\u003cint64>"},"repeatUserFlowListID":{"type":"string","description":"Handle of a stored ID list (format `idl-\u003cnumber>`) holding the affected flows of the repeat users, for\nopening exactly those high-impact users in user search. Empty when no user hit the flavours more than\nonce.","uniqueKey":"repeatUserFlowListID","typeLabel":"string"},"userExposure":{"type":"array","items":{"type":"object","required":["minOccurrences","userCount","flowCount","occurrenceCount"],"properties":{"minOccurrences":{"type":"integer","format":"int64","description":"Lowest occurrence count in this band (inclusive).","isRequired":true,"uniqueKey":"userExposure.items.[INDEX].minOccurrences","typeLabel":"integer\u003cint64>"},"userCount":{"type":"integer","format":"int64","description":"Distinct users whose occurrence count falls into this band.","isRequired":true,"uniqueKey":"userExposure.items.[INDEX].userCount","typeLabel":"integer\u003cint64>"},"flowCount":{"type":"integer","format":"int64","description":"Affected flows belonging to those users - the size of the cohort behind `flowListID`.","isRequired":true,"uniqueKey":"userExposure.items.[INDEX].flowCount","typeLabel":"integer\u003cint64>"},"occurrenceCount":{"type":"integer","format":"int64","description":"Occurrences on this band's flows, i.e. how much of `occurrenceCount` sits on these users.","isRequired":true,"uniqueKey":"userExposure.items.[INDEX].occurrenceCount","typeLabel":"integer\u003cint64>"},"maxOccurrences":{"type":"integer","format":"int64","description":"Highest occurrence count in this band (inclusive). Absent on the open-ended top band.","uniqueKey":"userExposure.items.[INDEX].maxOccurrences","typeLabel":"integer\u003cint64>"},"attemptCount":{"type":"integer","format":"int64","description":"This band's flows that completed or were abandoned - the denominator of `completionRate`.","uniqueKey":"userExposure.items.[INDEX].attemptCount","typeLabel":"integer\u003cint64>"},"completionRate":{"type":"number","format":"double","description":"Share of this band's attempts that completed. Read against the affected group's own rate it says whether being hit repeatedly goes with giving up. Absent when the band has no attempts-outcome flows.","uniqueKey":"userExposure.items.[INDEX].completionRate","typeLabel":"number\u003cdouble>"},"flowListID":{"type":"string","description":"Handle of a stored ID list (format `idl-\u003cnumber>`) holding this band's flows, for opening exactly these\nusers in user search. Empty when the list could not be stored.","uniqueKey":"userExposure.items.[INDEX].flowListID","typeLabel":"string"}},"uniqueKey":"userExposure.items.[INDEX]","typeLabel":"object"},"description":"The distribution behind `repeatUserCount`: the affected users grouped into occurrence bands (1, 2, 3-4, 5-9, 10+), ascending, empty bands omitted. Every band above the first is made of repeat users, so their user counts sum to `repeatUserCount` and all bands together to `affectedUserCount`. Same sampling caveat as `repeatUserCount` — on a `sampled` affected group users shift toward the lower bands.","uniqueKey":"userExposure","typeLabel":"object[]"},"unattributedFlows":{"type":"object","required":["flowCount","occurrenceCount"],"properties":{"flowCount":{"type":"integer","format":"int64","description":"Affected flows without a user reference.","isRequired":true,"uniqueKey":"unattributedFlows.flowCount","typeLabel":"integer\u003cint64>"},"occurrenceCount":{"type":"integer","format":"int64","description":"Occurrences on those flows.","isRequired":true,"uniqueKey":"unattributedFlows.occurrenceCount","typeLabel":"integer\u003cint64>"},"attemptCount":{"type":"integer","format":"int64","description":"Those flows that completed or were abandoned - the denominator of `completionRate`.","uniqueKey":"unattributedFlows.attemptCount","typeLabel":"integer\u003cint64>"},"completionRate":{"type":"number","format":"double","description":"Share of those attempts that completed. Absent when none has an attempts outcome.","uniqueKey":"unattributedFlows.completionRate","typeLabel":"number\u003cdouble>"},"flowListID":{"type":"string","description":"Handle of a stored ID list (format `idl-\u003cnumber>`) holding these flows, for opening them in user search.\nEmpty when the list could not be stored.","uniqueKey":"unattributedFlows.flowListID","typeLabel":"string"}},"uniqueKey":"unattributedFlows","typeLabel":"object"},"terminalIncompleteFlowCount":{"type":"integer","format":"int64","description":"Incomplete affected flows whose last occurrence of the analyzed flavours fell within 10 seconds of the flow's end - the error was (close to) the last thing that happened. Absent when no flows are affected.","uniqueKey":"terminalIncompleteFlowCount","typeLabel":"integer\u003cint64>"},"analyzedFlowLimit":{"type":"integer","format":"int64","description":"The per-group flow cap the analysis ran with (the request's `flowLimit`, or the default). Together with each group's `sampled` flag it tells a caller whether raising the limit would change the numbers.","uniqueKey":"analyzedFlowLimit","typeLabel":"integer\u003cint64>"},"affectedPopulationFlowCount":{"type":"integer","format":"int64","description":"All affected flows in the range. Equals the affected group's flowCount unless that group is `sampled`; then it is the uncapped count, for scaling sample-based totals.","uniqueKey":"affectedPopulationFlowCount","typeLabel":"integer\u003cint64>"},"matchingReport":{"type":"object","description":"How the baseline group was modeled and how well it mirrors the affected group. Present when the request asked for `matching` or supplied `baselineFlowListID`; absent on a plain (unmatched) analysis.","required":["mode","dimensions","prefixesUnavailable","matchRate","uncoveredPrefixShare","collapsedStrataCount"],"properties":{"mode":{"type":"string","enum":["matched","env-only","provided-list"],"description":"`matched` = stratified matching ran as requested; `env-only` = the pathPrefix dimension was requested but no affected flow carried embedded error flavours in its long_path, so matching fell back to the remaining dimensions; `provided-list` = the caller supplied `baselineFlowListID` and no modeling ran.","isRequired":true,"uniqueKey":"matchingReport.mode","typeLabel":"enum\u003cstring>"},"dimensions":{"type":"array","items":{"type":"string","uniqueKey":"matchingReport.dimensions.items.[INDEX]","typeLabel":"string"},"description":"The dimensions matching actually ran on (after any degradation).","isRequired":true,"uniqueKey":"matchingReport.dimensions","typeLabel":"string[]"},"prefixesUnavailable":{"type":"boolean","description":"True when pathPrefix was requested but could not be derived for any affected flow (the project has no embedded error flavours in long_path for the analyzed range).","isRequired":true,"uniqueKey":"matchingReport.prefixesUnavailable","typeLabel":"boolean"},"matchRate":{"type":"number","format":"double","description":"Share of affected flows whose stratum found at least one baseline candidate (at any collapse level).","isRequired":true,"uniqueKey":"matchingReport.matchRate","typeLabel":"number\u003cdouble>"},"uncoveredPrefixShare":{"type":"number","format":"double","description":"Share of affected flows whose prefix fell outside the kept top prefixes (see the request's `coverage`); they are matched without the prefix dimension.","isRequired":true,"uniqueKey":"matchingReport.uncoveredPrefixShare","typeLabel":"number\u003cdouble>"},"collapsedStrataCount":{"type":"integer","description":"Number of strata that fell back to a coarser match because they had fewer than `minCellSize` baseline candidates.","isRequired":true,"uniqueKey":"matchingReport.collapsedStrataCount","typeLabel":"integer"},"exactMatchRate":{"type":"number","format":"double","description":"Share of affected flows matched on every requested dimension (collapse level 0 or 1; only the error position\nmay be dropped), i.e. the like-for-like part of the comparison. Strata are filled from the finest level\nfirst, so a coarse fallback never takes the candidates of a stratum that has comparable flows of its own.","uniqueKey":"matchingReport.exactMatchRate","typeLabel":"number\u003cdouble>"},"droppedDimensions":{"type":"array","items":{"type":"string","uniqueKey":"matchingReport.droppedDimensions.items.[INDEX]","typeLabel":"string"},"description":"Requested dimensions left out because the comparison group deliberately differs in them (an excluded or a\ndifferent required value, e.g. another browser) or because the finding's comparison switches them off.","uniqueKey":"matchingReport.droppedDimensions","typeLabel":"string[]"},"strata":{"type":"array","items":{"type":"object","required":["affectedFlowCount","baselineFlowCount","collapseLevel"],"properties":{"affectedFlowCount":{"type":"integer","format":"int64","isRequired":true,"uniqueKey":"matchingReport.strata.items.[INDEX].affectedFlowCount","typeLabel":"integer\u003cint64>"},"baselineFlowCount":{"type":"integer","format":"int64","description":"Baseline flows sampled for this stratum (target is `ratio` x affectedFlowCount; less when candidates ran out).","isRequired":true,"uniqueKey":"matchingReport.strata.items.[INDEX].baselineFlowCount","typeLabel":"integer\u003cint64>"},"collapseLevel":{"type":"integer","description":"0 = matched on the full requested key; 1 = prefix dropped; 2 = extra dimensions dropped (os + browser + position); 3 = browser dropped too (os + position); 4 = position only.","isRequired":true,"uniqueKey":"matchingReport.strata.items.[INDEX].collapseLevel","typeLabel":"integer"},"flowType":{"type":"string","description":"The stratum's flow type. Flow type is a hard block variable — part of every stratum key at every collapse level, never dropped — so baseline flows of one flow type never serve affected flows of another. Empty for flows carrying no type.","uniqueKey":"matchingReport.strata.items.[INDEX].flowType","typeLabel":"string"},"pathPrefix":{"type":"string","description":"Coarse route before the erroring subflow (segment codes joined by |). Empty = the error sat on the first segment, or the prefix dimension was not part of this stratum.","uniqueKey":"matchingReport.strata.items.[INDEX].pathPrefix","typeLabel":"string"},"errorSubflow":{"type":"string","description":"Subflow code the error sits on (e.g. pk-lo). Empty when the position could not be derived.","uniqueKey":"matchingReport.strata.items.[INDEX].errorSubflow","typeLabel":"string"},"osName":{"type":"string","uniqueKey":"matchingReport.strata.items.[INDEX].osName","typeLabel":"string"},"browserName":{"type":"string","uniqueKey":"matchingReport.strata.items.[INDEX].browserName","typeLabel":"string"},"touchpoint":{"type":"string","uniqueKey":"matchingReport.strata.items.[INDEX].touchpoint","typeLabel":"string"},"applicationID":{"type":"string","uniqueKey":"matchingReport.strata.items.[INDEX].applicationID","typeLabel":"string"}},"uniqueKey":"matchingReport.strata.items.[INDEX]","typeLabel":"object"},"description":"The largest strata by affected flows (capped at 50), for inspecting what the baseline was matched on.","uniqueKey":"matchingReport.strata","typeLabel":"object[]"},"balance":{"type":"array","items":{"type":"object","required":["dimension","imbalanceBefore","imbalanceAfter"],"properties":{"dimension":{"type":"string","isRequired":true,"uniqueKey":"matchingReport.balance.items.[INDEX].dimension","typeLabel":"string"},"imbalanceBefore":{"type":"number","format":"double","isRequired":true,"uniqueKey":"matchingReport.balance.items.[INDEX].imbalanceBefore","typeLabel":"number\u003cdouble>"},"imbalanceAfter":{"type":"number","format":"double","isRequired":true,"uniqueKey":"matchingReport.balance.items.[INDEX].imbalanceAfter","typeLabel":"number\u003cdouble>"}},"uniqueKey":"matchingReport.balance.items.[INDEX]","typeLabel":"object"},"description":"Per-dimension balance between the affected group and the baseline: total-variation distance (0 = identical distributions, 1 = disjoint) before matching (against all candidates) and after (against the sampled baseline). After-values near 0 mean the baseline mirrors the affected group on that dimension.","uniqueKey":"matchingReport.balance","typeLabel":"object[]"}},"uniqueKey":"matchingReport","typeLabel":"object"},"perFlowType":{"type":"array","maxItems":1000,"items":{"type":"object","description":"One flow type's slice of the impact comparison: the affected flows of this type against the baseline flows of the SAME type (flow type is a hard block variable of the baseline — see `matchingReport.strata[].flowType`), with the baseline rate standardized to this type's own affected OS/browser mix.","required":["flowType","affectedFlowCount","affectedAttemptCount","baselineFlowCount","baselineAttemptCount"],"properties":{"flowType":{"type":"string","description":"Flow type name (`login`, `signup`, ...); empty for flows that carry no type.","isRequired":true,"uniqueKey":"perFlowType.items.[INDEX].flowType","typeLabel":"string"},"affectedFlowCount":{"type":"integer","format":"int64","description":"Affected flows of this type.","isRequired":true,"uniqueKey":"perFlowType.items.[INDEX].affectedFlowCount","typeLabel":"integer\u003cint64>"},"affectedAttemptCount":{"type":"integer","format":"int64","description":"Affected flows of this type that completed or were abandoned — the denominator of `affectedCompletionRate`, and what says whether the row rests on anything.","isRequired":true,"uniqueKey":"perFlowType.items.[INDEX].affectedAttemptCount","typeLabel":"integer\u003cint64>"},"baselineFlowCount":{"type":"integer","format":"int64","description":"Baseline flows of this type.","isRequired":true,"uniqueKey":"perFlowType.items.[INDEX].baselineFlowCount","typeLabel":"integer\u003cint64>"},"baselineAttemptCount":{"type":"integer","format":"int64","description":"Baseline flows of this type with an attempts outcome.","isRequired":true,"uniqueKey":"perFlowType.items.[INDEX].baselineAttemptCount","typeLabel":"integer\u003cint64>"},"affectedCompletionRate":{"type":"number","format":"double","description":"Completion rate of the affected flows of this type. Absent when none has an attempts outcome.","uniqueKey":"perFlowType.items.[INDEX].affectedCompletionRate","typeLabel":"number\u003cdouble>"},"affectedCompletedDurationP50Ms":{"type":"integer","format":"int64","description":"Median duration of COMPLETED affected flows of this type, in milliseconds. Absent when none completed.","uniqueKey":"perFlowType.items.[INDEX].affectedCompletedDurationP50Ms","typeLabel":"integer\u003cint64>"},"affectedCompletedFlowsMeasured":{"type":"integer","format":"int64","description":"How many completed affected flows that median rests on.","uniqueKey":"perFlowType.items.[INDEX].affectedCompletedFlowsMeasured","typeLabel":"integer\u003cint64>"},"baselineCompletionRate":{"type":"number","format":"double","description":"Baseline completion rate within this type, standardized to the type's affected OS/browser mix. Absent when no env cell is comparable.","uniqueKey":"perFlowType.items.[INDEX].baselineCompletionRate","typeLabel":"number\u003cdouble>"},"baselineCompletedDurationP50Ms":{"type":"integer","format":"int64","description":"Median duration of completed baseline flows of this type, in milliseconds.","uniqueKey":"perFlowType.items.[INDEX].baselineCompletedDurationP50Ms","typeLabel":"integer\u003cint64>"},"baselineCompletedFlowsMeasured":{"type":"integer","format":"int64","description":"How many completed baseline flows that median rests on.","uniqueKey":"perFlowType.items.[INDEX].baselineCompletedFlowsMeasured","typeLabel":"integer\u003cint64>"},"completionLift":{"type":"number","format":"double","description":"affectedCompletionRate minus baselineCompletionRate within this type. Absent when either side has no rate.","uniqueKey":"perFlowType.items.[INDEX].completionLift","typeLabel":"number\u003cdouble>"}},"uniqueKey":"perFlowType.items.[INDEX]","typeLabel":"object"},"description":"The completion comparison split per flow type of the affected group, biggest affected slice first. The group-level `completionLift` is a weighted mean over these; when the per-type lifts diverge (different sign, or a large spread), the blended number hides differently-hurt flow types and a caller should present this cut instead. Empty when no flows are affected.","uniqueKey":"perFlowType","typeLabel":"object[]"},"subflowCompletion":{"type":"object","description":"How the ERRORING SUBFLOW itself ended on both sides — did this step succeed, as opposed to `completionLift`'s did the whole flow succeed (possibly via a fallback). The affected side measures the segment the analyzed flavours fired on (falling back to the flow's first segment of the subflow's code when embedding does not locate it); the baseline side the first segment of the same code, so flows that never attempted the subflow are excluded. Flow-type-agnostic by construction: a passkey-login attempt is the same unit in a login and in a signup flow, so this comparison stays clean when the affected group mixes flow types. Absent when the analyzed flavours span several subflow types or none resolves to a known code.","required":["subflowCode","definitional","affectedMeasuredCount","affectedCompleteCount","baselineMeasuredCount","baselineCompleteCount"],"properties":{"subflowCode":{"type":"string","description":"Long-path code of the subflow the analyzed flavours belong to (e.g. `pk-lo`).","isRequired":true,"uniqueKey":"subflowCompletion.subflowCode","typeLabel":"string"},"definitional":{"type":"boolean","description":"True when the analyzed flavours are embedded ONLY in non-completing outcome variants — the comparison is then circular (the error's presence defines the segment as failed) and must not be presented as a measured impact.","isRequired":true,"uniqueKey":"subflowCompletion.definitional","typeLabel":"boolean"},"affectedMeasuredCount":{"type":"integer","format":"int64","description":"Affected flows with a classifiable segment of the subflow; the denominator of `affectedCompletionRate`.","isRequired":true,"uniqueKey":"subflowCompletion.affectedMeasuredCount","typeLabel":"integer\u003cint64>"},"affectedCompleteCount":{"type":"integer","format":"int64","isRequired":true,"uniqueKey":"subflowCompletion.affectedCompleteCount","typeLabel":"integer\u003cint64>"},"baselineMeasuredCount":{"type":"integer","format":"int64","description":"Baseline flows with a classifiable segment of the subflow.","isRequired":true,"uniqueKey":"subflowCompletion.baselineMeasuredCount","typeLabel":"integer\u003cint64>"},"baselineCompleteCount":{"type":"integer","format":"int64","isRequired":true,"uniqueKey":"subflowCompletion.baselineCompleteCount","typeLabel":"integer\u003cint64>"},"affectedCompletionRate":{"type":"number","format":"double","description":"Share of the affected side's measured subflow attempts that completed. Absent when nothing was measured.","uniqueKey":"subflowCompletion.affectedCompletionRate","typeLabel":"number\u003cdouble>"},"baselineCompletionRate":{"type":"number","format":"double","description":"Share of the baseline side's measured subflow attempts that completed.","uniqueKey":"subflowCompletion.baselineCompletionRate","typeLabel":"number\u003cdouble>"},"completionLift":{"type":"number","format":"double","description":"affectedCompletionRate minus baselineCompletionRate. Absent when either side measured nothing.","uniqueKey":"subflowCompletion.completionLift","typeLabel":"number\u003cdouble>"}},"uniqueKey":"subflowCompletion","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"affected":{"flowCount":123,"completeCount":123,"incompleteCount":123,"otherCount":123,"completionRate":123,"rawCompletionRate":123,"envMix":[{"osName":"\u003cstring>","browserName":"\u003cstring>","flowCount":123,"completedDurationP50Ms":123,"completedFlowsMeasured":123,"completionRate":123}],"flowTypes":[{"flowType":"\u003cstring>","flowCount":123}],"sampled":true,"completedDurationP25Ms":123,"completedDurationP50Ms":123,"completedDurationP90Ms":123,"completedFlowsMeasured":123,"flowListID":"\u003cstring>"},"occurrenceCount":123,"orphanOccurrenceCount":123,"population":{"dimensions":{},"exclude":{}},"comparison":{"dimensions":{},"exclude":{}},"ignoredDimensions":["\u003cstring>"],"savedFilterVisitorTypesIgnored":true,"flowTypes":["\u003cstring>"],"baseline":{"flowCount":123,"completeCount":123,"incompleteCount":123,"otherCount":123,"completionRate":123,"rawCompletionRate":123,"envMix":[{"osName":"\u003cstring>","browserName":"\u003cstring>","flowCount":123,"completedDurationP50Ms":123,"completedFlowsMeasured":123,"completionRate":123}],"flowTypes":[{"flowType":"\u003cstring>","flowCount":123}],"sampled":true,"completedDurationP25Ms":123,"completedDurationP50Ms":123,"completedDurationP90Ms":123,"completedFlowsMeasured":123,"flowListID":"\u003cstring>"},"completionLift":123,"occurrencesPerFlowAvg":123,"affectedUserCount":123,"repeatUserCount":123,"repeatUserOccurrenceCount":123,"repeatUserFlowCount":123,"repeatUserFlowListID":"\u003cstring>","userExposure":[{"minOccurrences":123,"userCount":123,"flowCount":123,"occurrenceCount":123,"maxOccurrences":123,"attemptCount":123,"completionRate":123,"flowListID":"\u003cstring>"}],"unattributedFlows":{"flowCount":123,"occurrenceCount":123,"attemptCount":123,"completionRate":123,"flowListID":"\u003cstring>"},"terminalIncompleteFlowCount":123,"analyzedFlowLimit":123,"affectedPopulationFlowCount":123,"matchingReport":{"mode":"matched","dimensions":["\u003cstring>"],"prefixesUnavailable":true,"matchRate":123,"uncoveredPrefixShare":123,"collapsedStrataCount":123,"exactMatchRate":123,"droppedDimensions":["\u003cstring>"],"strata":[{"affectedFlowCount":123,"baselineFlowCount":123,"collapseLevel":123,"flowType":"\u003cstring>","pathPrefix":"\u003cstring>","errorSubflow":"\u003cstring>","osName":"\u003cstring>","browserName":"\u003cstring>","touchpoint":"\u003cstring>","applicationID":"\u003cstring>"}],"balance":[{"dimension":"\u003cstring>","imbalanceBefore":123,"imbalanceAfter":123}]},"perFlowType":[{"flowType":"\u003cstring>","affectedFlowCount":123,"affectedAttemptCount":123,"baselineFlowCount":123,"baselineAttemptCount":123,"affectedCompletionRate":123,"affectedCompletedDurationP50Ms":123,"affectedCompletedFlowsMeasured":123,"baselineCompletionRate":123,"baselineCompletedDurationP50Ms":123,"baselineCompletedFlowsMeasured":123,"completionLift":123}],"subflowCompletion":{"subflowCode":"\u003cstring>","definitional":true,"affectedMeasuredCount":123,"affectedCompleteCount":123,"baselineMeasuredCount":123,"baselineCompleteCount":123,"affectedCompletionRate":123,"baselineCompletionRate":123,"completionLift":123}}}},"exampleType":"generated"}},"exampleType":"generated"},"e85b885a-123d-427c-9073-d8a8e336f844":{"description":"Error","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["message"],"properties":{"message":{"description":"Error message","type":"string","example":"Validation failed","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"details":{"description":"Validation error details per field","type":"array","items":{"type":"object","required":["field","message"],"properties":{"field":{"description":"Field name that failed validation","type":"string","example":"projectID","isRequired":true,"uniqueKey":"error.details.items.[INDEX].field","typeLabel":"string"},"message":{"description":"Validation error message","type":"string","example":"required","isRequired":true,"uniqueKey":"error.details.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"error.details.items.[INDEX]","typeLabel":"object"},"uniqueKey":"error.details","typeLabel":"object[]"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":{"message":"Validation failed","details":[{"field":"projectID","message":"required"}]}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"75b9fa2b-5be6-49d5-a514-119ecfff5e4e":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Use an Observe API key from the management console. The key selects the project and must grant the permission listed on the operation. Keep this key on your server.","scopes":["observe:errorFlavours:read"],"schemeName":"bearerAuth"}}},"servers":{"22c3014f-9385-4d0c-83b4-842924313628":{"url":"https://api.cloud.corbado.io/v1"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"Use an Observe API key from the management console. The key selects the project and must grant the permission listed on the operation. Keep this key on your server.","scopes":["observe:errorFlavours:read"],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Use an Observe API key from the management console. The key selects the project and must grant the permission listed on the operation. Keep this key on your server.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"api-reference/openapi/observe.yaml"},"subdomain":"corbado-43","siteName":"Corbado docs","title":"Analyze the flow impact of error flavours - Corbado docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-06T15:11:48.678Z","originalFileLocation":"api-reference/observe/error-impact.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=\"Compares completion for engaged real-user flows affected by the selected error flavours with all engaged real-user flows of the same types and date range. The baseline includes affected flows. Engagement requires a subflow or resolved decision in the flow or a nested flow, matching the time-series engagement=engaged filter. Results show correlation, not causation; flows may carry other errors. Each group includes up to flowLimit flows, newest first (default 5,000; maximum 50,000). When capped, sampled: true means all reported metrics use that sample. analyzedFlowLimit reports the applied cap; flowListID identifies the exact analyzed flows. The baseline completionRate weights rates by the affected group\u0026#x27;s osName/browserName mix. rawCompletionRate reports the unweighted baseline rate. Outcomes skipped, invisible and visible-auto-skip count as other and are excluded from completion rates. Occurrences without flows are reported as orphans and excluded from rates. baseline is absent when no comparable engaged flows exist. Use naive UTC datetimes (YYYY-MM-DDTHH:mm:ss) for the half-open interval [fromDate, toDate), with a maximum range of 30 days. Required API key permission: observe:errorFlavours:read.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Corbado docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/corbado-43/noBvchxiQo85SoLM/_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/corbado-43/noBvchxiQo85SoLM/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/corbado-43/noBvchxiQo85SoLM/_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/corbado-43/noBvchxiQo85SoLM/_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/corbado-43/noBvchxiQo85SoLM/_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/corbado-43/noBvchxiQo85SoLM/_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/corbado-43/noBvchxiQo85SoLM/_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/corbado-43/noBvchxiQo85SoLM/_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/corbado-43/noBvchxiQo85SoLM/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Analyze the flow impact of error flavours - Corbado docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Compares completion for engaged real-user flows affected by the selected error flavours with all engaged real-user flows of the same types and date range. The baseline includes affected flows. Engagement requires a subflow or resolved decision in the flow or a nested flow, matching the time-series engagement=engaged filter. Results show correlation, not causation; flows may carry other errors. Each group includes up to flowLimit flows, newest first (default 5,000; maximum 50,000). When capped, sampled: true means all reported metrics use that sample. analyzedFlowLimit reports the applied cap; flowListID identifies the exact analyzed flows. The baseline completionRate weights rates by the affected group\u0026#x27;s osName/browserName mix. rawCompletionRate reports the unweighted baseline rate. Outcomes skipped, invisible and visible-auto-skip count as other and are excluded from completion rates. Occurrences without flows are reported as orphans and excluded from rates. baseline is absent when no comparable engaged flows exist. Use naive UTC datetimes (YYYY-MM-DDTHH:mm:ss) for the half-open interval [fromDate, toDate), with a maximum range of 30 days. Required API key permission: observe:errorFlavours:read.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Corbado docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.corbado.com/api-reference/observe/error-impact\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://corbado-43.mintlify.site/_mintlify/api/og/v2?division=Error+management\u0026amp;title=Analyze+the+flow+impact+of+error+flavours\u0026amp;description=Compares+completion+for+engaged+real-user+flows+affected+by+the+selected+error+flavours+with%0Aall+engaged+real-user+flows+of+the+same+types+and+date+range.+The+b\u0026amp;theme=46938e1ac6053c91ba042440\u0026amp;signature=e09b11ed91e2640f28f075dfd8f405251188edc5959e6e5d7d90fde2bdb1ea2e\">\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=\"Analyze the flow impact of error flavours - Corbado docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Compares completion for engaged real-user flows affected by the selected error flavours with all engaged real-user flows of the same types and date range. The baseline includes affected flows. Engagement requires a subflow or resolved decision in the flow or a nested flow, matching the time-series engagement=engaged filter. Results show correlation, not causation; flows may carry other errors. Each group includes up to flowLimit flows, newest first (default 5,000; maximum 50,000). When capped, sampled: true means all reported metrics use that sample. analyzedFlowLimit reports the applied cap; flowListID identifies the exact analyzed flows. The baseline completionRate weights rates by the affected group\u0026#x27;s osName/browserName mix. rawCompletionRate reports the unweighted baseline rate. Outcomes skipped, invisible and visible-auto-skip count as other and are excluded from completion rates. Occurrences without flows are reported as orphans and excluded from rates. baseline is absent when no comparable engaged flows exist. Use naive UTC datetimes (YYYY-MM-DDTHH:mm:ss) for the half-open interval [fromDate, toDate), with a maximum range of 30 days. Required API key permission: observe:errorFlavours:read.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://corbado-43.mintlify.site/_mintlify/api/og/v2?division=Error+management\u0026amp;title=Analyze+the+flow+impact+of+error+flavours\u0026amp;description=Compares+completion+for+engaged+real-user+flows+affected+by+the+selected+error+flavours+with%0Aall+engaged+real-user+flows+of+the+same+types+and+date+range.+The+b\u0026amp;theme=46938e1ac6053c91ba042440\u0026amp;signature=e09b11ed91e2640f28f075dfd8f405251188edc5959e6e5d7d90fde2bdb1ea2e\">\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/corbado-43/noBvchxiQo85SoLM/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Corbado docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#184aff\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.corbado.com/api-reference/observe/error-impact\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/observe/error-impact.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.corbado.com/#organization\",\"name\":\"Corbado docs\",\"url\":\"https://docs.corbado.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/corbado-43/uh5IdxgOHQMtEt9x/logo/corbado-logo-light.svg?fit=max\u0026auto=format\u0026n=uh5IdxgOHQMtEt9x\u0026q=85\u0026s=decbc139fa76d9eeee8dcfbe91ed2094\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.corbado.com#website\",\"name\":\"Corbado docs\",\"url\":\"https://docs.corbado.com\",\"publisher\":{\"@id\":\"https://docs.corbado.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.corbado.com/api-reference/observe/error-impact#webpage\",\"url\":\"https://docs.corbado.com/api-reference/observe/error-impact\",\"name\":\"Analyze the flow impact of error flavours\",\"description\":\"Compares completion for engaged real-user flows affected by the selected error flavours with all engaged real-user flows of the same types and date range. The baseline includes affected flows. Engagement requires a subflow or resolved decision in the flow or a nested flow, matching the time-series engagement=engaged filter. Results show correlation, not causation; flows may carry other errors. Each group includes up to flowLimit flows, newest first (default 5,000; maximum 50,000). When capped, sampled: true means all reported metrics use that sample. analyzedFlowLimit reports the applied cap; flowListID identifies the exact analyzed flows. The baseline completionRate weights rates by the affected group's osName/browserName mix. rawCompletionRate reports the unweighted baseline rate. Outcomes skipped, invisible and visible-auto-skip count as other and are excluded from completion rates. Occurrences without flows are reported as orphans and excluded from rates. baseline is absent when no comparable engaged flows exist. Use naive UTC datetimes (YYYY-MM-DDTHH:mm:ss) for the half-open interval [fromDate, toDate), with a maximum range of 30 days. Required API key permission: observe:errorFlavours:read.\",\"dateModified\":\"2026-11-06T15:11:48.678Z\",\"isPartOf\":{\"@id\":\"https://docs.corbado.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.corbado.com/api-reference/observe/error-impact#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.corbado.com/api-reference/observe/error-impact#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Corbado Observe\",\"item\":\"https://docs.corbado.com/api-reference/observe/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"API endpoints\",\"item\":\"https://docs.corbado.com/api-reference/observe/send-events\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Error management\",\"item\":\"https://docs.corbado.com/api-reference/observe/error-flavours\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Analyze the flow impact of error flavours\",\"item\":\"https://docs.corbado.com/api-reference/observe/error-impact\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.corbado.com/api-reference/observe/error-impact#apireference\",\"headline\":\"Analyze the flow impact of error flavours\",\"name\":\"Analyze the flow impact of error flavours\",\"description\":\"Compares completion for engaged real-user flows affected by the selected error flavours with all engaged real-user flows of the same types and date range. The baseline includes affected flows. Engagement requires a subflow or resolved decision in the flow or a nested flow, matching the time-series engagement=engaged filter. Results show correlation, not causation; flows may carry other errors. Each group includes up to flowLimit flows, newest first (default 5,000; maximum 50,000). When capped, sampled: true means all reported metrics use that sample. analyzedFlowLimit reports the applied cap; flowListID identifies the exact analyzed flows. The baseline completionRate weights rates by the affected group's osName/browserName mix. rawCompletionRate reports the unweighted baseline rate. Outcomes skipped, invisible and visible-auto-skip count as other and are excluded from completion rates. Occurrences without flows are reported as orphans and excluded from rates. baseline is absent when no comparable engaged flows exist. Use naive UTC datetimes (YYYY-MM-DDTHH:mm:ss) for the half-open interval [fromDate, toDate), with a maximum range of 30 days. Required API key permission: observe:errorFlavours:read.\",\"url\":\"https://docs.corbado.com/api-reference/observe/error-impact\",\"mainEntityOfPage\":{\"@id\":\"https://docs.corbado.com/api-reference/observe/error-impact#webpage\"},\"dateModified\":\"2026-11-06T15:11:48.678Z\",\"publisher\":{\"@id\":\"https://docs.corbado.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.corbado.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Corbado docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Corbado docs","nav":{"global":{"anchors":[{"anchor":"Community","icon":"slack","href":"https://bit.ly/passkeys-community"},{"anchor":"GitHub","icon":"github","href":"https://github.com/corbado"},{"anchor":"Blog","icon":"newspaper","href":"https://www.corbado.com/blog"}]},"tabs":[{"tab":"Start","pages":[{"title":"Start","href":"/start"}]},{"tab":"Corbado Observe","pages":[{"title":"Corbado Observe","href":"/corbado-observe/overview/welcome"}]},{"tab":"Corbado Connect","pages":[{"title":"Corbado Connect","href":"/corbado-connect/overview/welcome"}]},{"tab":"SDKs","pages":[{"title":"SDKs","href":"/sdks/overview"}]},{"tab":"API Reference","groups":[{"group":"Overview","pages":[{"title":"Corbado Observe and Connect API Reference","sidebarTitle":"Choose an API","href":"/api-reference/overview"}]},{"group":"Corbado Observe","pages":[{"title":"Observe API reference","sidebarTitle":"Overview","href":"/api-reference/observe/overview"},{"title":"Observe API authentication","sidebarTitle":"Authentication","href":"/api-reference/observe/authentication"},{"title":"Observe errors, pagination and limits","sidebarTitle":"Errors and limits","href":"/api-reference/observe/errors"},{"title":"User data export and deletion","sidebarTitle":"User data requests","href":"/api-reference/observe/user-data"},{"group":"API endpoints","pages":[{"group":"Events","pages":[{"title":"Create new events","deprecated":null,"version":null,"sidebarTitle":"Send events","openapi":"/api-reference/openapi/observe.yaml post /observe/events","href":"/api-reference/observe/send-events"},{"title":"Search events by filter criteria","deprecated":null,"version":null,"sidebarTitle":"Search events","openapi":"/api-reference/openapi/observe.yaml post /observe/eventSearch","href":"/api-reference/observe/search-events"},{"title":"Search low-level tracking events by filter criteria","deprecated":null,"version":null,"sidebarTitle":"Search low events","openapi":"/api-reference/openapi/observe.yaml post /observe/trackingEventLowSearch","href":"/api-reference/observe/search-low-events"}]},{"group":"Catalogs and labels","pages":[{"title":"List flow type definitions","deprecated":null,"version":null,"sidebarTitle":"Flow types","openapi":"/api-reference/openapi/observe.yaml get /observe/flowTypeDefinitions","href":"/api-reference/observe/flow-types"},{"title":"List decisions","deprecated":null,"version":null,"sidebarTitle":"Decisions","openapi":"/api-reference/openapi/observe.yaml get /observe/decisions","href":"/api-reference/observe/decisions"},{"title":"List decision variants","deprecated":null,"version":null,"sidebarTitle":"Decision variants","openapi":"/api-reference/openapi/observe.yaml get /observe/decisionVariants","href":"/api-reference/observe/decision-variants"},{"title":"List challenge variants","deprecated":null,"version":null,"sidebarTitle":"Challenge variants","openapi":"/api-reference/openapi/observe.yaml get /observe/challengeVariants","href":"/api-reference/observe/challenge-variants"},{"title":"List applications","deprecated":null,"version":null,"sidebarTitle":"Applications","openapi":"/api-reference/openapi/observe.yaml get /observe/applications","href":"/api-reference/observe/applications"},{"title":"List email domains","deprecated":null,"version":null,"sidebarTitle":"Email domains","openapi":"/api-reference/openapi/observe.yaml get /observe/emailDomains","href":"/api-reference/observe/email-domains"},{"title":"List labels","deprecated":null,"version":null,"sidebarTitle":"Labels","openapi":"/api-reference/openapi/observe.yaml get /observe/labels","href":"/api-reference/observe/labels"},{"title":"Create label","deprecated":null,"version":null,"sidebarTitle":"Create label","openapi":"/api-reference/openapi/observe.yaml post /observe/labels","href":"/api-reference/observe/create-label"},{"title":"Update label","deprecated":null,"version":null,"sidebarTitle":"Update label","openapi":"/api-reference/openapi/observe.yaml put /observe/labels/{labelID}","href":"/api-reference/observe/update-label"},{"title":"Delete label","deprecated":null,"version":null,"sidebarTitle":"Delete label","openapi":"/api-reference/openapi/observe.yaml delete /observe/labels/{labelID}","href":"/api-reference/observe/delete-label"}]},{"group":"Metrics and funnels","pages":[{"title":"Calculate historical metrics for an exact journey position","deprecated":null,"version":null,"sidebarTitle":"Funnel metrics","openapi":"/api-reference/openapi/observe.yaml post /observe/funnel/metricSeries","href":"/api-reference/observe/funnel-metrics"},{"title":"Get project-owned history dictionaries and coverage","deprecated":null,"version":null,"sidebarTitle":"Funnel metadata","openapi":"/api-reference/openapi/observe.yaml get /observe/funnel/metricSeries/metadata","href":"/api-reference/observe/funnel-metadata"},{"title":"Get time series data","deprecated":null,"version":null,"sidebarTitle":"Time series","openapi":"/api-reference/openapi/observe.yaml get /observe/timeSeries","href":"/api-reference/observe/time-series"},{"title":"Get time series totals","deprecated":null,"version":null,"sidebarTitle":"Time series totals","openapi":"/api-reference/openapi/observe.yaml get /observe/timeSeries/totals","href":"/api-reference/observe/time-series-totals"},{"title":"List time-series definitions","deprecated":null,"version":null,"sidebarTitle":"Time series definitions","openapi":"/api-reference/openapi/observe.yaml get /observe/timeSeriesDefinitions","href":"/api-reference/observe/time-series-definitions"}]},{"group":"Data exports","pages":[{"title":"Export time series to downloadable files","deprecated":null,"version":null,"sidebarTitle":"Create time series export","openapi":"/api-reference/openapi/observe.yaml post /observe/timeSeries/export","href":"/api-reference/observe/create-time-series-export"},{"title":"List time series exports","deprecated":null,"version":null,"sidebarTitle":"Time series exports","openapi":"/api-reference/openapi/observe.yaml get /observe/timeSeries/exports","href":"/api-reference/observe/time-series-exports"},{"title":"Get a time series export by ID","deprecated":null,"version":null,"sidebarTitle":"Time series export","openapi":"/api-reference/openapi/observe.yaml get /observe/timeSeries/exports/{exportID}","href":"/api-reference/observe/time-series-export"},{"title":"Get a download link for a time series export file","deprecated":null,"version":null,"sidebarTitle":"Time series export download","openapi":"/api-reference/openapi/observe.yaml get /observe/timeSeries/exports/{exportID}/files/{fileName}/downloadLink","href":"/api-reference/observe/time-series-export-download"},{"title":"List observe table export files","deprecated":null,"version":null,"sidebarTitle":"Table exports","openapi":"/api-reference/openapi/observe.yaml get /observe/tableExports","href":"/api-reference/observe/table-exports"},{"title":"Get observe table export download link","deprecated":null,"version":null,"sidebarTitle":"Table export download","openapi":"/api-reference/openapi/observe.yaml get /observe/tableExports/{filename}/downloadLink","href":"/api-reference/observe/table-export-download"}]},{"group":"User data","pages":[{"title":"Create data deletion jobs","deprecated":null,"version":null,"sidebarTitle":"Delete user data","openapi":"/api-reference/openapi/observe.yaml post /observe/dataDeletionJobs","href":"/api-reference/observe/delete-user-data"},{"title":"Get a data deletion job by ID","deprecated":null,"version":null,"sidebarTitle":"Deletion status","openapi":"/api-reference/openapi/observe.yaml get /observe/dataDeletionJobs/{dataDeletionJobID}","href":"/api-reference/observe/deletion-status"},{"title":"Export observe data by external ID","deprecated":null,"version":null,"sidebarTitle":"Export user","openapi":"/api-reference/openapi/observe.yaml get /observe/dataExports/{externalID}","href":"/api-reference/observe/export-user"}]},{"group":"Metadata","pages":[{"title":"List FIDO MDS authenticator metadata","deprecated":null,"version":null,"sidebarTitle":"Authenticator metadata","openapi":"/api-reference/openapi/observe.yaml get /observe/metadata/mds","href":"/api-reference/observe/authenticator-metadata"},{"title":"List passkey authenticator (AAGUID) metadata","deprecated":null,"version":null,"sidebarTitle":"Passkey authenticator metadata","openapi":"/api-reference/openapi/observe.yaml get /observe/metadata/passkey-aaguid","href":"/api-reference/observe/passkey-authenticator-metadata"}]},{"group":"Saved ID lists","pages":[{"title":"Get Observe ID list","deprecated":null,"version":null,"sidebarTitle":"Id list","openapi":"/api-reference/openapi/observe.yaml get /observe/idLists/{id}","href":"/api-reference/observe/id-list"},{"title":"Create Observe ID list","deprecated":null,"version":null,"sidebarTitle":"Create id list","openapi":"/api-reference/openapi/observe.yaml post /observe/idLists","href":"/api-reference/observe/create-id-list"}]},{"group":"Journeys and users","pages":[{"title":"Search flows by filter criteria","deprecated":null,"version":null,"sidebarTitle":"Search flows","openapi":"/api-reference/openapi/observe.yaml post /observe/flowSearch","href":"/api-reference/observe/search-flows"},{"title":"Search subflows by filter criteria","deprecated":null,"version":null,"sidebarTitle":"Search subflows","openapi":"/api-reference/openapi/observe.yaml post /observe/subFlowSearch","href":"/api-reference/observe/search-subflows"},{"title":"Search flow tags","deprecated":null,"version":null,"sidebarTitle":"Search flow tags","openapi":"/api-reference/openapi/observe.yaml post /observe/flowTagSearch","href":"/api-reference/observe/search-flow-tags"},{"title":"Search users by filter criteria","deprecated":null,"version":null,"sidebarTitle":"Search users","openapi":"/api-reference/openapi/observe.yaml post /observe/userSearch","href":"/api-reference/observe/search-users"},{"title":"Search identifier submissions","deprecated":null,"version":null,"sidebarTitle":"Search identifiers","openapi":"/api-reference/openapi/observe.yaml post /observe/identifierSearch","href":"/api-reference/observe/search-identifiers"},{"title":"Search client environments","deprecated":null,"version":null,"sidebarTitle":"Search client environments","openapi":"/api-reference/openapi/observe.yaml post /observe/clientEnvSearch","href":"/api-reference/observe/search-client-environments"}]},{"group":"Passkey Intelligence","pages":[{"title":"Explain what went wrong for a user","deprecated":null,"version":null,"sidebarTitle":"User diagnosis","openapi":"/api-reference/openapi/observe.yaml post /observe/userDiagnosis","href":"/api-reference/observe/passkey-intelligence/user-diagnosis"},{"title":"Predict the passkey login outcome","deprecated":null,"version":null,"sidebarTitle":"Predict login","openapi":"/api-reference/openapi/observe.yaml post /observe/passkeyIntelligence","href":"/api-reference/observe/passkey-intelligence/predict-login"}]},{"group":"Passkey analysis","pages":[{"title":"List passkey behaviour for a user cohort","deprecated":null,"version":null,"sidebarTitle":"Passkey cohort","openapi":"/api-reference/openapi/observe.yaml post /observe/passkeyCohort","href":"/api-reference/observe/passkey-cohort"},{"title":"Search passkeys","deprecated":null,"version":null,"sidebarTitle":"Search passkeys","openapi":"/api-reference/openapi/observe.yaml post /observe/passkeySearch","href":"/api-reference/observe/search-passkeys"}]},{"group":"Annotations","pages":[{"title":"List annotations","deprecated":null,"version":null,"sidebarTitle":"Annotations","openapi":"/api-reference/openapi/observe.yaml get /observe/annotations","href":"/api-reference/observe/annotations"},{"title":"Create annotation","deprecated":null,"version":null,"sidebarTitle":"Create annotation","openapi":"/api-reference/openapi/observe.yaml post /observe/annotations","href":"/api-reference/observe/create-annotation"},{"title":"Get project memory document","deprecated":null,"version":null,"sidebarTitle":"Annotation document","openapi":"/api-reference/openapi/observe.yaml get /observe/annotations/document","href":"/api-reference/observe/annotation-document"},{"title":"Create or update annotation by external key","deprecated":null,"version":null,"sidebarTitle":"Upsert annotation","openapi":"/api-reference/openapi/observe.yaml put /observe/annotations/byExternalKey/{externalKey}","href":"/api-reference/observe/upsert-annotation"},{"title":"Get annotation","deprecated":null,"version":null,"sidebarTitle":"Get annotation","openapi":"/api-reference/openapi/observe.yaml get /observe/annotations/{annotationID}","href":"/api-reference/observe/get-annotation"},{"title":"Update annotation","deprecated":null,"version":null,"sidebarTitle":"Update annotation","openapi":"/api-reference/openapi/observe.yaml put /observe/annotations/{annotationID}","href":"/api-reference/observe/update-annotation"},{"title":"Delete annotation","deprecated":null,"version":null,"sidebarTitle":"Delete annotation","openapi":"/api-reference/openapi/observe.yaml delete /observe/annotations/{annotationID}","href":"/api-reference/observe/delete-annotation"},{"title":"List annotation history","deprecated":null,"version":null,"sidebarTitle":"List annotation events","openapi":"/api-reference/openapi/observe.yaml get /observe/annotations/{annotationID}/events","href":"/api-reference/observe/list-annotation-events"}]},{"group":"Error management","pages":[{"title":"List error flavours","deprecated":null,"version":null,"sidebarTitle":"Error flavours","openapi":"/api-reference/openapi/observe.yaml get /observe/errorFlavours","href":"/api-reference/observe/error-flavours"},{"title":"Assign error flavours","description":"Bulk-assigns the given error flavours to an error (or unassigns them when errorID is\nomitted). Flavours not belonging to the project are ignored.\n\nAn error never mixes subflow types: the assigned flavours must share one subflow type,\nwhich must match the error's stamped scope (stamped on first assignment, cleared when the\nlast member is unassigned or moved away). Violations return a validation error.\n\nIn projects whose errors follow the error dictionary the target error must have a code, and the\nflavours must carry that code, none, or the `unclassified` fallback (`codeSource` `fallback`, e.g. the\nintegration sent no code). Flavours without a code and fallback flavours take the error's code\n(`codeSource` `manual`) together with the assignment. Unassigning is refused there.\n\nRequired API key permission: `observe:errorFlavours:write`.","deprecated":null,"version":null,"sidebarTitle":"Assign error flavours","openapi":"/api-reference/openapi/observe.yaml patch /observe/errorFlavours","href":"/api-reference/observe/assign-error-flavours"},{"title":"Analyze the flow impact of error flavours","deprecated":null,"version":null,"sidebarTitle":"Error impact","openapi":"/api-reference/openapi/observe.yaml post /observe/errorFlavours/impact","href":"/api-reference/observe/error-impact"},{"title":"List errors","description":"Lists the project's curated errors (the labels flavours are mapped to). Occurrence rollups are computed\nclient-side from the flavour list.\n\nRequired API key permission: `observe:errors:read`.","deprecated":null,"version":null,"sidebarTitle":"Errors list","openapi":"/api-reference/openapi/observe.yaml get /observe/errors","href":"/api-reference/observe/errors-list"},{"title":"Create error","deprecated":null,"version":null,"sidebarTitle":"Create error","openapi":"/api-reference/openapi/observe.yaml post /observe/errors","href":"/api-reference/observe/create-error"},{"title":"Update error","deprecated":null,"version":null,"sidebarTitle":"Update error","openapi":"/api-reference/openapi/observe.yaml put /observe/errors/{errorID}","href":"/api-reference/observe/update-error"},{"title":"Delete error","deprecated":null,"version":null,"sidebarTitle":"Delete error","openapi":"/api-reference/openapi/observe.yaml delete /observe/errors/{errorID}","href":"/api-reference/observe/delete-error"},{"title":"Upsert error recommendation","deprecated":null,"version":null,"sidebarTitle":"Upsert error recommendation","openapi":"/api-reference/openapi/observe.yaml put /observe/errors/{errorID}/recommendation","href":"/api-reference/observe/upsert-error-recommendation"},{"title":"Delete error recommendation","deprecated":null,"version":null,"sidebarTitle":"Delete error recommendation","openapi":"/api-reference/openapi/observe.yaml delete /observe/errors/{errorID}/recommendation","href":"/api-reference/observe/delete-error-recommendation"},{"title":"Create recommendation asset upload","deprecated":null,"version":null,"sidebarTitle":"Create recommendation asset upload","openapi":"/api-reference/openapi/observe.yaml post /observe/errors/{errorID}/recommendation/assets","href":"/api-reference/observe/create-recommendation-asset-upload"},{"title":"Delete recommendation asset","deprecated":null,"version":null,"sidebarTitle":"Delete recommendation asset","openapi":"/api-reference/openapi/observe.yaml delete /observe/errors/{errorID}/recommendation/assets/{assetID}","href":"/api-reference/observe/delete-recommendation-asset"},{"title":"Confirm recommendation asset upload","deprecated":null,"version":null,"sidebarTitle":"Confirm recommendation asset upload","openapi":"/api-reference/openapi/observe.yaml post /observe/errors/{errorID}/recommendation/assets/{assetID}/confirm","href":"/api-reference/observe/confirm-recommendation-asset-upload"},{"title":"Get recommendation asset download URL","deprecated":null,"version":null,"sidebarTitle":"Recommendation asset download","openapi":"/api-reference/openapi/observe.yaml get /observe/errors/{errorID}/recommendation/assets/{assetID}/downloadUrl","href":"/api-reference/observe/recommendation-asset-download"}]},{"group":"ObserveErrorCode","pages":[{"title":"Get the error dictionary","deprecated":null,"version":null,"sidebarTitle":"Error codes","openapi":"/api-reference/openapi/observe.yaml get /observe/errorCodes","href":"/api-reference/observe/error-codes"}]},{"group":"Alert management","pages":[{"title":"Get alerting summary","deprecated":null,"version":null,"sidebarTitle":"Alert summary","openapi":"/api-reference/openapi/observe.yaml get /observe/alertSummary","href":"/api-reference/observe/alert-summary"},{"title":"List alert rules","deprecated":null,"version":null,"sidebarTitle":"Alert rules","openapi":"/api-reference/openapi/observe.yaml get /observe/alertRules","href":"/api-reference/observe/alert-rules"},{"title":"Create alert rule","deprecated":null,"version":null,"sidebarTitle":"Create alert rule","openapi":"/api-reference/openapi/observe.yaml post /observe/alertRules","href":"/api-reference/observe/create-alert-rule"},{"title":"Simulate alert rule","deprecated":null,"version":null,"sidebarTitle":"Simulate alert rule","openapi":"/api-reference/openapi/observe.yaml post /observe/alertRules/simulate","href":"/api-reference/observe/simulate-alert-rule"},{"title":"Get alert rule","deprecated":null,"version":null,"sidebarTitle":"Alert rule","openapi":"/api-reference/openapi/observe.yaml get /observe/alertRules/{alertRuleID}","href":"/api-reference/observe/alert-rule"},{"title":"Update alert rule","deprecated":null,"version":null,"sidebarTitle":"Update alert rule","openapi":"/api-reference/openapi/observe.yaml put /observe/alertRules/{alertRuleID}","href":"/api-reference/observe/update-alert-rule"},{"title":"Delete alert rule","deprecated":null,"version":null,"sidebarTitle":"Delete alert rule","openapi":"/api-reference/openapi/observe.yaml delete /observe/alertRules/{alertRuleID}","href":"/api-reference/observe/delete-alert-rule"},{"title":"Evaluate alert rules","deprecated":null,"version":null,"sidebarTitle":"Evaluate alert rules","openapi":"/api-reference/openapi/observe.yaml post /observe/alerts/evaluate","href":"/api-reference/observe/evaluate-alert-rules"},{"title":"List alert contact points","deprecated":null,"version":null,"sidebarTitle":"Alert contact points","openapi":"/api-reference/openapi/observe.yaml get /observe/alertContactPoints","href":"/api-reference/observe/alert-contact-points"},{"title":"Create alert contact point","deprecated":null,"version":null,"sidebarTitle":"Create alert contact point","openapi":"/api-reference/openapi/observe.yaml post /observe/alertContactPoints","href":"/api-reference/observe/create-alert-contact-point"},{"title":"Get alert contact point","deprecated":null,"version":null,"sidebarTitle":"Alert contact point","openapi":"/api-reference/openapi/observe.yaml get /observe/alertContactPoints/{alertContactPointID}","href":"/api-reference/observe/alert-contact-point"},{"title":"Update alert contact point","deprecated":null,"version":null,"sidebarTitle":"Update alert contact point","openapi":"/api-reference/openapi/observe.yaml put /observe/alertContactPoints/{alertContactPointID}","href":"/api-reference/observe/update-alert-contact-point"},{"title":"Delete alert contact point","deprecated":null,"version":null,"sidebarTitle":"Delete alert contact point","openapi":"/api-reference/openapi/observe.yaml delete /observe/alertContactPoints/{alertContactPointID}","href":"/api-reference/observe/delete-alert-contact-point"},{"title":"Send test notification","deprecated":null,"version":null,"sidebarTitle":"Test alert contact point integration","openapi":"/api-reference/openapi/observe.yaml post /observe/alertContactPoints/{alertContactPointID}/integrations/{alertContactPointIntegrationID}/test","href":"/api-reference/observe/test-alert-contact-point-integration"},{"title":"List alert rule types","deprecated":null,"version":null,"sidebarTitle":"Alert rule types","openapi":"/api-reference/openapi/observe.yaml get /observe/alertRuleTypes","href":"/api-reference/observe/alert-rule-types"},{"title":"List alert rule groups","deprecated":null,"version":null,"sidebarTitle":"Alert rule groups","openapi":"/api-reference/openapi/observe.yaml get /observe/alertRuleGroups","href":"/api-reference/observe/alert-rule-groups"},{"title":"List alert instances","deprecated":null,"version":null,"sidebarTitle":"Alert instances","openapi":"/api-reference/openapi/observe.yaml get /observe/alertInstances","href":"/api-reference/observe/alert-instances"},{"title":"Get alert instance statistics","deprecated":null,"version":null,"sidebarTitle":"Alert instance statistics","openapi":"/api-reference/openapi/observe.yaml get /observe/alertInstanceStatistics","href":"/api-reference/observe/alert-instance-statistics"},{"title":"Get alert firing","deprecated":null,"version":null,"sidebarTitle":"Alert firing","openapi":"/api-reference/openapi/observe.yaml get /observe/alertFirings/{alertFiringID}","href":"/api-reference/observe/alert-firing"},{"title":"Get alert rule statistics","deprecated":null,"version":null,"sidebarTitle":"Alert rule statistics","openapi":"/api-reference/openapi/observe.yaml get /observe/alertRuleStatistics","href":"/api-reference/observe/alert-rule-statistics"},{"title":"List alert evaluations","deprecated":null,"version":null,"sidebarTitle":"Alert evaluations","openapi":"/api-reference/openapi/observe.yaml get /observe/alertEvaluations","href":"/api-reference/observe/alert-evaluations"},{"title":"List alert transitions","deprecated":null,"version":null,"sidebarTitle":"Alert transitions","openapi":"/api-reference/openapi/observe.yaml get /observe/alertTransitions","href":"/api-reference/observe/alert-transitions"},{"title":"List alert notifications","deprecated":null,"version":null,"sidebarTitle":"Alert notifications","openapi":"/api-reference/openapi/observe.yaml get /observe/alertNotifications","href":"/api-reference/observe/alert-notifications"}]},{"group":"Experiments","pages":[{"title":"List experiments","deprecated":null,"version":null,"sidebarTitle":"Experiments","openapi":"/api-reference/openapi/observe.yaml get /observe/experiments","href":"/api-reference/observe/experiments"},{"title":"List experiment runs","deprecated":null,"version":null,"sidebarTitle":"Experiment runs","openapi":"/api-reference/openapi/observe.yaml get /observe/experimentRuns","href":"/api-reference/observe/experiment-runs"},{"title":"Create experiment run","deprecated":null,"version":null,"sidebarTitle":"Create experiment run","openapi":"/api-reference/openapi/observe.yaml post /observe/experimentRuns","href":"/api-reference/observe/create-experiment-run"},{"title":"Update experiment run","deprecated":null,"version":null,"sidebarTitle":"Update experiment run","openapi":"/api-reference/openapi/observe.yaml put /observe/experimentRuns/{experimentRunID}","href":"/api-reference/observe/update-experiment-run"},{"title":"Delete experiment run","deprecated":null,"version":null,"sidebarTitle":"Delete experiment run","openapi":"/api-reference/openapi/observe.yaml delete /observe/experimentRuns/{experimentRunID}","href":"/api-reference/observe/delete-experiment-run"}]}]}]},{"group":"Corbado Connect","pages":[{"title":"Connect API reference","sidebarTitle":"Overview","href":"/api-reference/connect/overview"},{"title":"Connect API authentication","sidebarTitle":"Authentication","href":"/api-reference/connect/authentication"},{"title":"Connect API error types","sidebarTitle":"Error types","href":"/api-reference/connect/error-types"},{"title":"Connect Frontend API","sidebarTitle":"Frontend protocol","href":"/api-reference/connect/frontend"},{"group":"Frontend API","pages":[{"group":"Passkey flows","pages":[{"title":"Initialize connect login","deprecated":null,"version":null,"sidebarTitle":"Initialize connect login","openapi":"/api-reference/openapi/connect-frontend.yaml post /v2/connect/login/init","href":"/api-reference/connect/frontend/corbadoconnect/initialize-connect-login"},{"title":"Start connect login","deprecated":null,"version":null,"sidebarTitle":"Start connect login","openapi":"/api-reference/openapi/connect-frontend.yaml post /v2/connect/login/start","href":"/api-reference/connect/frontend/corbadoconnect/start-connect-login"},{"title":"Finish connect login","deprecated":null,"version":null,"sidebarTitle":"Finish connect login","openapi":"/api-reference/openapi/connect-frontend.yaml post /v2/connect/login/finish","href":"/api-reference/connect/frontend/corbadoconnect/finish-connect-login"},{"title":"Initialize connect append","deprecated":null,"version":null,"sidebarTitle":"Initialize connect append","openapi":"/api-reference/openapi/connect-frontend.yaml post /v2/connect/append/init","href":"/api-reference/connect/frontend/corbadoconnect/initialize-connect-append"},{"title":"Start connect append","deprecated":null,"version":null,"sidebarTitle":"Start connect append","openapi":"/api-reference/openapi/connect-frontend.yaml post /v2/connect/append/start","href":"/api-reference/connect/frontend/corbadoconnect/start-connect-append"},{"title":"Finish connect append","deprecated":null,"version":null,"sidebarTitle":"Finish connect append","openapi":"/api-reference/openapi/connect-frontend.yaml post /v2/connect/append/finish","href":"/api-reference/connect/frontend/corbadoconnect/finish-connect-append"},{"title":"Initialize connect management","deprecated":null,"version":null,"sidebarTitle":"Initialize connect management","openapi":"/api-reference/openapi/connect-frontend.yaml post /v2/connect/manage/init","href":"/api-reference/connect/frontend/corbadoconnect/initialize-connect-management"},{"title":"Delete connect passkey","deprecated":null,"version":null,"sidebarTitle":"Delete connect passkey","openapi":"/api-reference/openapi/connect-frontend.yaml post /v2/connect/manage/delete","href":"/api-reference/connect/frontend/corbadoconnect/delete-connect-passkey"},{"title":"List connect passkeys","deprecated":null,"version":null,"sidebarTitle":"List connect passkeys","openapi":"/api-reference/openapi/connect-frontend.yaml post /v2/connect/manage/list","href":"/api-reference/connect/frontend/corbadoconnect/list-connect-passkeys"},{"title":"Create connect event","deprecated":null,"version":null,"sidebarTitle":"Create connect event","openapi":"/api-reference/openapi/connect-frontend.yaml post /v2/connect/events","href":"/api-reference/connect/frontend/corbadoconnect/create-connect-event"},{"title":"Send low-level Connect events","deprecated":null,"version":null,"sidebarTitle":"Send low-level Connect events","openapi":"/api-reference/openapi/connect-frontend.yaml post /v2/connect/eventsLow","href":"/api-reference/connect/frontend/corbadoconnect/post-v2connecteventslow"},{"title":"Clear connect process","deprecated":null,"version":null,"sidebarTitle":"Clear connect process","openapi":"/api-reference/openapi/connect-frontend.yaml post /v2/connect/process/clear","href":"/api-reference/connect/frontend/corbadoconnect/clear-connect-process"}]},{"group":"App association and keys","pages":[{"title":"Get Android Digital Asset Links","deprecated":null,"version":null,"sidebarTitle":"Get Android Digital Asset Links","openapi":"/api-reference/openapi/connect-frontend.yaml get /.well-known/assetlinks.json","href":"/api-reference/connect/frontend/wellknown/get-well-knownassetlinksjson"},{"title":"Get Apple App Site Association","deprecated":null,"version":null,"sidebarTitle":"Get Apple App Site Association","openapi":"/api-reference/openapi/connect-frontend.yaml get /.well-known/apple-app-site-association","href":"/api-reference/connect/frontend/wellknown/get-well-knownapple-app-site-association"},{"title":"Get project signing keys","deprecated":null,"version":null,"sidebarTitle":"Get project signing keys","openapi":"/api-reference/openapi/connect-frontend.yaml get /.well-known/jwks","href":"/api-reference/connect/frontend/wellknown/get-well-knownjwks"}]}]},{"group":"Backend API","pages":[{"group":"Users and passkeys","pages":[{"title":"List users","deprecated":null,"version":null,"sidebarTitle":"List users","openapi":"/api-reference/openapi/connect-backend.yaml get /users","href":"/api-reference/connect/backend/users/list-users"},{"title":"Create a new user","deprecated":null,"version":null,"sidebarTitle":"Create a new user","openapi":"/api-reference/openapi/connect-backend.yaml post /users","href":"/api-reference/connect/backend/users/create-a-new-user"},{"title":"Retrieve a user","deprecated":null,"version":null,"sidebarTitle":"Retrieve a user","openapi":"/api-reference/openapi/connect-backend.yaml get /users/{userID}","href":"/api-reference/connect/backend/users/retrieve-a-user"},{"title":"Delete a user","deprecated":null,"version":null,"sidebarTitle":"Delete a user","openapi":"/api-reference/openapi/connect-backend.yaml delete /users/{userID}","href":"/api-reference/connect/backend/users/delete-a-user"},{"title":"Update a user","deprecated":null,"version":null,"sidebarTitle":"Update a user","openapi":"/api-reference/openapi/connect-backend.yaml patch /users/{userID}","href":"/api-reference/connect/backend/users/update-a-user"},{"title":"List passkeys for a user","deprecated":null,"version":null,"sidebarTitle":"List passkeys for a user","openapi":"/api-reference/openapi/connect-backend.yaml get /users/{userID}/credentials","href":"/api-reference/connect/backend/users/list-passkeys-for-a-user"},{"title":"Delete a passkey for a user","deprecated":null,"version":null,"sidebarTitle":"Delete a passkey for a user","openapi":"/api-reference/openapi/connect-backend.yaml delete /users/{userID}/credentials/{credentialID}","href":"/api-reference/connect/backend/users/delete-a-passkey-for-a-user"},{"title":"List passkeys for a user including full authenticator data","deprecated":null,"version":null,"sidebarTitle":"List passkeys for a user including full authenticator data","openapi":"/api-reference/openapi/connect-backend.yaml get /users/{userID}/fullCredentials","href":"/api-reference/connect/backend/users/list-passkeys-for-a-user-including-full-authenticator-data"}]},{"group":"Identifiers","pages":[{"title":"Create a login identifier for a user","deprecated":null,"version":null,"sidebarTitle":"Create a login identifier for a user","openapi":"/api-reference/openapi/connect-backend.yaml post /users/{userID}/identifiers","href":"/api-reference/connect/backend/identifiers/create-a-login-identifier-for-a-user"},{"title":"Delete a login identifier for a user","deprecated":null,"version":null,"sidebarTitle":"Delete a login identifier for a user","openapi":"/api-reference/openapi/connect-backend.yaml delete /users/{userID}/identifiers/{identifierID}","href":"/api-reference/connect/backend/identifiers/delete-a-login-identifier-for-a-user"},{"title":"Update a login identifier for a user","deprecated":null,"version":null,"sidebarTitle":"Update a login identifier for a user","openapi":"/api-reference/openapi/connect-backend.yaml patch /users/{userID}/identifiers/{identifierID}","href":"/api-reference/connect/backend/identifiers/update-a-login-identifier-for-a-user"},{"title":"List all login identifiers","deprecated":null,"version":null,"sidebarTitle":"List all login identifiers","openapi":"/api-reference/openapi/connect-backend.yaml get /identifiers","href":"/api-reference/connect/backend/identifiers/list-all-login-identifiers"}]},{"group":"Passkey diagnostics","pages":[{"title":"List all passkey events for a user","deprecated":null,"version":null,"sidebarTitle":"List all passkey events for a user","openapi":"/api-reference/openapi/connect-backend.yaml get /users/{userID}/passkeyEvents","href":"/api-reference/connect/backend/passkeyevents/list-all-passkey-events-for-a-user"},{"title":"Create a passkey event for a user","deprecated":null,"version":null,"sidebarTitle":"Create a passkey event for a user","openapi":"/api-reference/openapi/connect-backend.yaml post /users/{userID}/passkeyEvents","href":"/api-reference/connect/backend/passkeyevents/create-a-passkey-event-for-a-user"},{"title":"Delete a passkey event for a user","deprecated":null,"version":null,"sidebarTitle":"Delete a passkey event for a user","openapi":"/api-reference/openapi/connect-backend.yaml delete /users/{userID}/passkeyEvents/{passkeyEventID}","href":"/api-reference/connect/backend/passkeyevents/delete-a-passkey-event-for-a-user"},{"title":"List all passkey challenges for a user","deprecated":null,"version":null,"sidebarTitle":"List all passkey challenges for a user","openapi":"/api-reference/openapi/connect-backend.yaml get /users/{userID}/passkeyChallenges","href":"/api-reference/connect/backend/passkeychallenges/list-all-passkey-challenges-for-a-user"},{"title":"Update a passkey challenge for a user","deprecated":null,"version":null,"sidebarTitle":"Update a passkey challenge for a user","openapi":"/api-reference/openapi/connect-backend.yaml patch /users/{userID}/passkeyChallenges/{passkeyChallengeID}","href":"/api-reference/connect/backend/passkeychallenges/update-a-passkey-challenge-for-a-user"}]},{"group":"Connect tokens","pages":[{"title":"List all ConnectTokens","deprecated":null,"version":null,"sidebarTitle":"List all connecttokens","openapi":"/api-reference/openapi/connect-backend.yaml get /connectTokens","href":"/api-reference/connect/backend/connecttokens/list-all-connecttokens"},{"title":"Create a connectToken","deprecated":null,"version":null,"sidebarTitle":"Create a connecttoken","openapi":"/api-reference/openapi/connect-backend.yaml post /connectTokens","href":"/api-reference/connect/backend/connecttokens/create-a-connecttoken"},{"title":"Delete a ConnectToken","deprecated":null,"version":null,"sidebarTitle":"Delete a connecttoken","openapi":"/api-reference/openapi/connect-backend.yaml delete /connectTokens/{connectTokenID}","href":"/api-reference/connect/backend/connecttokens/delete-a-connecttoken"},{"title":"Update a ConnectToken","deprecated":null,"version":null,"sidebarTitle":"Update a connecttoken","openapi":"/api-reference/openapi/connect-backend.yaml patch /connectTokens/{connectTokenID}","href":"/api-reference/connect/backend/connecttokens/update-a-connecttoken"}]},{"group":"Passkey ceremonies","pages":[{"title":"Start creating a new passkey","deprecated":null,"version":null,"sidebarTitle":"Start creating a new passkey","openapi":"/api-reference/openapi/connect-backend.yaml post /passkey/append/start","href":"/api-reference/connect/backend/passkeys/start-creating-a-new-passkey"},{"title":"Finish creating a new passkey","deprecated":null,"version":null,"sidebarTitle":"Finish creating a new passkey","openapi":"/api-reference/openapi/connect-backend.yaml post /passkey/append/finish","href":"/api-reference/connect/backend/passkeys/finish-creating-a-new-passkey"},{"title":"Start login with an existing passkey","deprecated":null,"version":null,"sidebarTitle":"Start login with an existing passkey","openapi":"/api-reference/openapi/connect-backend.yaml post /passkey/login/start","href":"/api-reference/connect/backend/passkeys/start-login-with-an-existing-passkey"},{"title":"Finish login with an existing passkey","deprecated":null,"version":null,"sidebarTitle":"Finish login with an existing passkey","openapi":"/api-reference/openapi/connect-backend.yaml post /passkey/login/finish","href":"/api-reference/connect/backend/passkeys/finish-login-with-an-existing-passkey"},{"title":"Verify signedPasskeyData from a passkey login","deprecated":null,"version":null,"sidebarTitle":"Verify signedpasskeydata from a passkey login","openapi":"/api-reference/openapi/connect-backend.yaml post /passkey/verifySignedData","href":"/api-reference/connect/backend/passkeys/verify-signedpasskeydata-from-a-passkey-login"},{"title":"Start login with an existing passkey (Conditional UI)","deprecated":null,"version":null,"sidebarTitle":"Start login with an existing passkey conditional ui","openapi":"/api-reference/openapi/connect-backend.yaml post /passkey/mediation/start","href":"/api-reference/connect/backend/passkeys/start-login-with-an-existing-passkey-conditional-ui"},{"title":"Finish login with an existing passkey (Conditional UI)","deprecated":null,"version":null,"sidebarTitle":"Finish login with an existing passkey conditional ui","openapi":"/api-reference/openapi/connect-backend.yaml post /passkey/mediation/finish","href":"/api-reference/connect/backend/passkeys/finish-login-with-an-existing-passkey-conditional-ui"}]},{"group":"Data exports","pages":[{"title":"List project exports","deprecated":null,"version":null,"sidebarTitle":"List project exports","openapi":"/api-reference/openapi/connect-backend.yaml get /exports/{exportType}","href":"/api-reference/connect/backend/exports/list-project-exports"},{"title":"Get download link for an export file","deprecated":null,"version":null,"sidebarTitle":"Get download link for an export file","openapi":"/api-reference/openapi/connect-backend.yaml get /exports/{exportType}/{filename}/downloadLink","href":"/api-reference/connect/backend/exports/get-download-link-for-an-export-file"}]},{"group":"Analytics and configuration","pages":[{"title":"Get project statistics","deprecated":null,"version":null,"sidebarTitle":"Get project statistics","openapi":"/api-reference/openapi/connect-backend.yaml get /stats","href":"/api-reference/connect/backend/connect-reads/get-stats"},{"title":"Get statistics over time","deprecated":null,"version":null,"sidebarTitle":"Get statistics over time","openapi":"/api-reference/openapi/connect-backend.yaml get /statsByTime","href":"/api-reference/connect/backend/connect-reads/get-statsbytime"},{"title":"List applications","deprecated":null,"version":null,"sidebarTitle":"List applications","openapi":"/api-reference/openapi/connect-backend.yaml get /connect/applications","href":"/api-reference/connect/backend/connect-reads/get-connectapplications"},{"title":"Search Connect processes","deprecated":null,"version":null,"sidebarTitle":"Search Connect processes","openapi":"/api-reference/openapi/connect-backend.yaml post /connect/processSearch","href":"/api-reference/connect/backend/connect-reads/post-connectprocesssearch"},{"title":"Get Connect processes by ID","deprecated":null,"version":null,"sidebarTitle":"Get Connect processes by ID","openapi":"/api-reference/openapi/connect-backend.yaml post /connect/processList","href":"/api-reference/connect/backend/connect-reads/post-connectprocesslist"},{"title":"List process events","deprecated":null,"version":null,"sidebarTitle":"List process events","openapi":"/api-reference/openapi/connect-backend.yaml get /connect/processes/{processID}/events","href":"/api-reference/connect/backend/connect-reads/get-connectprocesses-events"},{"title":"Get process metadata","deprecated":null,"version":null,"sidebarTitle":"Get process metadata","openapi":"/api-reference/openapi/connect-backend.yaml get /connect/processMetadata/{processID}","href":"/api-reference/connect/backend/connect-reads/get-connectprocessmetadata"},{"title":"List subprocesses","deprecated":null,"version":null,"sidebarTitle":"List subprocesses","openapi":"/api-reference/openapi/connect-backend.yaml get /connect/processes/{processID}/subProcesses","href":"/api-reference/connect/backend/connect-reads/get-connectprocesses-subprocesses"},{"title":"List process errors","deprecated":null,"version":null,"sidebarTitle":"List process errors","openapi":"/api-reference/openapi/connect-backend.yaml get /connect/processErrors","href":"/api-reference/connect/backend/connect-reads/get-connectprocesserrors"},{"title":"List error patterns","deprecated":null,"version":null,"sidebarTitle":"List error patterns","openapi":"/api-reference/openapi/connect-backend.yaml get /connect/processErrorPatterns","href":"/api-reference/connect/backend/connect-reads/get-connectprocesserrorpatterns"},{"title":"List devices for multiple users","deprecated":null,"version":null,"sidebarTitle":"List devices for multiple users","openapi":"/api-reference/openapi/connect-backend.yaml post /devices","href":"/api-reference/connect/backend/connect-reads/list-devices-for-multiple-users"},{"title":"List shared devices for a user","deprecated":null,"version":null,"sidebarTitle":"List shared devices for a user","openapi":"/api-reference/openapi/connect-backend.yaml get /sharedDevices","href":"/api-reference/connect/backend/connect-reads/get-shareddevices"},{"title":"List Android app configurations","deprecated":null,"version":null,"sidebarTitle":"List Android app configurations","openapi":"/api-reference/openapi/connect-backend.yaml get /androidappconfig","href":"/api-reference/connect/backend/connect-reads/get-androidappconfig"},{"title":"List Passkey Intelligence rulesets","deprecated":null,"version":null,"sidebarTitle":"List Passkey Intelligence rulesets","openapi":"/api-reference/openapi/connect-backend.yaml get /passkeyIntelligence/{projectID}/rulesetsMetadata","href":"/api-reference/connect/backend/connect-reads/get-passkeyintelligence-rulesetsmetadata"},{"title":"Get a Passkey Intelligence ruleset","deprecated":null,"version":null,"sidebarTitle":"Get a Passkey Intelligence ruleset","openapi":"/api-reference/openapi/connect-backend.yaml get /passkeyIntelligence/{projectID}/rulesets/{rulesetID}","href":"/api-reference/connect/backend/connect-reads/get-passkeyintelligence-rulesets"},{"title":"Get project configuration","deprecated":null,"version":null,"sidebarTitle":"Get project configuration","openapi":"/api-reference/openapi/connect-backend.yaml get /projectConfig","href":"/api-reference/connect/backend/connect-reads/get-projectconfig"}]},{"group":"App configuration","pages":[{"title":"Create an application","deprecated":null,"version":null,"sidebarTitle":"Create an application","openapi":"/api-reference/openapi/connect-backend.yaml post /connect/applications","href":"/api-reference/connect/backend/connectmanagement/post-connectapplications"},{"title":"Create an Android app configuration","deprecated":null,"version":null,"sidebarTitle":"Create an Android app configuration","openapi":"/api-reference/openapi/connect-backend.yaml post /androidappconfig","href":"/api-reference/connect/backend/connectmanagement/post-androidappconfig"},{"title":"Update an application","deprecated":null,"version":null,"sidebarTitle":"Update an application","openapi":"/api-reference/openapi/connect-backend.yaml put /connect/applications/{applicationID}","href":"/api-reference/connect/backend/connectmanagement/put-connectapplications"},{"title":"Delete an application","deprecated":null,"version":null,"sidebarTitle":"Delete an application","openapi":"/api-reference/openapi/connect-backend.yaml delete /connect/applications/{applicationID}","href":"/api-reference/connect/backend/connectmanagement/delete-connectapplications"},{"title":"Update an Android app configuration","deprecated":null,"version":null,"sidebarTitle":"Update an Android app configuration","openapi":"/api-reference/openapi/connect-backend.yaml put /androidappconfig/{androidAppConfigID}","href":"/api-reference/connect/backend/connectmanagement/put-androidappconfig"},{"title":"Delete an Android app configuration","deprecated":null,"version":null,"sidebarTitle":"Delete an Android app configuration","openapi":"/api-reference/openapi/connect-backend.yaml delete /androidappconfig/{androidAppConfigID}","href":"/api-reference/connect/backend/connectmanagement/delete-androidappconfig"},{"title":"Create a Passkey Intelligence ruleset","deprecated":null,"version":null,"sidebarTitle":"Create a Passkey Intelligence ruleset","openapi":"/api-reference/openapi/connect-backend.yaml post /passkeyIntelligence/{projectID}/rulesets","href":"/api-reference/connect/backend/connectmanagement/post-passkeyintelligence-rulesets"},{"title":"Activate a Passkey Intelligence ruleset","deprecated":null,"version":null,"sidebarTitle":"Activate a Passkey Intelligence ruleset","openapi":"/api-reference/openapi/connect-backend.yaml post /passkeyIntelligence/{projectID}/rulesets/{rulesetID}/activate","href":"/api-reference/connect/backend/connectmanagement/post-passkeyintelligence-rulesets-activate"}]},{"group":"Rollout configuration","pages":[{"title":"Get Connect configuration","deprecated":null,"version":null,"sidebarTitle":"Get Connect configuration","openapi":"/api-reference/openapi/connect-backend.yaml get /connect/config","href":"/api-reference/connect/backend/connectrollout/get-connectconfig"},{"title":"Update Connect configuration","deprecated":null,"version":null,"sidebarTitle":"Update Connect configuration","openapi":"/api-reference/openapi/connect-backend.yaml put /connect/config","href":"/api-reference/connect/backend/connectrollout/put-connectconfig"},{"title":"Create Connect configuration","deprecated":null,"version":null,"sidebarTitle":"Create Connect configuration","openapi":"/api-reference/openapi/connect-backend.yaml post /connect/config","href":"/api-reference/connect/backend/connectrollout/post-connectconfig"},{"title":"List rollout rulesets","deprecated":null,"version":null,"sidebarTitle":"List rollout rulesets","openapi":"/api-reference/openapi/connect-backend.yaml get /connect/rulesetsMetadata","href":"/api-reference/connect/backend/connectrollout/get-connectrulesetsmetadata"},{"title":"Create a rollout ruleset","deprecated":null,"version":null,"sidebarTitle":"Create a rollout ruleset","openapi":"/api-reference/openapi/connect-backend.yaml post /connect/rulesets","href":"/api-reference/connect/backend/connectrollout/post-connectrulesets"},{"title":"Get a rollout ruleset","deprecated":null,"version":null,"sidebarTitle":"Get a rollout ruleset","openapi":"/api-reference/openapi/connect-backend.yaml get /connect/rulesets/{rulesetID}","href":"/api-reference/connect/backend/connectrollout/get-connectrulesets"},{"title":"Update a rollout ruleset","deprecated":null,"version":null,"sidebarTitle":"Update a rollout ruleset","openapi":"/api-reference/openapi/connect-backend.yaml patch /connect/rulesets/{rulesetID}","href":"/api-reference/connect/backend/connectrollout/patch-connectrulesets"},{"title":"Activate a rollout ruleset","deprecated":null,"version":null,"sidebarTitle":"Activate a rollout ruleset","openapi":"/api-reference/openapi/connect-backend.yaml post /connect/rulesets/{rulesetID}/activate","href":"/api-reference/connect/backend/connectrollout/post-connectrulesets-activate"},{"title":"List identifier allowlists","deprecated":null,"version":null,"sidebarTitle":"List identifier allowlists","openapi":"/api-reference/openapi/connect-backend.yaml get /connect/identifierWhitelists","href":"/api-reference/connect/backend/connectrollout/get-connectidentifierwhitelists"},{"title":"Create an identifier allowlist","deprecated":null,"version":null,"sidebarTitle":"Create an identifier allowlist","openapi":"/api-reference/openapi/connect-backend.yaml post /connect/identifierWhitelists","href":"/api-reference/connect/backend/connectrollout/post-connectidentifierwhitelists"},{"title":"Update an identifier allowlist","deprecated":null,"version":null,"sidebarTitle":"Update an identifier allowlist","openapi":"/api-reference/openapi/connect-backend.yaml put /connect/identifierWhitelists/{identifierWhitelistID}","href":"/api-reference/connect/backend/connectrollout/put-connectidentifierwhitelists"},{"title":"Delete an identifier allowlist","deprecated":null,"version":null,"sidebarTitle":"Delete an identifier allowlist","openapi":"/api-reference/openapi/connect-backend.yaml delete /connect/identifierWhitelists/{identifierWhitelistID}","href":"/api-reference/connect/backend/connectrollout/delete-connectidentifierwhitelists"},{"title":"List rollout simulations","deprecated":null,"version":null,"sidebarTitle":"List rollout simulations","openapi":"/api-reference/openapi/connect-backend.yaml get /connect/rulesets/{rulesetID}/simulations","href":"/api-reference/connect/backend/connectrollout/get-connectrulesets-simulations"},{"title":"Create a rollout simulation","deprecated":null,"version":null,"sidebarTitle":"Create a rollout simulation","openapi":"/api-reference/openapi/connect-backend.yaml post /connect/rulesets/{rulesetID}/simulations","href":"/api-reference/connect/backend/connectrollout/post-connectrulesets-simulations"},{"title":"Get rollout simulation status","deprecated":null,"version":null,"sidebarTitle":"Get rollout simulation status","openapi":"/api-reference/openapi/connect-backend.yaml get /connect/rulesets/{rulesetID}/simulations/{simulationID}","href":"/api-reference/connect/backend/connectrollout/get-connectrulesets-simulations-1"}]}]}]}]},{"tab":"Passkey UI Flows","pages":[{"title":"Passkey UI Flows","href":"/passkey-ui-flows/overview"}]}]},"basePath":"","title":"Analyze the flow impact of error flavours - Corbado docs","buildId":"dpl_BLQvU86QFwq3AhPofSTw6q8dGWKm","deploymentId":"dpl_BLQvU86QFwq3AhPofSTw6q8dGWKm","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-Myd8dsju.js","utils-C2HkQgW0.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-8rSppmTv.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-B6MjiCFm.js","snippetPresets-DwrSAONL.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-1-a5UQKQ.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-C541m7wZ.js","shallow-CWELCZ77.js","getApiPlaygroundDisplay-CTo5Zn03.js","CodeSnippet-D--dzvnl.js","CodeSnippets-DM3cXEDh.js","Page-CxAy5y67.js","getPastedJson-C-VECgcL.js","icon-BPq2-Mg3.js","MethodPill-D9J5cUHd.js","DuplicateIcon-BqHaxUnD.js","createIcon-CIbcZHp9.js","DynamicMarkdown-BKiHAm_d.js","SectionHeading-DstQXt3H.js","axios-vUo_bRtp.js","Markdown-CpxgzsKA.js","clsx-C5EfhVm0.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CJ9Oly2E.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-Mk6P3qvh.js"]}