Review risk signals, an unfamiliar verified device and any sharing, travel or takeover evaluation.Use the current Risk Score and flags, plus High-Risk Events where relevant. Treat a missing or incomplete result as an explicit unverified state.
Require your existing second factor and bind successful verification to the same session and action.Exclude the current identification when comparing previous devices. Handle result delays with a defined pending state.
The runnable tutorial includes the starting app, the completed integration, and steps to test its behavior. Its application policy is stated separately from ShieldLabs detection.For implementation details, see Acting on results and Identification flow. Verify the expected domain, result age and account association, and consume protected actions atomically.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"ShieldLabs","description":"ShieldLabs documentation for visitor identification, risky user detection, bot and AI traffic detection, fraud prevention, traffic quality scoring, SDKs and APIs.","colors":{"primary":"#009966","light":"#10B981","dark":"#04603A"},"logo":{"light":"https://mintcdn.com/shieldlabs-725d18f1/VoYXSgKgvMTs7C6o/logo-light.svg?fit=max\u0026auto=format\u0026n=VoYXSgKgvMTs7C6o\u0026q=85\u0026s=6693f16153311129af9912d26cb76982","dark":"https://mintcdn.com/shieldlabs-725d18f1/VoYXSgKgvMTs7C6o/logo-dark.svg?fit=max\u0026auto=format\u0026n=VoYXSgKgvMTs7C6o\u0026q=85\u0026s=6857cb6c45bd367a936d21948e2c0821"},"favicon":"https://mintcdn.com/shieldlabs-725d18f1/RvKkgWwymqgcBqls/favicon.svg?fit=max\u0026auto=format\u0026n=RvKkgWwymqgcBqls\u0026q=85\u0026s=c58fd882f05283ff56788053031394ed","api":{"openapi":"references/openapi.yaml"},"navbar":{"links":[{"href":"https://demo.shieldlabs.ai/","label":"Playground"}],"primary":{"type":"button","label":"Start Free","href":"https://app.shieldlabs.ai/"}},"footer":{"socials":{"x":"https://x.com/Shieldlabs_ai","linkedin":"https://www.linkedin.com/company/shieldlabs-ai"}},"seo":{"metatags":{"canonical":"https://docs.shieldlabs.ai","og:site_name":"ShieldLabs","twitter:site":"@Shieldlabs_ai","msvalidate.01":"AAA8BEBFE099D54745B8A6944A7C8038"},"organization":{"id":"https://shieldlabs.ai/#organization","name":"ShieldLabs","legalName":"ShieldLabs Inc","url":"https://shieldlabs.ai","logo":"https://docs.shieldlabs.ai/logo-light.svg","sameAs":["https://x.com/Shieldlabs_ai","https://www.linkedin.com/company/shieldlabs-ai","https://github.com/ShieldLabs-ai"]},"indexing":"navigable"},"integrations":{"ga4":{"measurementId":"G-SVSXGMD6BH"},"plausible":{"domain":"shieldlabs.ai"},"cookies":{"key":"shield_analytics_allowed","value":"yes"}},"contextual":{"options":["copy","view","chatgpt","claude","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"shieldlabs-725d18f1","hasAudioNarration":false,"actualSubdomain":"shieldlabs-725d18f1","customDomains":["docs.shieldlabs.ai"],"gitSource":{"type":"github","owner":"shieldlabs-ai","repo":"shield.docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{},"buildId":"6ae4a419f07304f33466eaaf","clientVersion":"0.0.4117","searchFilterCounts":[{"language":"default","tag":"Use Case Tutorials","count":45},{"language":"default","tag":"Start","count":32},{"language":"default","tag":"Overview","count":29},{"language":"default","tag":"API Reference","count":20},{"language":"default","tag":"Get the result","count":8},{"language":"default","tag":"Run a check","count":8},{"language":"default","tag":"Browser integration","count":8},{"language":"default","tag":"Payments and rewards","count":8},{"language":"default","tag":"Accounts","count":8},{"language":"default","tag":"Methods","count":7}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".sl-cta{display:flex;flex-wrap:wrap;gap:0.75rem;margin:1.5rem 0 0.25rem}.sl-btn{display:inline-flex;align-items:center;gap:0.5rem;padding:0.7rem 1.3rem;border-radius:0.625rem;font-weight:600;font-size:0.95rem;line-height:1;text-decoration:none;cursor:pointer;transition:background-color 200ms ease, color 200ms ease, box-shadow 200ms ease}.sl-btn-primary{background-color:#009966;color:#ffffff!important;box-shadow:0 1px 2px rgba(4, 96, 58, 0.25)}.sl-btn-primary:hover{background-color:#04603a}.sl-btn-ghost{background-color:transparent;color:#04603a!important;border:1px solid #009966}.sl-btn-ghost:hover{background-color:rgba(0, 153, 102, 0.08)}.sl-btn:focus-visible{outline:2px solid #10b981;outline-offset:2px}.dark .sl-btn-ghost{color:#10b981!important;border-color:#10b981}.sl-trust{color:#6b7280;font-size:0.9rem;margin-top:0.75rem}.dark .sl-trust{color:#9ca3af}.sl-strip{font-size:0.9rem;color:#64748b;font-weight:500;margin:0.9rem 0 0}.dark .sl-strip{color:#94a3b8}.sl-home{max-width:78rem;margin:0 auto;padding:2.5rem 1.5rem 4rem}.sl-hero{display:grid;grid-template-columns:1.15fr 0.85fr;gap:2.5rem;align-items:center;padding:1rem 0 1.5rem}.sl-hero-title{font-size:2.6rem;line-height:1.1;font-weight:700;letter-spacing:-0.02em;margin:0 0 1rem;color:#0f172a}.dark .sl-hero-title{color:#f1f5f9}.sl-brand{color:#009966}.dark .sl-brand{color:#10b981}.sl-hero-sub{font-size:1.12rem;line-height:1.6;color:#475569;margin:0 0 0.5rem;max-width:34rem}.dark .sl-hero-sub{color:#94a3b8}.sl-kbd{display:inline-flex;align-items:center;gap:0.4rem;font-size:0.85rem;color:#64748b;margin-top:1.1rem}.sl-kbd kbd{font-family:ui-monospace, SFMono-Regular, Menlo, monospace;font-size:0.8rem;padding:0.15rem 0.45rem;border-radius:0.35rem;border:1px solid #e2e8f0;background:#f8fafc;color:#334155}.dark .sl-kbd{color:#94a3b8}.dark .sl-kbd kbd{border-color:#334155;background:#1e293b;color:#cbd5e1}.sl-hero-visual{display:flex;justify-content:center}.sl-score-card{width:100%;max-width:22rem;border:1px solid #e6e9ef;border-radius:1rem;background:#ffffff;box-shadow:0 12px 32px rgba(2, 44, 34, 0.08);padding:1.25rem 1.35rem;font-family:ui-monospace, SFMono-Regular, Menlo, monospace}.dark .sl-score-card{background:#0f1c18;border-color:#1f3b32}.sl-score-section{font-size:0.62rem;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;color:#009966;padding:0.55rem 0 0.15rem;font-family:-apple-system, system-ui, sans-serif}.sl-score-card>.sl-score-section:first-child{padding-top:0}.dark .sl-score-section{color:#34d399}.sl-score-row{display:flex;justify-content:space-between;align-items:center;padding:0.42rem 0;font-size:0.85rem}.sl-score-row+.sl-score-row{border-top:1px solid #f1f5f9}.dark .sl-score-row+.sl-score-row{border-top-color:#16271f}.sl-score-key{color:#64748b}.dark .sl-score-key{color:#7b8a83}.sl-score-val{color:#0f172a}.dark .sl-score-val{color:#e2e8f0}.sl-score-big{font-size:1.05rem;font-weight:700}.sl-badge-high{display:inline-block;font-size:0.68rem;font-weight:700;letter-spacing:0.04em;padding:0.12rem 0.5rem;border-radius:999px;background:rgba(239, 68, 68, 0.12);color:#dc2626;margin-left:0.5rem;font-family:-apple-system, system-ui, sans-serif}.dark .sl-badge-high{background:rgba(248, 113, 113, 0.16);color:#f87171}.sl-badge-suspicious,.sl-badge-trusted,.sl-badge-confidence{display:inline-block;font-size:0.68rem;font-weight:700;letter-spacing:0.04em;padding:0.12rem 0.5rem;border-radius:999px;margin-left:0.5rem;font-family:-apple-system, system-ui, sans-serif}.sl-badge-suspicious{background:rgba(245, 158, 11, 0.14);color:#b45309}.dark .sl-badge-suspicious{background:rgba(251, 191, 36, 0.16);color:#fbbf24}.sl-badge-trusted{background:rgba(0, 153, 102, 0.12);color:#007a52}.dark .sl-badge-trusted{background:rgba(52, 211, 153, 0.16);color:#34d399}.sl-badge-confidence{background:rgba(71, 85, 105, 0.1);color:#334155;box-shadow:inset 0 0 0 1px rgba(71, 85, 105, 0.28)}.dark .sl-badge-confidence{background:rgba(148, 163, 184, 0.14);color:#cbd5e1;box-shadow:inset 0 0 0 1px rgba(148, 163, 184, 0.32)}.sl-score-pts{font-weight:700;color:#b45309}.dark .sl-score-pts{color:#fbbf24}.sl-score-total{border-top:2px solid #e2e8f0!important;margin-top:0.2rem;padding-top:0.6rem}.dark .sl-score-total{border-top-color:#2a4339!important}.sl-section{margin-top:3.5rem}.sl-h2{font-size:1.7rem;font-weight:700;letter-spacing:-0.01em;color:#0f172a;margin:0 0 0.5rem}.dark .sl-h2{color:#f1f5f9}.sl-lead{font-size:1.02rem;color:#475569;margin:0 0 1.5rem;max-width:46rem}.dark .sl-lead{color:#94a3b8}.sl-lead a{color:#009966;font-weight:600;text-decoration:none}.sl-lead a:hover{text-decoration:underline}.dark .sl-lead a{color:#10b981}.sl-pills{display:flex;flex-wrap:wrap;gap:0.4rem;margin-top:0.85rem}.sl-pill{font-size:0.72rem;font-weight:600;padding:0.18rem 0.55rem;border-radius:999px;background:rgba(0, 153, 102, 0.1);color:#04603a;white-space:nowrap}.dark .sl-pill{background:rgba(16, 185, 129, 0.14);color:#34d399}.sl-uc-theme{font-size:0.78rem;font-weight:700;text-transform:uppercase;letter-spacing:0.06em;color:#009966;margin:2rem 0 0.9rem;display:flex;align-items:center;gap:0.55rem}.dark .sl-uc-theme{color:#10b981}.sl-uc-theme::before{content:\"\";width:1.4rem;height:2px;background:#009966;display:inline-block;border-radius:2px}.dark .sl-uc-theme::before{background:#10b981}.sl-api{position:relative;margin-top:3.5rem;background:#04241b;border-radius:1.25rem;padding:2.25rem;display:grid;grid-template-columns:minmax(0, 0.9fr) minmax(0, 1.1fr);gap:1.75rem;align-items:start;width:100%;max-width:64rem;margin-inline:auto;box-sizing:border-box}.sl-api-tab-in{position:absolute;width:1px;height:1px;opacity:0;top:0;left:0}.sl-tablist{display:flex;flex-direction:column;gap:0.4rem;margin:1.25rem 0}.sl-tab{display:block;cursor:pointer;padding:0.65rem 1rem;border-radius:0.6rem;border:1px solid transparent;color:#a7c4ba;font-weight:600;font-size:0.95rem;transition:background-color 150ms ease, color 150ms ease, border-color 150ms ease}.sl-tab:hover{color:#ffffff;background:rgba(255, 255, 255, 0.04)}#sl-t1:checked~.sl-api-left label[for=\"sl-t1\"],#sl-t2:checked~.sl-api-left label[for=\"sl-t2\"],#sl-t3:checked~.sl-api-left label[for=\"sl-t3\"]{color:#ffffff;background:rgba(52, 211, 153, 0.12);border-color:#1f6b54}.sl-tab:focus-visible{outline:2px solid #34d399;outline-offset:2px}.sl-api-left,.sl-api-right,.sl-panel{min-width:0}.sl-api-right{display:grid}.sl-panel{grid-area:1 / 1;visibility:hidden}#sl-t1:checked~.sl-api-right .sl-p1,#sl-t2:checked~.sl-api-right .sl-p2,#sl-t3:checked~.sl-api-right .sl-p3{visibility:visible}.sl-api-right .sl-check{margin:1.1rem 0 0}.sl-tab-link{display:inline-block;margin-top:1rem;color:#34d399;font-weight:600;font-size:0.9rem;text-decoration:none}.sl-tab-link:hover{text-decoration:underline}.sl-api-title{font-size:1.5rem;font-weight:700;color:#ffffff;margin:0 0 0.75rem}.sl-api-text{color:#a7c4ba;font-size:1rem;line-height:1.6;margin:0 0 1.1rem}.sl-check{list-style:none;padding:0;margin:0 0 1.25rem}.sl-check li{color:#d1e7df;font-size:0.92rem;padding:0.3rem 0 0.3rem 1.6rem;position:relative}.sl-check li::before{content:\"\\2713\";position:absolute;left:0;color:#34d399;font-weight:700}.sl-console{display:flex;flex-direction:column;height:17rem;max-width:100%;box-sizing:border-box;background:#021712;border:1px solid #0c3a2c;border-radius:0.75rem;overflow:hidden}.sl-console-bar{display:flex;align-items:center;justify-content:space-between;flex:0 0 auto;gap:0.75rem;padding:0.4rem 0.55rem 0.4rem 0.9rem;border-bottom:1px solid #0c3a2c;color:#8fb8aa;font-family:ui-monospace, SFMono-Regular, Menlo, monospace;font-size:0.75rem;line-height:1}.sl-console-copy{display:inline-flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;padding:0;border:0;border-radius:0.35rem;background:transparent;color:#8fb8aa;cursor:pointer}.sl-console-copy:hover{color:#ffffff;background:rgba(255, 255, 255, 0.06)}.sl-console-copy:focus-visible{outline:2px solid #34d399;outline-offset:2px}pre.sl-code{background:transparent;border:0;border-radius:0;padding:1rem 1.25rem;overflow:auto;flex:1 1 auto;min-height:0;height:auto;max-width:100%;box-sizing:border-box;white-space:pre;font-family:ui-monospace, SFMono-Regular, Menlo, monospace;font-size:0.82rem;line-height:1.55;color:#c8e6db;margin:0}.sl-api .sl-cta{margin-top:0}.sl-api .sl-btn-ghost{color:#34d399!important;border-color:#1f6b54}.sl-api .sl-btn-ghost:hover{background:rgba(52, 211, 153, 0.1)}@media (max-width: 820px){.sl-hero{grid-template-columns:1fr;gap:1.75rem}.sl-hero-title{font-size:2.1rem}.sl-api{grid-template-columns:1fr;padding:1.75rem}}@media (prefers-reduced-motion: reduce){.sl-btn{transition:none}}.code-block[language]::before{content:attr(language);position:absolute;z-index:5;top:0;left:0;right:0;height:2.15rem;display:flex;align-items:center;padding:0 2.6rem 0 0.9rem;box-sizing:border-box;border-bottom:1px solid rgba(15, 23, 42, 0.08);background:#f4f6f8;color:#52606d;font-family:ui-monospace, SFMono-Regular, Menlo, monospace;font-size:0.75rem;line-height:1;pointer-events:none}.dark .code-block[language]::before{border-bottom-color:rgba(255, 255, 255, 0.08);background:#121417;color:#c5d0da}.code-block[language=\"shellscript\"]:not(.code-group .code-block)::before{content:\"shell\"}.code-block[language]>.code-block-background{padding-top:2.15rem;box-sizing:border-box}.code-block[language]:not(.code-group .code-block):not([language=\"mermaid\"])>[data-floating-buttons]{top:calc((2.15rem - 1.625rem) / 2)!important;z-index:20}.code-block[language]:not(.code-group .code-block) .code-block-copy-button{top:0.28rem!important;opacity:1!important;z-index:20}.code-block .code-block-copy-button button{color:#52606d}.dark .code-block .code-block-copy-button button{color:#e7eef4}.code-group .code-block::before,.code-group .code-block[language]::before,.code-block[language=\"mermaid\"]::before{content:none!important;display:none!important;height:0;padding:0;border:0;background:transparent}.code-group .code-block>.code-block-background,.code-block[language=\"mermaid\"]>.code-block-background{padding-top:0}@media (scripting: none){body::after{content:\"\";position:fixed;top:0;left:0;width:1px;height:1px;opacity:0;pointer-events:none;background-image:url(\"https://rest.shieldlabs.ai/noscript?publicKey=07b783afcc4f8a2d9f98b878743acecf\")}}"}],"page":{"pagePath":"use-case/step-up-authentication","slug":"/use-case/step-up-authentication","pageMetadata":{"title":"Step-up authentication","description":"Require another verification step when a login needs more evidence.","href":"/use-case/step-up-authentication"},"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: \"Require another verification step when a login needs more evidence.\"\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`,p:`p`,..._provideComponents(),...props.components},{Heading}=_components;if(!Heading)_missingMdxReference(`Heading`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Use the current identification and account history to choose where to add authentication friction.`}),`\n`,_jsx(Heading,{level:`2`,id:`where-to-integrate`,children:`Where to integrate`}),`\n`,_jsxs(_components.p,{children:[`Identify before enabling the sensitive session or account action. Start with the `,_jsx(_components.a,{href:`/api/sdks`,children:`SDK for your stack`}),` and retrieve the result on your backend.`]}),`\n`,_jsx(Heading,{level:`2`,id:`what-to-read`,children:`What to read`}),`\n`,_jsx(_components.p,{children:`Review risk signals, an unfamiliar verified device and any sharing, travel or takeover evaluation.`}),`\n`,_jsxs(_components.p,{children:[`Use the current `,_jsx(_components.a,{href:`/features/risk-signals`,children:`Risk Score and flags`}),`, plus `,_jsx(_components.a,{href:`/features/high-risk-events`,children:`High-Risk Events`}),` where relevant. Treat a missing or incomplete result as an explicit unverified state.`]}),`\n`,_jsx(Heading,{level:`2`,id:`how-to-act`,children:`How to act`}),`\n`,_jsx(_components.p,{children:`Require your existing second factor and bind successful verification to the same session and action.`}),`\n`,_jsx(_components.p,{children:`Exclude the current identification when comparing previous devices. Handle result delays with a defined pending state.`}),`\n`,_jsx(Heading,{level:`2`,id:`build-the-example`,children:`Build the example`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.a,{href:`/tutorials/new-login-device`,children:`runnable tutorial`}),` includes the starting app, the completed integration, and steps to test its behavior. Its application policy is stated separately from ShieldLabs detection.`]}),`\n`,_jsxs(_components.p,{children:[`For implementation details, see `,_jsx(_components.a,{href:`/guides/acting-on-risk-score`,children:`Acting on results`}),` and `,_jsx(_components.a,{href:`/api/identification-flow`,children:`Identification flow`}),`. Verify the expected domain, result age and account association, and consume protected actions atomically.`]})]})}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":"Step-up authentication","description":"Require another verification step when a login needs more evidence.","href":"/use-case/step-up-authentication"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Where to integrate","slug":"where-to-integrate","depth":2,"children":[]},{"title":"What to read","slug":"what-to-read","depth":2,"children":[]},{"title":"How to act","slug":"how-to-act","depth":2,"children":[]},{"title":"Build the example","slug":"build-the-example","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"shieldlabs-725d18f1","siteName":"ShieldLabs","title":"Step-up authentication - ShieldLabs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-25T10:42:52.164Z","originalFileLocation":"use-case/step-up-authentication.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=\"Require another verification step when a login needs more evidence.\">\u003cmeta data-mint-head name=\"application-name\" content=\"ShieldLabs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/shieldlabs-725d18f1/Es1ajIh8JexL3lhM/_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/shieldlabs-725d18f1/Es1ajIh8JexL3lhM/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/shieldlabs-725d18f1/Es1ajIh8JexL3lhM/_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/shieldlabs-725d18f1/Es1ajIh8JexL3lhM/_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/shieldlabs-725d18f1/Es1ajIh8JexL3lhM/_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/shieldlabs-725d18f1/Es1ajIh8JexL3lhM/_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/shieldlabs-725d18f1/Es1ajIh8JexL3lhM/_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/shieldlabs-725d18f1/Es1ajIh8JexL3lhM/_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/shieldlabs-725d18f1/Es1ajIh8JexL3lhM/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Step-up authentication - ShieldLabs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Require another verification step when a login needs more evidence.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"ShieldLabs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.shieldlabs.ai/use-case/step-up-authentication\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://shieldlabs-725d18f1.mintlify.site/_mintlify/api/og/v2?division=Accounts\u0026amp;title=Step-up+authentication\u0026amp;description=Require+another+verification+step+when+a+login+needs+more+evidence.\u0026amp;theme=8a3a86e7f132e7b0281cd143\u0026amp;signature=245bce48344ac6cd2deeaf80a677395cef465c986b1d9183478611265d5af998\">\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=\"Step-up authentication - ShieldLabs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Require another verification step when a login needs more evidence.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://shieldlabs-725d18f1.mintlify.site/_mintlify/api/og/v2?division=Accounts\u0026amp;title=Step-up+authentication\u0026amp;description=Require+another+verification+step+when+a+login+needs+more+evidence.\u0026amp;theme=8a3a86e7f132e7b0281cd143\u0026amp;signature=245bce48344ac6cd2deeaf80a677395cef465c986b1d9183478611265d5af998\">\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/shieldlabs-725d18f1/Es1ajIh8JexL3lhM/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"ShieldLabs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#009966\">\u003cmeta data-mint-head name=\"msvalidate.01\" content=\"AAA8BEBFE099D54745B8A6944A7C8038\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.shieldlabs.ai/use-case/step-up-authentication\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/use-case/step-up-authentication.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://shieldlabs.ai/#organization\",\"name\":\"ShieldLabs\",\"legalName\":\"ShieldLabs Inc\",\"url\":\"https://shieldlabs.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://docs.shieldlabs.ai/logo-light.svg\"},\"sameAs\":[\"https://x.com/Shieldlabs_ai\",\"https://www.linkedin.com/company/shieldlabs-ai\",\"https://github.com/ShieldLabs-ai\"]},{\"@type\":\"WebSite\",\"@id\":\"https://docs.shieldlabs.ai#website\",\"name\":\"ShieldLabs\",\"url\":\"https://docs.shieldlabs.ai\",\"publisher\":{\"@id\":\"https://shieldlabs.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.shieldlabs.ai/use-case/step-up-authentication#webpage\",\"url\":\"https://docs.shieldlabs.ai/use-case/step-up-authentication\",\"name\":\"Step-up authentication\",\"description\":\"Require another verification step when a login needs more evidence.\",\"dateModified\":\"2026-10-25T10:42:52.164Z\",\"isPartOf\":{\"@id\":\"https://docs.shieldlabs.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.shieldlabs.ai/use-case/step-up-authentication#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.shieldlabs.ai/use-case/step-up-authentication#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accounts\",\"item\":\"https://docs.shieldlabs.ai/use-case/multi-accounting\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Step-up authentication\",\"item\":\"https://docs.shieldlabs.ai/use-case/step-up-authentication\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.shieldlabs.ai/use-case/step-up-authentication#article\",\"headline\":\"Step-up authentication\",\"name\":\"Step-up authentication\",\"description\":\"Require another verification step when a login needs more evidence.\",\"url\":\"https://docs.shieldlabs.ai/use-case/step-up-authentication\",\"mainEntityOfPage\":{\"@id\":\"https://docs.shieldlabs.ai/use-case/step-up-authentication#webpage\"},\"dateModified\":\"2026-10-25T10:42:52.164Z\",\"publisher\":{\"@id\":\"https://shieldlabs.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.shieldlabs.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"ShieldLabs\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"ShieldLabs\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/use-case/step-up-authentication.md","siteName":"ShieldLabs","nav":{"global":null,"tabs":[{"tab":"Home","pages":[{"title":"Home","href":""}]},{"tab":"Start","pages":[{"title":"Start","href":"/quickstart"}]},{"tab":"Overview","pages":[{"title":"Overview","href":"/overview"}]},{"tab":"Use Case Tutorials","groups":[{"group":"Overview","pages":[{"title":"Use cases","href":"/use-case"}]},{"group":"Runnable examples","pages":[{"title":"Run a use case tutorial","href":"/tutorials/overview"},{"title":"New account fraud","href":"/tutorials/one-trial-per-device"},{"title":"Checkout review","href":"/tutorials/review-checkout"},{"title":"Paywall enforcement","href":"/tutorials/one-free-article"},{"title":"Account sharing","href":"/tutorials/account-sharing"}]},{"group":"Accounts and applications","pages":[{"title":"Account takeover","href":"/tutorials/new-login-device"},{"title":"Ban evasion","href":"/tutorials/ban-evasion"},{"title":"Credential stuffing","href":"/tutorials/credential-stuffing"},{"title":"Loan application review","href":"/tutorials/loan-application-review"}]},{"group":"Payments and rewards","pages":[{"title":"Welcome bonus","href":"/tutorials/welcome-bonus"},{"title":"Card testing","href":"/tutorials/card-testing"},{"title":"Chargeback evidence","href":"/tutorials/chargeback-evidence"},{"title":"Coupon abuse","href":"/tutorials/coupon-limit"},{"title":"First-order promotion","href":"/tutorials/first-order-promo"},{"title":"Referral fraud","href":"/tutorials/referral-pair"},{"title":"Survey fraud","href":"/tutorials/rewarded-survey"},{"title":"Sybil claims","href":"/tutorials/sybil-claim"}]},{"group":"Experience and traffic","pages":[{"title":"Returning visitor personalization","href":"/tutorials/returning-device"},{"title":"Regional pricing","href":"/tutorials/regional-discount"},{"title":"SMS pumping","href":"/tutorials/verification-sends"},{"title":"Web scraping","href":"/tutorials/automated-scraping"}]},{"group":"Investigate","pages":[{"title":"Investigate a user","href":"/use-case/investigate-a-user"}]},{"group":"Accounts","pages":[{"title":"Multi-accounting","href":"/use-case/multi-accounting"},{"title":"Account sharing","href":"/use-case/account-sharing"},{"title":"Account takeover","href":"/use-case/account-takeover"},{"title":"New account fraud","href":"/use-case/new-account-fraud"},{"title":"Ban evasion","href":"/use-case/ban-evasion"},{"title":"Credential stuffing","description":"Detect automation and repeated device activity around sign-in.","href":"/use-case/credential-stuffing"},{"title":"Step-up authentication","href":"/use-case/step-up-authentication"},{"title":"SMS pumping","description":"Check device activity before sending a paid verification message.","href":"/use-case/sms-pumping"}]},{"group":"Promotions and rewards","pages":[{"title":"Promo abuse","href":"/use-case/promo-abuse"},{"title":"Bonus abuse","href":"/use-case/bonus-abuse"},{"title":"Free-trial abuse","href":"/use-case/free-trial-abuse"},{"title":"Loyalty fraud","href":"/use-case/loyalty-fraud"},{"title":"Affiliate fraud","href":"/use-case/affiliate-fraud"},{"title":"Sybil claims","href":"/use-case/sybil-attack"},{"title":"Coupon abuse","href":"/use-case/coupon-abuse"}]},{"group":"Payments and content","pages":[{"title":"Checkout risk","href":"/use-case/payment-fraud"},{"title":"Chargeback evidence","href":"/use-case/chargeback-fraud"},{"title":"Paywall enforcement","href":"/use-case/paywall"},{"title":"Regional pricing","href":"/use-case/regional-pricing"},{"title":"Card testing","href":"/use-case/card-testing"}]},{"group":"Traffic and experience","pages":[{"title":"Traffic quality","href":"/use-case/traffic-quality"},{"title":"Returning visitor recognition","href":"/use-case/returning-visitor"}]}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api/identification-flow"}]}]},"basePath":"","title":"Step-up authentication - ShieldLabs","buildId":"dpl_41S5Z2jG9QnfDRwN1KZrLdBwj7DM","deploymentId":"dpl_41S5Z2jG9QnfDRwN1KZrLdBwj7DM","dynamics":[],"chunks":[]}