{"docsConfig":{"theme":"maple","$schema":"https://mintlify.com/docs.json","name":"Authsignal","colors":{"primary":"#8b7bff","light":"#8b7bff","dark":"#8b7bff"},"logo":{"light":"https://mintcdn.com/authsignal-23/Q2QPBK1EKmJpLovY/logo/light.png?fit=max\u0026auto=format\u0026n=Q2QPBK1EKmJpLovY\u0026q=85\u0026s=8c4bd51abfac23972d75d85678c2f1ed","dark":"https://mintcdn.com/authsignal-23/Q2QPBK1EKmJpLovY/logo/dark.png?fit=max\u0026auto=format\u0026n=Q2QPBK1EKmJpLovY\u0026q=85\u0026s=275e53c69fb0a7eff954a0d2ed3421a2"},"favicon":"https://mintcdn.com/authsignal-23/LJehOZQCDC4ES5ZZ/favicon.png?fit=max\u0026auto=format\u0026n=LJehOZQCDC4ES5ZZ\u0026q=85\u0026s=5a39c31db14fe195577d579ebd367170","api":{"openapi":["terminal-api.json","management-api.json","server-api.json","client-api.json","call-connect-api.json"],"playground":{"display":"simple"},"mdx":{"server":["https://api.authsignal.com/v1","https://au.api.authsignal.com/v1","https://eu.api.authsignal.com/v1","https://ca.api.authsignal.com/v1","https://uk.api.authsignal.com/v1"]}},"appearance":{"default":"light"},"background":{"decoration":"gradient"},"footer":{"socials":{"x":"https://x.com/authsignal?lang=en","linkedin":"https://www.linkedin.com/company/authsignal","github":"https://github.com/authsignal"}},"seo":{"metatags":{"description":"Learn how to integrate with Authsignal.","canonical":"https://docs.authsignal.com"},"indexing":"navigable"},"integrations":{"gtm":{"tagId":"GTM-MZPJQQSP"}},"contextual":{"options":["copy","chatgpt","claude"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"authsignal-23","hasAudioNarration":false,"actualSubdomain":"authsignal-23","customDomains":["docs.authsignal.com"],"gitSource":{"type":"github","owner":"authsignal","repo":"authsignal-api-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"feedback":{"thumbs":true,"edits":false},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af0e1e381c47cb9967dc89d","clientVersion":"0.0.4088","searchFilterCounts":[{"language":"default","tag":"API reference","count":116},{"language":"default","tag":"Documentation","count":81},{"language":"default","tag":"Management API","count":44},{"language":"default","tag":"SDKs","count":36},{"language":"default","tag":"Client API","count":32},{"language":"default","tag":"Server API","count":29},{"language":"default","tag":"Integrations","count":28},{"language":"default","tag":"Client","count":26},{"language":"default","tag":"Knowledge base","count":24},{"language":"default","tag":"Webhooks","count":18}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"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":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"styles/style.css","content":".action-state-pill{border-radius:9999px;padding:0.125rem 0.625rem;font-size:0.75rem;font-weight:500;line-height:1rem;color:#1f2937;background-color:#f3f4f6}.action-state-pill__CHALLENGE_FAILED{background-color:#fdd8d8;color:#611919}.action-state-pill__BLOCK{background-color:#f88b8b;color:#611919}.action-state-pill__CHALLENGE_REQUIRED{background-color:#fef4da;color:#64501d}.action-state-pill__CHALLENGE_SUCCEEDED{background-color:#daf5e7;color:#1c5135}.action-state-pill__REVIEW_REQUIRED{background-color:#d8e5fd;color:#063e5d}.action-state-pill__REVIEW_SUCCEEDED{background-color:#daf5e7;color:#1c5135}.action-state-pill__REVIEW_FAILED{background-color:#fdd8d8;color:#611919}.action-state-pill__ALLOW{background-color:#8fe0b6;color:#1c5135}.w-500{width:500px}.w-400{width:400px}.w-300{width:300px}.rl-timeline{--rl-surface: #fafafa;--rl-border: #e4e4e7;--rl-axis: #a1a1aa;--rl-muted: #71717a;--rl-blocked-band: rgba(245, 158, 11, 0.25);--rl-lane-rail: rgba(113, 113, 122, 0.12);--rl-lane-band: rgba(245, 158, 11, 0.45);--rl-error-fill: #fde2e2;--rl-error-stroke: #e8a0a0;--rl-blocked-fill: #fef3c7;--rl-blocked-stroke: #d9a43a;--rl-success-fill: #dcfce7;--rl-success-stroke: #6cc28a;margin:1.5rem 0}.dark .rl-timeline{--rl-surface: rgba(255, 255, 255, 0.03);--rl-border: rgba(255, 255, 255, 0.1);--rl-axis: #71717a;--rl-muted: #a1a1aa;--rl-blocked-band: rgba(251, 191, 36, 0.25);--rl-lane-rail: rgba(255, 255, 255, 0.06);--rl-lane-band: rgba(251, 191, 36, 0.4);--rl-error-fill: rgba(248, 113, 113, 0.25);--rl-error-stroke: #f87171;--rl-blocked-fill: rgba(251, 191, 36, 0.25);--rl-blocked-stroke: #fbbf24;--rl-success-fill: rgba(74, 222, 128, 0.25);--rl-success-stroke: #4ade80}.rl-timeline__scroll{overflow-x:auto;border:1px solid var(--rl-border);border-radius:1rem;background-color:var(--rl-surface);padding:1.25rem 0 0.75rem}.rl-timeline__track{position:relative;min-width:30rem;height:10rem;margin:0 2.5rem}.rl-timeline__axis{position:absolute;top:4rem;left:0;right:0;height:1px;background-color:var(--rl-axis)}.rl-timeline__axis::after{content:\"\";position:absolute;right:-6px;top:-4px;border-top:4.5px solid transparent;border-bottom:4.5px solid transparent;border-left:7px solid var(--rl-axis)}.rl-timeline__blocked{position:absolute;top:calc(4rem - 3px);height:7px;border-radius:9999px;background-color:var(--rl-blocked-band)}.rl-timeline__blocked-label{position:absolute;bottom:12px;left:50%;transform:translateX(-50%);font-size:0.75rem;color:var(--rl-muted);white-space:nowrap}.rl-timeline__event{position:absolute;top:4rem;width:0;height:0}.rl-timeline__dot{position:absolute;left:-7px;top:-7px;width:14px;height:14px;border-radius:9999px;border:1.5px solid var(--rl-success-stroke);background-color:var(--rl-success-fill)}.rl-timeline__dot--error{border-color:var(--rl-error-stroke);background-color:var(--rl-error-fill)}.rl-timeline__dot--blocked{border-color:var(--rl-blocked-stroke);background-color:var(--rl-blocked-fill)}.rl-timeline__label{position:absolute;left:0;display:flex;flex-direction:column;align-items:center;gap:0.125rem;transform:translateX(-50%);white-space:nowrap}.rl-timeline__event--above .rl-timeline__label{bottom:16px}.rl-timeline__event--below .rl-timeline__label{top:16px}.rl-timeline__title{font-size:0.8125rem;font-weight:500;line-height:1.2}.rl-timeline__time,.rl-timeline__end,.rl-timeline__window-label,.rl-timeline__caption{font-size:0.75rem;line-height:1.2;color:var(--rl-muted);font-variant-numeric:tabular-nums}.rl-timeline__end{position:absolute;top:calc(4rem + 10px)}.rl-timeline__end--start{left:0}.rl-timeline__end--end{right:0}.rl-timeline__window{position:absolute;top:calc(4rem + 4.25rem);height:8px;border:1px solid var(--rl-axis);border-top:none}.rl-timeline__window-label{position:absolute;top:14px;left:50%;transform:translateX(-50%);white-space:nowrap}.rl-timeline__lane{position:absolute;left:0;right:0}.rl-timeline__lane-label{font-size:0.75rem;line-height:1.2;color:var(--rl-muted);white-space:nowrap}.rl-timeline__lane-rail{position:relative;margin-top:0.375rem;height:7px;border-radius:9999px;background-color:var(--rl-lane-rail)}.rl-timeline__lane-band{position:absolute;top:0;bottom:0;border-radius:9999px;background-color:var(--rl-lane-band)}.rl-timeline__caption{margin-top:0.5rem;text-align:center;font-size:0.875rem}.rl-groups{--rl-border: #e4e4e7;--rl-ink: #27272a;--rl-muted: #a1a1aa;--rl-note: #71717a;--rl-country-fill: #ffffff;--rl-chip-fill: #ffffff;--rl-tag-fill: rgba(113, 113, 122, 0.08);--rl-tone-0-fill: rgba(139, 123, 255, 0.08);--rl-tone-0-stroke: rgba(139, 123, 255, 0.35);--rl-tone-1-fill: rgba(14, 165, 233, 0.07);--rl-tone-1-stroke: rgba(14, 165, 233, 0.3);margin:1.5rem 0}.dark .rl-groups{--rl-border: rgba(255, 255, 255, 0.1);--rl-ink: #e4e4e7;--rl-muted: #71717a;--rl-note: #a1a1aa;--rl-country-fill: rgba(255, 255, 255, 0.03);--rl-chip-fill: rgba(255, 255, 255, 0.05);--rl-tag-fill: rgba(255, 255, 255, 0.06);--rl-tone-0-fill: rgba(139, 123, 255, 0.12);--rl-tone-0-stroke: rgba(139, 123, 255, 0.4);--rl-tone-1-fill: rgba(56, 189, 248, 0.09);--rl-tone-1-stroke: rgba(56, 189, 248, 0.35)}.rl-groups__country{border:1px solid var(--rl-border);border-radius:1rem;background-color:var(--rl-country-fill);padding:1rem 1.25rem 1.25rem}.rl-groups__header{display:flex;align-items:center;justify-content:space-between;gap:0.75rem;margin-bottom:0.75rem}.rl-groups__title{font-size:0.8125rem;font-weight:600;color:var(--rl-ink)}.rl-groups__mono{font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;font-variant-numeric:tabular-nums}.rl-groups__muted{color:var(--rl-muted);font-weight:400}.rl-groups__tag{border-radius:9999px;padding:0.0625rem 0.5rem;font-size:0.6875rem;font-weight:500;white-space:nowrap;color:var(--rl-note);background-color:var(--rl-tag-fill)}.rl-groups__row{display:flex;flex-wrap:wrap;gap:0.75rem}.rl-groups__group{flex:1 1 13rem;border:1px solid;border-radius:0.625rem;padding:0.75rem}.rl-groups__group .rl-groups__header{margin-bottom:0.625rem}.rl-groups__tone-0{border-color:var(--rl-tone-0-stroke);background-color:var(--rl-tone-0-fill)}.rl-groups__tone-1{border-color:var(--rl-tone-1-stroke);background-color:var(--rl-tone-1-fill)}.rl-groups__numbers{display:flex;flex-direction:column;align-items:flex-start;gap:0.375rem}.rl-groups__chip{border:1px solid var(--rl-border);border-radius:0.375rem;padding:0.1875rem 0.5rem;font-size:0.8125rem;white-space:nowrap;color:var(--rl-ink);background-color:var(--rl-chip-fill)}.rl-groups__caption{margin-top:0.5rem;text-align:center;font-size:0.875rem;color:var(--rl-note)}#hubspot-messages-iframe-container{color-scheme:light}"}],"page":{"pagePath":"sdks/client/web/totp","slug":"/sdks/client/web/totp","pageMetadata":{"title":"Authenticator app (TOTP)","description":"Use the Web SDK to implement authenticator app (TOTP) authentication.","href":"/sdks/client/web/totp"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Use the Web SDK to implement authenticator app (TOTP) authentication.\"\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,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,pre:`pre`,span:`span`,..._provideComponents(),...props.components},{CodeBlock,Expandable,Heading,Info,ResponseField}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Expandable)_missingMdxReference(`Expandable`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!ResponseField)_missingMdxReference(`ResponseField`,true);return _jsxs(_Fragment,{children:[_jsx(Info,{children:_jsxs(_components.p,{children:[`All TOTP SDK methods require you to `,_jsx(_components.a,{href:`/sdks/client/web/actions`,children:`initiate an action first`}),`.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`enroll`,children:`Enroll`}),`\n`,_jsx(_components.p,{children:`Start enrollment for a new TOTP authenticator by generating a QR code to display to the user.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` response`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` authsignal`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`totp`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`enroll`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`();`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`response`,children:`Response`}),`\n`,_jsx(ResponseField,{name:`response`,type:`AuthsignalResponse\u003cEnrollTotpResponse>`,id:`param-response`,children:_jsxs(Expandable,{title:`properties`,children:[_jsx(ResponseField,{name:`data`,type:`EnrollTotpResponse`,id:`param-data`,children:_jsxs(Expandable,{title:`properties`,children:[_jsx(ResponseField,{name:`uri`,type:`string`,required:true,id:`param-uri`,children:_jsx(_components.p,{children:`A TOTP URI which can be converted into a QR code and presented to the user to scan with\ntheir authenticator app.`})}),_jsx(ResponseField,{name:`secret`,type:`string`,required:true,id:`param-secret`,children:_jsx(_components.p,{children:`The raw TOTP secret which can be presented to the user as a fallback option if they wish to\nenter a code manually instead of scanning a QR code.`})})]})}),_jsx(ResponseField,{name:`errorCode`,type:`string`,id:`param-error-code`,children:_jsxs(_components.p,{children:[`See the `,_jsx(_components.a,{href:`/sdks/client/web/error-handling`,children:`Error handling`}),` section for more details.`]})}),_jsx(ResponseField,{name:`errorDescription`,type:`string`,id:`param-error-description`})]})}),`\n`,_jsx(Heading,{level:`2`,id:`verify`,children:`Verify`}),`\n`,_jsx(_components.p,{children:`Finish enrolling or re-authenticating a TOTP authenticator by verifying the code submitted by the user.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` response`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` authsignal`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`totp`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`verify`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({ `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`code:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"123456\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` });`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`parameters`,children:`Parameters`}),`\n`,_jsx(ResponseField,{name:`code`,type:`string`,id:`param-code`,children:_jsx(_components.p,{children:`The OTP code inputted by the user.`})}),`\n`,_jsx(Heading,{level:`3`,id:`response-2`,children:`Response`}),`\n`,_jsx(ResponseField,{name:`response`,type:`AuthsignalResponse\u003cVerifyResponse>`,id:`param-response-1`,children:_jsxs(Expandable,{title:`properties`,children:[_jsx(ResponseField,{name:`data`,type:`VerifyResponse`,id:`param-data-1`,children:_jsxs(Expandable,{title:`properties`,children:[_jsx(ResponseField,{name:`isVerified`,type:`boolean`,required:true,id:`param-is-verified`,children:_jsx(_components.p,{children:`True if the verification was successful.`})}),_jsx(ResponseField,{name:`token`,type:`string`,id:`param-token`,children:_jsxs(_components.p,{children:[`A token which can be used for `,_jsx(_components.a,{href:`/sdks/server/challenges#validate-challenge`,children:`server-side\nvalidation`}),`.`]})}),_jsxs(ResponseField,{name:`userAuthenticator`,type:`object`,id:`param-user-authenticator`,children:[_jsx(_components.p,{children:`Only present on first time verification e.g. enrollment.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(ResponseField,{name:`userAuthenticatorId`,type:`string`,required:true,id:`param-user-authenticator-id`,children:_jsx(_components.p,{children:`The ID of the Authsignal user authenticator.`})}),_jsx(ResponseField,{name:`verificationMethod`,type:`'SMS' | 'AUTHENTICATOR_APP' | 'EMAIL_MAGIC_LINK' | 'EMAIL_OTP' | 'PASSKEY' | 'PUSH' | 'SECURITY_KEY' | 'VERIFF' | 'IPROOV' | 'IDVERSE' | 'PALM_BIOMETRICS_BR'`,required:true,id:`param-verification-method`}),_jsx(ResponseField,{name:`createdAt`,type:`string`,required:true,id:`param-created-at`,children:_jsx(_components.p,{children:`The date and time the authenticator was created in ISO 8601 format.`})}),_jsx(ResponseField,{name:`verifiedAt`,type:`string`,required:true,id:`param-verified-at`,children:_jsx(_components.p,{children:`The date and time the authenticator was first verified in ISO 8601 format.`})}),_jsx(ResponseField,{name:`lastVerifiedAt`,type:`string`,id:`param-last-verified-at`,children:_jsx(_components.p,{children:`The date and time the authenticator was last verified in ISO 8601 format.`})}),_jsx(ResponseField,{name:`isDefault`,type:`boolean`,required:true,id:`param-is-default`,children:_jsx(_components.p,{children:`Whether the authenticator is the default authenticator for the user.`})}),_jsx(ResponseField,{name:`email`,type:`string`,id:`param-email`,children:_jsx(_components.p,{children:`The email address of the authenticator. Only present for email authenticators e.g. email OTP and email magic link.`})}),_jsx(ResponseField,{name:`phoneNumber`,type:`string`,id:`param-phone-number`,children:_jsx(_components.p,{children:`The phone number of the authenticator. Only present for phone authenticators e.g. SMS/WhatsApp OTP.`})}),_jsx(ResponseField,{name:`previousSmsChannel`,type:`SMS | WHATSAPP`,id:`param-previous-sms-channel`,children:_jsx(_components.p,{children:`The previous SMS channel used to send the OTP code. Only present for phone authenticators e.g. SMS/WhatsApp OTP.`})}),_jsxs(ResponseField,{name:`webauthnCredential`,type:`string`,id:`param-webauthn-credential`,children:[_jsx(_components.p,{children:`Only present for passkey authenticators.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(ResponseField,{name:`credentialId`,type:`string`,required:true,id:`param-credential-id`,children:_jsx(_components.p,{children:`The ID of the passkey credential.`})}),_jsx(ResponseField,{name:`deviceId`,type:`string`,required:true,id:`param-device-id`,children:_jsx(_components.p,{children:`The device ID of the passkey credential.`})}),_jsx(ResponseField,{name:`name`,type:`string`,id:`param-name`,children:_jsx(_components.p,{children:`The name of the passkey credential.`})}),_jsx(ResponseField,{name:`aaguid`,type:`string`,id:`param-aaguid`,children:_jsx(_components.p,{children:`The AAGUID of the passkey credential.`})}),_jsx(ResponseField,{name:`credentialBackedUp`,type:`boolean`,required:true,id:`param-credential-backed-up`,children:_jsx(_components.p,{children:`Whether the passkey credential is backed up.`})}),_jsx(ResponseField,{name:`credentialDeviceType`,type:`'singleDevice' | 'multiDevice'`,id:`param-credential-device-type`,children:_jsx(_components.p,{children:`The device type of the passkey credential.`})}),_jsxs(ResponseField,{name:`parsedUserAgent`,type:`object`,id:`param-parsed-user-agent`,children:[_jsx(_components.p,{children:`The parsed user agent of the passkey credential.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(ResponseField,{name:`ua`,type:`string`,required:true,id:`param-ua`,children:_jsx(_components.p,{children:`The user agent of the passkey credential.`})}),_jsxs(ResponseField,{name:`browser`,type:`object`,id:`param-browser`,children:[_jsx(_components.p,{children:`The browser of the passkey credential.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(ResponseField,{name:`name`,type:`string`,id:`param-name-1`,children:_jsx(_components.p,{children:`The name of the browser.`})}),_jsx(ResponseField,{name:`version`,type:`string`,id:`param-version`,children:_jsx(_components.p,{children:`The version of the browser.`})}),_jsx(ResponseField,{name:`major`,type:`string`,id:`param-major`,children:_jsx(_components.p,{children:`The major version of the browser.`})})]})]}),_jsxs(ResponseField,{name:`device`,type:`object`,id:`param-device`,children:[_jsx(_components.p,{children:`The device of the passkey credential.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(ResponseField,{name:`model`,type:`string`,id:`param-model`,children:_jsx(_components.p,{children:`The model of the device.`})}),_jsx(ResponseField,{name:`type`,type:`string`,id:`param-type`,children:_jsx(_components.p,{children:`The type of the device.`})}),_jsx(ResponseField,{name:`vendor`,type:`string`,id:`param-vendor`,children:_jsx(_components.p,{children:`The vendor of the device.`})})]})]}),_jsxs(ResponseField,{name:`engine`,type:`object`,id:`param-engine`,children:[_jsx(_components.p,{children:`The engine of the passkey credential.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(ResponseField,{name:`name`,type:`string`,id:`param-name-2`,children:_jsx(_components.p,{children:`The name of the engine.`})}),_jsx(ResponseField,{name:`version`,type:`string`,id:`param-version-1`,children:_jsx(_components.p,{children:`The version of the engine.`})})]})]}),_jsxs(ResponseField,{name:`os`,type:`object`,id:`param-os`,children:[_jsx(_components.p,{children:`The OS of the passkey credential.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(ResponseField,{name:`name`,type:`string`,id:`param-name-3`,children:_jsx(_components.p,{children:`The name of the OS.`})}),_jsx(ResponseField,{name:`version`,type:`string`,id:`param-version-2`,children:_jsx(_components.p,{children:`The version of the OS.`})})]})]}),_jsxs(ResponseField,{name:`cpu`,type:`object`,id:`param-cpu`,children:[_jsx(_components.p,{children:`The CPU of the passkey credential.`}),_jsx(Expandable,{title:`properties`,children:_jsx(ResponseField,{name:`architecture`,type:`string`,id:`param-architecture`,children:_jsx(_components.p,{children:`The architecture of the CPU.`})})})]})]})]}),_jsx(ResponseField,{name:`verifiedAt`,type:`string`,required:true,id:`param-verified-at-1`,children:_jsx(_components.p,{children:`The date and time the passkey credential was verified in ISO 8601 format.`})}),_jsx(ResponseField,{name:`authenticatorAttachment`,type:`'platform' | 'cross-platform'`,id:`param-authenticator-attachment`,children:_jsx(_components.p,{children:`The authenticator attachment of the passkey credential.`})}),_jsxs(ResponseField,{name:`aaguidMapping`,type:`string`,id:`param-aaguid-mapping`,children:[_jsx(_components.p,{children:`The AAGUID mapping of the passkey credential.`}),_jsxs(Expandable,{title:`properties`,children:[_jsx(ResponseField,{name:`name`,type:`string`,required:true,id:`param-name-4`,children:_jsx(_components.p,{children:`The name of the AAGUID mapping.`})}),_jsx(ResponseField,{name:`svgIconLight`,type:`string`,id:`param-svg-icon-light`,children:_jsx(_components.p,{children:`The SVG icon of the AAGUID mapping in light mode.`})}),_jsx(ResponseField,{name:`svgIconDark`,type:`string`,id:`param-svg-icon-dark`,children:_jsx(_components.p,{children:`The SVG icon of the AAGUID mapping in dark mode.`})})]})]})]})]})]})]}),_jsx(ResponseField,{name:`failureReason`,type:`string`,id:`param-failure-reason`,children:_jsxs(_components.p,{children:[`A structured code present if the verification failed due to user error. Possible values are:\n`,_jsx(_components.code,{children:`CODE_INVALID_OR_EXPIRED`}),` or `,_jsx(_components.code,{children:`MAX_ATTEMPTS_EXCEEDED`}),`.`]})})]})}),_jsx(ResponseField,{name:`errorCode`,type:`string`,id:`param-error-code-1`,children:_jsxs(_components.p,{children:[`See the `,_jsx(_components.a,{href:`/sdks/client/web/error-handling`,children:`Error handling`}),` section for more details.`]})}),_jsx(ResponseField,{name:`errorDescription`,type:`string`,id:`param-error-description-1`})]})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Authenticator app (TOTP)","description":"Use the Web SDK to implement authenticator app (TOTP) authentication.","href":"/sdks/client/web/totp"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Enroll","slug":"enroll","depth":2,"children":[{"title":"Response","slug":"response","depth":3,"children":[]}]},{"title":"Verify","slug":"verify","depth":2,"children":[{"title":"Parameters","slug":"parameters","depth":3,"children":[]},{"title":"Response","slug":"response-2","depth":3,"children":[]}]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/authsignal-23/eacb9ac8e5ece268/.prettierrc.js"],"subdomain":"authsignal-23","siteName":"Authsignal","title":"Authenticator app (TOTP) - Authsignal","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-01-23T02:46:18.190Z","originalFileLocation":"sdks/client/web/totp.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=\"light\"}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=\"Use the Web SDK to implement authenticator app (TOTP) authentication.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Authsignal\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/authsignal-23/zo2TXHNNAcuLzclo/_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/authsignal-23/zo2TXHNNAcuLzclo/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/authsignal-23/zo2TXHNNAcuLzclo/_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/authsignal-23/zo2TXHNNAcuLzclo/_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/authsignal-23/zo2TXHNNAcuLzclo/_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/authsignal-23/zo2TXHNNAcuLzclo/_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/authsignal-23/zo2TXHNNAcuLzclo/_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/authsignal-23/zo2TXHNNAcuLzclo/_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/authsignal-23/zo2TXHNNAcuLzclo/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Authenticator app (TOTP) - Authsignal\">\u003cmeta data-mint-head property=\"og:description\" content=\"Use the Web SDK to implement authenticator app (TOTP) authentication.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Authsignal\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.authsignal.com/sdks/client/web/totp\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://authsignal-23.mintlify.site/_mintlify/api/og/v2?division=Web\u0026amp;title=Authenticator+app+%28TOTP%29\u0026amp;description=Use+the+Web+SDK+to+implement+authenticator+app+%28TOTP%29+authentication.\u0026amp;theme=4f88b0d0c8f63fb60eb7d9d3\u0026amp;signature=d404e267da64c925b51fc01897786645ac24dd812b28d133bb6bd9b6ef064dba\">\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=\"Authenticator app (TOTP) - Authsignal\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Use the Web SDK to implement authenticator app (TOTP) authentication.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://authsignal-23.mintlify.site/_mintlify/api/og/v2?division=Web\u0026amp;title=Authenticator+app+%28TOTP%29\u0026amp;description=Use+the+Web+SDK+to+implement+authenticator+app+%28TOTP%29+authentication.\u0026amp;theme=4f88b0d0c8f63fb60eb7d9d3\u0026amp;signature=d404e267da64c925b51fc01897786645ac24dd812b28d133bb6bd9b6ef064dba\">\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/authsignal-23/zo2TXHNNAcuLzclo/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Authsignal\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#8b7bff\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.authsignal.com/sdks/client/web/totp\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/sdks/client/web/totp.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.authsignal.com/#organization\",\"name\":\"Authsignal\",\"url\":\"https://docs.authsignal.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/authsignal-23/Q2QPBK1EKmJpLovY/logo/light.png?fit=max\u0026auto=format\u0026n=Q2QPBK1EKmJpLovY\u0026q=85\u0026s=8c4bd51abfac23972d75d85678c2f1ed\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.authsignal.com#website\",\"name\":\"Authsignal\",\"url\":\"https://docs.authsignal.com\",\"publisher\":{\"@id\":\"https://docs.authsignal.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.authsignal.com/sdks/client/web/totp#webpage\",\"url\":\"https://docs.authsignal.com/sdks/client/web/totp\",\"name\":\"Authenticator app (TOTP)\",\"description\":\"Use the Web SDK to implement authenticator app (TOTP) authentication.\",\"dateModified\":\"2026-01-23T02:46:18.190Z\",\"isPartOf\":{\"@id\":\"https://docs.authsignal.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.authsignal.com/sdks/client/web/totp#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.authsignal.com/sdks/client/web/totp#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Client\",\"item\":\"https://docs.authsignal.com/sdks/client/web/setup\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Web\",\"item\":\"https://docs.authsignal.com/sdks/client/web/setup\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Authenticator app (TOTP)\",\"item\":\"https://docs.authsignal.com/sdks/client/web/totp\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.authsignal.com/sdks/client/web/totp#article\",\"headline\":\"Authenticator app (TOTP)\",\"name\":\"Authenticator app (TOTP)\",\"description\":\"Use the Web SDK to implement authenticator app (TOTP) authentication.\",\"url\":\"https://docs.authsignal.com/sdks/client/web/totp\",\"mainEntityOfPage\":{\"@id\":\"https://docs.authsignal.com/sdks/client/web/totp#webpage\"},\"dateModified\":\"2026-01-23T02:46:18.190Z\",\"publisher\":{\"@id\":\"https://docs.authsignal.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.authsignal.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Authsignal\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Authsignal","nav":{"global":null,"tabs":[{"tab":"Documentation","icon":"book-open","pages":[{"title":"Documentation","href":"/getting-started/overview"}]},{"tab":"SDKs","icon":"rectangle-code","groups":[{"group":"Server","pages":[{"title":"Server SDKs","sidebarTitle":"Overview","href":"/sdks/server/overview"},{"title":"Actions","href":"/sdks/server/actions"},{"title":"Flows","tag":"New","href":"/sdks/server/flows"},{"title":"Users","href":"/sdks/server/users"},{"title":"Authenticators","href":"/sdks/server/authenticators"},{"title":"Challenges","href":"/sdks/server/challenges"},{"title":"Sessions","href":"/sdks/server/sessions"},{"title":"Error handling","href":"/sdks/server/error-handling"},{"title":"Webhooks","href":"/sdks/server/webhooks"}]},{"group":"Client","pages":[{"group":"Web","pages":[{"title":"Web SDK","sidebarTitle":"Setup","href":"/sdks/client/web/setup"},{"title":"Passkeys","href":"/sdks/client/web/passkeys"},{"title":"Security key","href":"/sdks/client/web/security-key"},{"title":"Email OTP","href":"/sdks/client/web/email-otp"},{"title":"Email magic link","href":"/sdks/client/web/email-magic-link"},{"title":"SMS OTP","sidebarTitle":"SMS","href":"/sdks/client/web/sms"},{"title":"WhatsApp OTP","sidebarTitle":"WhatsApp","description":"Use the Web SDK to implement WhatsApp authentication.","href":"/sdks/client/web/whatsapp"},{"title":"Authenticator app (TOTP)","href":"/sdks/client/web/totp"},{"title":"Push verification","description":"Use the Web SDK to initiate push verification challenges.","href":"/sdks/client/web/push-verification"},{"title":"QR code verification","href":"/sdks/client/web/qr-code-verification"},{"title":"Actions","href":"/sdks/client/web/actions"},{"title":"Launching the pre-built UI","href":"/sdks/client/web/prebuilt-ui"},{"title":"Device tracking","href":"/sdks/client/web/device-tracking"},{"title":"Error handling","href":"/sdks/client/web/error-handling"}]},{"group":"Mobile","pages":[{"title":"Mobile SDKs","sidebarTitle":"Setup","href":"/sdks/client/mobile/setup"},{"title":"Passkeys","href":"/sdks/client/mobile/passkeys"},{"title":"Push verification","href":"/sdks/client/mobile/push-verification"},{"title":"QR code verification","href":"/sdks/client/mobile/qr-code-verification"},{"title":"In-app verification","href":"/sdks/client/mobile/in-app-verification"},{"title":"Email OTP","href":"/sdks/client/mobile/email-otp"},{"title":"SMS OTP","sidebarTitle":"SMS","href":"/sdks/client/mobile/sms"},{"title":"WhatsApp OTP","sidebarTitle":"WhatsApp","href":"/sdks/client/mobile/whatsapp"},{"title":"Authenticator app (TOTP)","href":"/sdks/client/mobile/totp"},{"title":"Actions","href":"/sdks/client/mobile/actions"},{"title":"Error handling","href":"/sdks/client/mobile/error-handling"}]},{"title":"React","href":"/sdks/client/react"}]},{"group":"Call Connect","pages":[{"title":"Call Connect SDK","sidebarTitle":"Overview","href":"/sdks/call-connect/overview"}]}]},{"tab":"API reference","icon":"rectangle-terminal","pages":[{"title":"API reference","href":"/api-reference/overview"}]},{"tab":"Webhooks","icon":"webhook","pages":[{"title":"Webhooks","href":"/advanced-usage/webhooks/introduction"}]},{"tab":"Knowledge base","icon":"books","pages":[{"title":"Knowledge base","href":"/knowledge-base/overview"}]},{"tab":"Changelog","icon":"clock-rotate-left","pages":[{"title":"Changelog","href":"/changelog/product-updates"}]}]},"basePath":"","title":"Authenticator app (TOTP) - Authsignal","buildId":"dpl_DTau1J5HqS9UTgVSDwGksstFWtPa","deploymentId":"dpl_DTau1J5HqS9UTgVSDwGksstFWtPa","dynamics":[],"chunks":[]}