Recommends how to route a passkey login before the browser opens the passkey prompt: start normally
(local), prepare the user to sign in with a phone (phone), try once (try-once) or use another
sign-in method (fallback). Call server to server from your identity provider or login backend
after identifying the account.
This feature is available as an add-on and requires activation for your project. To enable it,
contact support@corbado.com.
Send the Observe context from the login browser unchanged, for example the value of its
cbo_observe_context cookie, and the account’s credential IDs. Registration details are optional.
At least one credential is required; each credential array accepts at most 50 entries.
When device information is unavailable, the response has verdict: local,
reason: session-not-ready and environment.source: none. In that case, or without an Observe
context, continue with your existing login behavior. Set a bounded HTTP timeout and continue with
that same behavior on errors or timeouts; do not wait for retries of this call during the login.
The verdict is a recommendation, not a guarantee of passkey availability. Apply retryPolicy to
passkey attempts, not HTTP requests. See Prevent failed passkey logins
for integration steps and the PingAM example.
Required API key permission: observe:passkeys: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.
Body
application/json
Send the user's passkeys either as plain IDs (credentialIDs) or with what the identity provider stored at
registration (credentials), or both; at least one credential is required. Every field beyond the credential
ID is optional and only fills what Observe does not know itself.
Opaque Observe context from the login browser, for example its cbo_observe_context cookie value.
Pass it unchanged; do not construct or decode it. Without it, skip this call and continue with your
existing login behavior. Maximum 1024 characters.
The user's passkeys with the registration data the identity provider stored. Use instead of or together
with credentialIDs; for the same credential ID these details are used. At most 50 entries.
Show child attributes
Response
Login recommendation, reason, passkey retry policy and device-information source.
Recommended route: local starts the passkey login normally; phone prepares the user for a phone
and QR code; try-once allows one attempt with the fallback visible; fallback starts another
sign-in method. For reason: session-not-ready, retain your existing login behavior.
{"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":"6aee063b4348304151cb64f0","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/passkey-intelligence/predict-login","slug":"/api-reference/observe/passkey-intelligence/predict-login","pageMetadata":{"title":"Predict the passkey login outcome","description":"Recommends how to route a passkey login before the browser opens the passkey prompt: start normally\n(`local`), prepare the user to sign in with a phone (`phone`), try once (`try-once`) or use another\nsign-in method (`fallback`). Call server to server from your identity provider or login backend\nafter identifying the account.\n\nThis feature is available as an add-on and requires activation for your project. To enable it,\ncontact [support@corbado.com](mailto:support@corbado.com).\n\nSend the Observe context from the login browser unchanged, for example the value of its\n`cbo_observe_context` cookie, and the account's credential IDs. Registration details are optional.\nAt least one credential is required; each credential array accepts at most 50 entries.\n\nWhen device information is unavailable, the response has `verdict: local`,\n`reason: session-not-ready` and `environment.source: none`. In that case, or without an Observe\ncontext, continue with your existing login behavior. Set a bounded HTTP timeout and continue with\nthat same behavior on errors or timeouts; do not wait for retries of this call during the login.\n\nThe verdict is a recommendation, not a guarantee of passkey availability. Apply `retryPolicy` to\npasskey attempts, not HTTP requests. See [Prevent failed passkey logins](/corbado-observe/passkey-intelligence/prevent-failed-logins)\nfor integration steps and the PingAM example.\n\nRequired API key permission: `observe:passkeys:read`.","deprecated":null,"version":null,"sidebarTitle":"Predict login","openapi":"/api-reference/openapi/observe.yaml post /observe/passkeyIntelligence","href":"/api-reference/observe/passkey-intelligence/predict-login","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 a: \"a\",\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Recommends how to route a passkey login before the browser opens the passkey prompt: start normally\\n(\", _jsx(_components.code, {\n children: \"local\"\n }), \"), prepare the user to sign in with a phone (\", _jsx(_components.code, {\n children: \"phone\"\n }), \"), try once (\", _jsx(_components.code, {\n children: \"try-once\"\n }), \") or use another\\nsign-in method (\", _jsx(_components.code, {\n children: \"fallback\"\n }), \"). Call server to server from your identity provider or login backend\\nafter identifying the account.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"This feature is available as an add-on and requires activation for your project. To enable it,\\ncontact \", _jsx(_components.a, {\n href: \"mailto:support@corbado.com\",\n children: \"support@corbado.com\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Send the Observe context from the login browser unchanged, for example the value of its\\n\", _jsx(_components.code, {\n children: \"cbo_observe_context\"\n }), \" cookie, and the account’s credential IDs. Registration details are optional.\\nAt least one credential is required; each credential array accepts at most 50 entries.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"When device information is unavailable, the response has \", _jsx(_components.code, {\n children: \"verdict: local\"\n }), \",\\n\", _jsx(_components.code, {\n children: \"reason: session-not-ready\"\n }), \" and \", _jsx(_components.code, {\n children: \"environment.source: none\"\n }), \". In that case, or without an Observe\\ncontext, continue with your existing login behavior. Set a bounded HTTP timeout and continue with\\nthat same behavior on errors or timeouts; do not wait for retries of this call during the login.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The verdict is a recommendation, not a guarantee of passkey availability. Apply \", _jsx(_components.code, {\n children: \"retryPolicy\"\n }), \" to\\npasskey attempts, not HTTP requests. See \", _jsx(_components.a, {\n href: \"/corbado-observe/passkey-intelligence/prevent-failed-logins\",\n children: \"Prevent failed passkey logins\"\n }), \"\\nfor integration steps and the PingAM example.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Required API key permission: \", _jsx(_components.code, {\n children: \"observe:passkeys: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":"Predict the passkey login outcome","description":"Recommends how to route a passkey login before the browser opens the passkey prompt: start normally\n(`local`), prepare the user to sign in with a phone (`phone`), try once (`try-once`) or use another\nsign-in method (`fallback`). Call server to server from your identity provider or login backend\nafter identifying the account.\n\nThis feature is available as an add-on and requires activation for your project. To enable it,\ncontact [support@corbado.com](mailto:support@corbado.com).\n\nSend the Observe context from the login browser unchanged, for example the value of its\n`cbo_observe_context` cookie, and the account's credential IDs. Registration details are optional.\nAt least one credential is required; each credential array accepts at most 50 entries.\n\nWhen device information is unavailable, the response has `verdict: local`,\n`reason: session-not-ready` and `environment.source: none`. In that case, or without an Observe\ncontext, continue with your existing login behavior. Set a bounded HTTP timeout and continue with\nthat same behavior on errors or timeouts; do not wait for retries of this call during the login.\n\nThe verdict is a recommendation, not a guarantee of passkey availability. Apply `retryPolicy` to\npasskey attempts, not HTTP requests. See [Prevent failed passkey logins](/corbado-observe/passkey-intelligence/prevent-failed-logins)\nfor integration steps and the PingAM example.\n\nRequired API key permission: `observe:passkeys:read`.","deprecated":null,"version":null,"sidebarTitle":"Predict login","openapi":"/api-reference/openapi/observe.yaml post /observe/passkeyIntelligence","href":"/api-reference/observe/passkey-intelligence/predict-login","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/passkey-intelligence/predict-login"},"summary":"Predict the passkey login outcome","description":"Recommends how to route a passkey login before the browser opens the passkey prompt: start normally\n(`local`), prepare the user to sign in with a phone (`phone`), try once (`try-once`) or use another\nsign-in method (`fallback`). Call server to server from your identity provider or login backend\nafter identifying the account.\n\nThis feature is available as an add-on and requires activation for your project. To enable it,\ncontact [support@corbado.com](mailto:support@corbado.com).\n\nSend the Observe context from the login browser unchanged, for example the value of its\n`cbo_observe_context` cookie, and the account's credential IDs. Registration details are optional.\nAt least one credential is required; each credential array accepts at most 50 entries.\n\nWhen device information is unavailable, the response has `verdict: local`,\n`reason: session-not-ready` and `environment.source: none`. In that case, or without an Observe\ncontext, continue with your existing login behavior. Set a bounded HTTP timeout and continue with\nthat same behavior on errors or timeouts; do not wait for retries of this call during the login.\n\nThe verdict is a recommendation, not a guarantee of passkey availability. Apply `retryPolicy` to\npasskey attempts, not HTTP requests. See [Prevent failed passkey logins](/corbado-observe/passkey-intelligence/prevent-failed-logins)\nfor integration steps and the PingAM example.\n\nRequired API key permission: `observe:passkeys:read`.","operationId":"ObservePasskeyIntelligenceEvaluate","tags":["ObservePasskeyIntelligence"],"security":["bf3998e5-ae18-4228-89e8-626d45351117"],"requestBody":"29366955-1413-4d85-a9ec-5ada5a2d029d","responses":{"200":"7a5cfd06-434f-4418-b77a-0495b8511fcb","default":"9751f052-bed8-4f78-8394-1546871b149f"},"method":"post","type":"path","servers":["05fb956f-32bf-4510-be4f-241f5a16fc26"],"path":"/observe/passkeyIntelligence","baseUrlOptions":["https://api.cloud.corbado.io/v1"],"title":"Predict the passkey login outcome","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["observeContext"],"description":"Send the user's passkeys either as plain IDs (`credentialIDs`) or with what the identity provider stored at\nregistration (`credentials`), or both; at least one credential is required. Every field beyond the credential\nID is optional and only fills what Observe does not know itself.","properties":{"observeContext":{"type":"string","description":"Opaque Observe context from the login browser, for example its `cbo_observe_context` cookie value.\nPass it unchanged; do not construct or decode it. Without it, skip this call and continue with your\nexisting login behavior. Maximum 1024 characters.","x-oapi-codegen-extra-tags":{"validate":"required,min=1,max=1024"},"isRequired":true,"uniqueKey":"observeContext","typeLabel":"string"},"credentialIDs":{"type":"array","description":"Base64url or base64 credential IDs of the account's passkeys. At most 50 entries, each up to 1400 characters.","items":{"type":"string","uniqueKey":"credentialIDs.items.[INDEX]","typeLabel":"string"},"x-oapi-codegen-extra-tags":{"validate":"omitempty,max=50,dive,min=1,max=1400"},"uniqueKey":"credentialIDs","typeLabel":"string[]"},"credentials":{"type":"array","description":"The user's passkeys with the registration data the identity provider stored. Use instead of or together\nwith `credentialIDs`; for the same credential ID these details are used. At most 50 entries.","items":{"type":"object","required":["credentialID"],"properties":{"credentialID":{"type":"string","description":"Base64url (or base64) credential ID.","x-oapi-codegen-extra-tags":{"validate":"required,min=1,max=1400"},"isRequired":true,"uniqueKey":"credentials.items.[INDEX].credentialID","typeLabel":"string"},"transports":{"type":"array","description":"Transports stored for the passkey at registration (`getTransports()`), such as `internal` or `hybrid`.","items":{"type":"string","uniqueKey":"credentials.items.[INDEX].transports.items.[INDEX]","typeLabel":"string"},"x-oapi-codegen-extra-tags":{"validate":"omitempty,max=8,dive,min=1,max=32"},"uniqueKey":"credentials.items.[INDEX].transports","typeLabel":"string[]"},"backupEligible":{"type":"boolean","description":"Backup eligibility (BE) flag of the authenticator data at registration.","uniqueKey":"credentials.items.[INDEX].backupEligible","typeLabel":"boolean"},"aaguid":{"type":"string","description":"Authenticator AAGUID from the attestation at registration.","x-oapi-codegen-extra-tags":{"validate":"omitempty,uuid"},"uniqueKey":"credentials.items.[INDEX].aaguid","typeLabel":"string"},"registrationUserAgent":{"type":"string","description":"User agent of the request that registered the passkey.","x-oapi-codegen-extra-tags":{"validate":"omitempty,max=1000"},"uniqueKey":"credentials.items.[INDEX].registrationUserAgent","typeLabel":"string"}},"uniqueKey":"credentials.items.[INDEX]","typeLabel":"object"},"x-oapi-codegen-extra-tags":{"validate":"omitempty,max=50,dive"},"uniqueKey":"credentials","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"observeContext":"\u003cstring>","credentialIDs":["\u003cstring>"],"credentials":[{"credentialID":"\u003cstring>","transports":["\u003cstring>"],"backupEligible":true,"aaguid":"\u003cstring>","registrationUserAgent":"\u003cstring>"}]}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"7a5cfd06-434f-4418-b77a-0495b8511fcb":{"description":"Login recommendation, reason, passkey retry policy and device-information source.","content":{"application/json":{"schema":{"type":"object","required":["verdict","reason","retryPolicy","environment"],"example":{"verdict":"phone","reason":"phone-needed","retryPolicy":{"maxTries":3,"switchAfterInstantFailure":true},"environment":{"source":"session"}},"properties":{"verdict":{"type":"string","description":"Recommended route: `local` starts the passkey login normally; `phone` prepares the user for a phone\nand QR code; `try-once` allows one attempt with the fallback visible; `fallback` starts another\nsign-in method. For `reason: session-not-ready`, retain your existing login behavior.","enum":["local","phone","try-once","fallback"],"isRequired":true,"uniqueKey":"verdict","typeLabel":"enum\u003cstring>"},"reason":{"type":"string","description":"Why this route is recommended. Route by `verdict`; use `reason` for wording and reporting. More\nreasons may be added.\n\n| Verdict | Reason | Meaning |\n|---|---|---|\n| `local` | `passkey-on-this-device` | A passkey is expected on this device. |\n| `local` | `phone-possible` | A passkey may be here or on a phone; start normally, do not announce a phone. |\n| `local` | `session-not-ready` | No device information yet: continue with your existing login behavior. |\n| `phone` | `phone-needed` | The passkey is most likely on a phone: prepare the user for a QR code. |\n| `try-once` | `uncertain` | The passkey may not work here: allow one attempt with the fallback visible. |\n| `fallback` | `passkey-not-on-this-device` | None of the passkeys can be used on this device. |\n| `fallback` | `bluetooth-off` | The passkey is on a phone and this computer reports Bluetooth off; the user may turn it on. |\n| `fallback` | `phone-sign-in-unavailable` | The passkey is on a phone and this browser offers no sign-in with a phone. |\n| `fallback` | `no-passkey-support` | This device cannot use passkeys. |\n| `fallback` | `in-app-browser` | The login runs in a browser embedded in another app. |\n| `fallback` | `failed-on-this-device` | Recent passkey attempts of this account failed on this device. |","isRequired":true,"uniqueKey":"reason","typeLabel":"string"},"retryPolicy":{"type":"object","required":["maxTries","switchAfterInstantFailure"],"properties":{"maxTries":{"type":"integer","description":"Passkey tries before switching to the fallback (0 = start with the fallback).","isRequired":true,"uniqueKey":"retryPolicy.maxTries","typeLabel":"integer"},"switchAfterInstantFailure":{"type":"boolean","description":"Switch to the fallback after a failure within 3 seconds.","isRequired":true,"uniqueKey":"retryPolicy.switchAfterInstantFailure","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"retryPolicy","typeLabel":"object"},"environment":{"type":"object","required":["source"],"properties":{"source":{"type":"string","description":"Source of the device information used for the recommendation: `session` uses the current browser\nsession, `clientEnv` uses information from an earlier visit on the device and `none` means no\ndevice information is available. With `none`, retain your existing login behavior.","enum":["session","clientEnv","none"],"isRequired":true,"uniqueKey":"environment.source","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"environment","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"verdict":"phone","reason":"phone-needed","retryPolicy":{"maxTries":3,"switchAfterInstantFailure":true},"environment":{"source":"session"}}}},"exampleType":"generated"}},"exampleType":"generated"},"9751f052-bed8-4f78-8394-1546871b149f":{"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":{"bf3998e5-ae18-4228-89e8-626d45351117":{"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:passkeys:read"],"schemeName":"bearerAuth"}}},"servers":{"05fb956f-32bf-4510-be4f-241f5a16fc26":{"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:passkeys: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":"Predict the passkey login outcome - Corbado docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-06T16:54:33.408Z","originalFileLocation":"api-reference/observe/passkey-intelligence/predict-login.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=\"Recommends how to route a passkey login before the browser opens the passkey prompt: start normally (local), prepare the user to sign in with a phone (phone), try once (try-once) or use another sign-in method (fallback). Call server to server from your identity provider or login backend after identifying the account. This feature is available as an add-on and requires activation for your project. To enable it, contact support@corbado.com. Send the Observe context from the login browser unchanged, for example the value of its cbo_observe_context cookie, and the account\u0026#x27;s credential IDs. Registration details are optional. At least one credential is required; each credential array accepts at most 50 entries. When device information is unavailable, the response has verdict: local, reason: session-not-ready and environment.source: none. In that case, or without an Observe context, continue with your existing login behavior. Set a bounded HTTP timeout and continue with that same behavior on errors or timeouts; do not wait for retries of this call during the login. The verdict is a recommendation, not a guarantee of passkey availability. Apply retryPolicy to passkey attempts, not HTTP requests. See Prevent failed passkey logins for integration steps and the PingAM example. Required API key permission: observe:passkeys: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=\"Predict the passkey login outcome - Corbado docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Recommends how to route a passkey login before the browser opens the passkey prompt: start normally (local), prepare the user to sign in with a phone (phone), try once (try-once) or use another sign-in method (fallback). Call server to server from your identity provider or login backend after identifying the account. This feature is available as an add-on and requires activation for your project. To enable it, contact support@corbado.com. Send the Observe context from the login browser unchanged, for example the value of its cbo_observe_context cookie, and the account\u0026#x27;s credential IDs. Registration details are optional. At least one credential is required; each credential array accepts at most 50 entries. When device information is unavailable, the response has verdict: local, reason: session-not-ready and environment.source: none. In that case, or without an Observe context, continue with your existing login behavior. Set a bounded HTTP timeout and continue with that same behavior on errors or timeouts; do not wait for retries of this call during the login. The verdict is a recommendation, not a guarantee of passkey availability. Apply retryPolicy to passkey attempts, not HTTP requests. See Prevent failed passkey logins for integration steps and the PingAM example. Required API key permission: observe:passkeys: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/passkey-intelligence/predict-login\">\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=Passkey+Intelligence\u0026amp;title=Predict+the+passkey+login+outcome\u0026amp;description=Recommends+how+to+route+a+passkey+login+before+the+browser+opens+the+passkey+prompt%3A+start+normally%0A%28%60local%60%29%2C+prepare+the+user+to+sign+in+with+a+phone+%28%60phone%60\u0026amp;theme=46938e1ac6053c91ba042440\u0026amp;signature=571f1caf5f183efce4d7e5208c331f3600cc912e626efe29f127032f1a64d316\">\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=\"Predict the passkey login outcome - Corbado docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Recommends how to route a passkey login before the browser opens the passkey prompt: start normally (local), prepare the user to sign in with a phone (phone), try once (try-once) or use another sign-in method (fallback). Call server to server from your identity provider or login backend after identifying the account. This feature is available as an add-on and requires activation for your project. To enable it, contact support@corbado.com. Send the Observe context from the login browser unchanged, for example the value of its cbo_observe_context cookie, and the account\u0026#x27;s credential IDs. Registration details are optional. At least one credential is required; each credential array accepts at most 50 entries. When device information is unavailable, the response has verdict: local, reason: session-not-ready and environment.source: none. In that case, or without an Observe context, continue with your existing login behavior. Set a bounded HTTP timeout and continue with that same behavior on errors or timeouts; do not wait for retries of this call during the login. The verdict is a recommendation, not a guarantee of passkey availability. Apply retryPolicy to passkey attempts, not HTTP requests. See Prevent failed passkey logins for integration steps and the PingAM example. Required API key permission: observe:passkeys:read.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://corbado-43.mintlify.site/_mintlify/api/og/v2?division=Passkey+Intelligence\u0026amp;title=Predict+the+passkey+login+outcome\u0026amp;description=Recommends+how+to+route+a+passkey+login+before+the+browser+opens+the+passkey+prompt%3A+start+normally%0A%28%60local%60%29%2C+prepare+the+user+to+sign+in+with+a+phone+%28%60phone%60\u0026amp;theme=46938e1ac6053c91ba042440\u0026amp;signature=571f1caf5f183efce4d7e5208c331f3600cc912e626efe29f127032f1a64d316\">\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/passkey-intelligence/predict-login\">\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/passkey-intelligence/predict-login.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/passkey-intelligence/predict-login#webpage\",\"url\":\"https://docs.corbado.com/api-reference/observe/passkey-intelligence/predict-login\",\"name\":\"Predict the passkey login outcome\",\"description\":\"Recommends how to route a passkey login before the browser opens the passkey prompt: start normally (local), prepare the user to sign in with a phone (phone), try once (try-once) or use another sign-in method (fallback). Call server to server from your identity provider or login backend after identifying the account. This feature is available as an add-on and requires activation for your project. To enable it, contact support@corbado.com. Send the Observe context from the login browser unchanged, for example the value of its cbo_observe_context cookie, and the account's credential IDs. Registration details are optional. At least one credential is required; each credential array accepts at most 50 entries. When device information is unavailable, the response has verdict: local, reason: session-not-ready and environment.source: none. In that case, or without an Observe context, continue with your existing login behavior. Set a bounded HTTP timeout and continue with that same behavior on errors or timeouts; do not wait for retries of this call during the login. The verdict is a recommendation, not a guarantee of passkey availability. Apply retryPolicy to passkey attempts, not HTTP requests. See Prevent failed passkey logins for integration steps and the PingAM example. Required API key permission: observe:passkeys:read.\",\"dateModified\":\"2026-11-06T16:54:33.408Z\",\"isPartOf\":{\"@id\":\"https://docs.corbado.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.corbado.com/api-reference/observe/passkey-intelligence/predict-login#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.corbado.com/api-reference/observe/passkey-intelligence/predict-login#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\":\"Passkey Intelligence\",\"item\":\"https://docs.corbado.com/api-reference/observe/passkey-intelligence/user-diagnosis\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Predict the passkey login outcome\",\"item\":\"https://docs.corbado.com/api-reference/observe/passkey-intelligence/predict-login\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.corbado.com/api-reference/observe/passkey-intelligence/predict-login#apireference\",\"headline\":\"Predict the passkey login outcome\",\"name\":\"Predict the passkey login outcome\",\"description\":\"Recommends how to route a passkey login before the browser opens the passkey prompt: start normally (local), prepare the user to sign in with a phone (phone), try once (try-once) or use another sign-in method (fallback). Call server to server from your identity provider or login backend after identifying the account. This feature is available as an add-on and requires activation for your project. To enable it, contact support@corbado.com. Send the Observe context from the login browser unchanged, for example the value of its cbo_observe_context cookie, and the account's credential IDs. Registration details are optional. At least one credential is required; each credential array accepts at most 50 entries. When device information is unavailable, the response has verdict: local, reason: session-not-ready and environment.source: none. In that case, or without an Observe context, continue with your existing login behavior. Set a bounded HTTP timeout and continue with that same behavior on errors or timeouts; do not wait for retries of this call during the login. The verdict is a recommendation, not a guarantee of passkey availability. Apply retryPolicy to passkey attempts, not HTTP requests. See Prevent failed passkey logins for integration steps and the PingAM example. Required API key permission: observe:passkeys:read.\",\"url\":\"https://docs.corbado.com/api-reference/observe/passkey-intelligence/predict-login\",\"mainEntityOfPage\":{\"@id\":\"https://docs.corbado.com/api-reference/observe/passkey-intelligence/predict-login#webpage\"},\"dateModified\":\"2026-11-06T16:54:33.408Z\",\"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","description":"Explains a user's passkey sign-in or passkey creation attempt for support. Returns what happened,\nthe next step, the supporting signals and whether the user subsequently completed the journey.\n\nThis feature is available as an add-on and requires activation for your project. To enable it,\ncontact [support@corbado.com](mailto:support@corbado.com).\n\nSend the Observe `userID`. By default, the latest supported attempt is selected, excluding silent\nbackground checks. Set `onlyFailed` to `true` to select the latest unsuccessful attempt, or send\n`actionID` to explain a specific attempt. The recovery window defaults to 60 minutes and can be\nbetween 1 and 10080 minutes.\n\nCheck `diagnosis.status` before displaying an answer: `explained` and `worked` include an answer;\n`no-case-matched`, `no-supported-action` and `no-actions` indicate that no explanation is available.\nAn unknown user returns HTTP 404. See [Support diagnosis](/corbado-observe/passkey-intelligence/support)\nfor the support workflow.\n\nRequired API key permission: `observe:user:read`.","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","description":"Returns a raw (non-aggregated) per-user list of passkey behaviour for a cohort of confirmed users defined by creation time window (fromMs/toMs) and capped at maxGroupSize. Each entry carries the user's passkeys plus compact passkey login/enrollment outcome summaries, so the caller can categorise passkey enablement client-side. Scoped to the project of the bearer token.\n\nRequired API key permission: `observe:passkeys:read`.","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","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","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":"Predict the passkey login outcome - 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"]}