Authorization keys are the core primitive for control of Privy’s Wallet API. Authorization key signatures prove that requests are authorized directly by the permitted user.Self-custodial wallets are those owned directly by a user. Privy enables users to fully control their wallets by issuing time-bound authorization keys to users who authenticate via a verified JWT. Once users retrieve a time-bound authorization key, they can make requests with the key. This configuration results in cryptographically-enforced user custody of wallets.
All Privy client-side SDKs enable fully user non-custodial wallets by default.
Privy integrates directly with any OIDC or JWT-based authentication system and also offers dozens of login methods natively, including email, SMS, social login, passkeys, and more. If a user is logged in, they always have access to their wallet.
Directly managing user authorization keys via the API is an advanced setting. We recommend using
Privy’s SDKs, which internally manage user authorization keys.
Privy enables users to retrieve a time-bound authorization key directly via a REST API. This API can be called from either your app’s frontend or backend.Privy infrastructure issues authorization keys from within trusted execution environments (TEEs)—see TEE architecture for more information. Privy integrates with any asymmetric JWT-based authentication system, such as Privy’s native authentication system, Auth0, Firebase, or any OIDC or OAuth authentication provider.The architecture works as follows:
Your app makes a request to the Privy API using the authentication token from your JWT-based authentication system.
The TEE issues a time-bound user authorization key in response.
Use the authorization key to authorize requests to the Wallet API.
The following diagram illustrates an server-side integration. Note that Privy client-side SDKs fully manage direct client-side integrations.
When you use a Privy SDK to provision and transact with user wallets, the SDK fully manages user authorization keys internally.
The returned time-bound authorization key is encrypted from the TEE to the client using HPKE (Hybrid Public Key Encryption), using the same method used by the wallet export API.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Privy Docs","colors":{"primary":"#010110","light":"#FFFFFF"},"logo":{"light":"https://mintcdn.com/privy-c2af3412/Ih_Fo3QYM486gzWq/logo/privy-logo-light.png?fit=max\u0026auto=format\u0026n=Ih_Fo3QYM486gzWq\u0026q=85\u0026s=bd297b680ace8a13db4d9ce977f93180","dark":"https://mintcdn.com/privy-c2af3412/Ih_Fo3QYM486gzWq/logo/privy-logo-dark.png?fit=max\u0026auto=format\u0026n=Ih_Fo3QYM486gzWq\u0026q=85\u0026s=24d83970695ab19a1803a2eb00dbea4e"},"favicon":"https://mintcdn.com/privy-c2af3412/YByWVKlFbSpnpSJG/favicon.png?fit=max\u0026auto=format\u0026n=YByWVKlFbSpnpSJG\u0026q=85\u0026s=ee4038168ea586e5f72041e5e2a1f5c8","api":{"openapi":{"source":"https://api.staging.privy.io/v1/openapi.json"},"playground":{"display":"interactive"},"examples":{"languages":["curl","java","javascript","php","go"]},"mdx":{"server":"https://api.privy.io"}},"background":{"color":{"light":"#FFFFFF","dark":"#010110"}},"navbar":{"links":[{"href":"https://demo.privy.io","label":"Demo"},{"href":"https://privy.io/slack","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://dashboard.privy.io"}},"seo":{"metatags":{"og:type":"website","og:site_name":"Privy Docs","og:image":"https://assets.privy.io/docs-og.png","twitter:title":"Privy Docs","twitter:card":"summary_large_image","twitter:image":"https://assets.privy.io/docs-og.png"},"organization":{"id":"https://www.privy.io/#organization","name":"Privy","url":"https://www.privy.io","logo":"https://assets.privy.io/docs-og.png","sameAs":["https://x.com/privy_io","https://github.com/privy-io"]}},"styling":{"codeblocks":"system","latex":true},"integrations":{"gtm":{"tagId":"GTM-WV9MVTB3"}},"contextual":{"options":["claude","chatgpt","cursor","vscode","mcp","copy","view"],"display":"header"},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"privy-c2af3412","hasAudioNarration":false,"actualSubdomain":"privy-c2af3412","customDomains":["docs.privy.io"],"gitSource":{"type":"github","owner":"privy-io","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae4e553b20d11886a4cce74","collectionId":"53384d6e-0531-4740-9e51-f6740a7e4bf4","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae4e553b20d11886a4cce74"},"feedback":{"issues":true,"thumbs":true,"edits":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae4e553b20d11886a4cce74","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"Wallets","count":282},{"language":"default","tag":"API reference","count":239},{"language":"default","tag":"Recipes","count":139},{"language":"default","tag":"All recipes","count":138},{"language":"default","tag":"Identity","count":130},{"language":"default","tag":"Signatures and transactions","count":90},{"language":"default","tag":"Basics","count":86},{"language":"default","tag":"Users","count":82},{"language":"default","tag":"Financial flows","count":79},{"language":"default","tag":"Controls","count":76}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","href":"/_mintlify/custom/privy-c2af3412/4e67a2a256ed8221/style.css"}],"page":{"pagePath":"security/authentication/authenticated-signers","slug":"/security/authentication/authenticated-signers","pageMetadata":{"title":"User authorization keys","sidebarTitle":"User authorization keys","description":null,"href":"/security/authentication/authenticated-signers"},"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`,li:`li`,ol:`ol`,p:`p`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Frame,Heading,Info,OptimizedImage,Tip}=_components;if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[_jsx(_components.a,{href:`/security/wallet-infrastructure/policy-and-controls`,children:`Authorization keys`}),` are the core primitive for control of Privy’s `,_jsx(_components.a,{href:`/security/wallet-infrastructure/architecture`,children:`Wallet API`}),`. Authorization key signatures prove that requests are authorized directly by the permitted user.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Self-custodial`}),` wallets are those owned directly by a user. Privy enables users to fully control their wallets by issuing time-bound authorization keys to users who authenticate via a verified JWT. Once users retrieve a time-bound authorization key, they can make requests with the key. This configuration results in cryptographically-enforced user custody of wallets.`]}),`\n`,_jsxs(Tip,{children:[`All Privy client-side SDKs enable `,_jsx(_components.strong,{children:`fully user non-custodial wallets by default`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`authentication-methods`,children:`Authentication methods`}),`\n`,_jsxs(_components.p,{children:[`Privy integrates directly with any OIDC or JWT-based authentication system and also offers `,_jsx(_components.a,{href:`/security/authentication/user-authentication`,children:`dozens of login methods natively`}),`, including email, SMS, social login, passkeys, and more. If a user is logged in, they always have access to their wallet.`]}),`\n`,_jsx(Heading,{level:`3`,id:`multi-factor-authentication`,children:`Multi-factor authentication`}),`\n`,_jsx(_components.p,{children:`Privy also enables multi-factor authentication for access to user authorization keys. Supported additional factors include:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Authenticator apps (TOTP)`}),`\n`,_jsx(_components.li,{children:`Biometric verification (passkeys)`}),`\n`,_jsx(_components.li,{children:`SMS confirmation`}),`\n`,_jsx(_components.li,{children:`Hardware security keys`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`This means your app can require additional user verification for sensitive wallet operations. `,_jsx(_components.a,{href:`/authentication/user-authentication/mfa#mfa`,children:`Learn more`})]}),`\n`,_jsx(Heading,{level:`2`,id:`direct-access-via-api`,children:`Direct access via API`}),`\n`,_jsx(Info,{children:_jsx(_components.p,{children:`Directly managing user authorization keys via the API is an advanced setting. We recommend using\nPrivy’s SDKs, which internally manage user authorization keys.`})}),`\n`,_jsxs(_components.p,{children:[`Privy enables users to retrieve a `,_jsx(_components.strong,{children:`time-bound authorization key directly via a REST API`}),`. This API can be called from either your app’s frontend or backend.`]}),`\n`,_jsxs(_components.p,{children:[`Privy infrastructure issues authorization keys from within trusted execution environments (TEEs)—see `,_jsx(_components.a,{href:`/security/wallet-infrastructure/architecture`,children:`TEE architecture`}),` for more information. Privy integrates with any asymmetric JWT-based authentication system, such as Privy’s native authentication system, Auth0, Firebase, or any OIDC or OAuth authentication provider.`]}),`\n`,_jsx(_components.p,{children:`The architecture works as follows:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Your app makes a request to the Privy API using the authentication token from your JWT-based authentication system.`}),`\n`,_jsx(_components.li,{children:`The TEE issues a time-bound user authorization key in response.`}),`\n`,_jsx(_components.li,{children:`Use the authorization key to authorize requests to the Wallet API.`}),`\n`]}),`\n`,_jsx(_components.p,{children:`The following diagram illustrates an server-side integration. Note that Privy client-side SDKs fully manage direct client-side integrations.`}),`\n`,_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/privy-c2af3412/zlmLhiIqRR7ViKN0/images/security/api-signer.png?fit=max\u0026auto=format\u0026n=zlmLhiIqRR7ViKN0\u0026q=85\u0026s=401aafbbeab800590d4e4585500384ac`,alt:`Server-side user authorization keys`,\"data-og-width\":`4161`,width:`4161`,\"data-og-height\":`2634`,height:`2634`,\"data-path\":`images/security/api-signer.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/privy-c2af3412/zlmLhiIqRR7ViKN0/images/security/api-signer.png?w=280\u0026fit=max\u0026auto=format\u0026n=zlmLhiIqRR7ViKN0\u0026q=85\u0026s=50bd2cd4b1657ac8f57f0fcf9ed98beb 280w, https://mintcdn.com/privy-c2af3412/zlmLhiIqRR7ViKN0/images/security/api-signer.png?w=560\u0026fit=max\u0026auto=format\u0026n=zlmLhiIqRR7ViKN0\u0026q=85\u0026s=ea06644f0795c54be5c4b6a580d5b5ad 560w, https://mintcdn.com/privy-c2af3412/zlmLhiIqRR7ViKN0/images/security/api-signer.png?w=840\u0026fit=max\u0026auto=format\u0026n=zlmLhiIqRR7ViKN0\u0026q=85\u0026s=21cd0497a84262d94c8db66d7840e5ae 840w, https://mintcdn.com/privy-c2af3412/zlmLhiIqRR7ViKN0/images/security/api-signer.png?w=1100\u0026fit=max\u0026auto=format\u0026n=zlmLhiIqRR7ViKN0\u0026q=85\u0026s=de6011141e74462f764130040476f987 1100w, https://mintcdn.com/privy-c2af3412/zlmLhiIqRR7ViKN0/images/security/api-signer.png?w=1650\u0026fit=max\u0026auto=format\u0026n=zlmLhiIqRR7ViKN0\u0026q=85\u0026s=d71df3f552278cb34045af0639cbdc73 1650w, https://mintcdn.com/privy-c2af3412/zlmLhiIqRR7ViKN0/images/security/api-signer.png?w=2500\u0026fit=max\u0026auto=format\u0026n=zlmLhiIqRR7ViKN0\u0026q=85\u0026s=a978b793e55c5e72e37cd88e2e8b664b 2500w`})}),`\n`,_jsx(_components.p,{children:`When you use a Privy SDK to provision and transact with user wallets, the SDK fully manages user authorization keys internally.`}),`\n`,_jsx(Heading,{level:`3`,id:`encryption`,children:`Encryption`}),`\n`,_jsxs(_components.p,{children:[`The returned time-bound authorization key is encrypted from the TEE to the client using HPKE (Hybrid Public Key Encryption), using the same method used by the `,_jsx(_components.a,{href:`/api-reference/wallets/export`,children:`wallet export API`}),`.`]})]})}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":{"codeStyling":"system","config":{},"pageMetadata":{"title":"User authorization keys","sidebarTitle":"User authorization keys","description":null,"href":"/security/authentication/authenticated-signers"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Authentication methods","slug":"authentication-methods","depth":3,"children":[]},{"title":"Multi-factor authentication","slug":"multi-factor-authentication","depth":3,"children":[]},{"title":"Direct access via API","slug":"direct-access-via-api","depth":2,"children":[{"title":"Encryption","slug":"encryption","depth":3,"children":[]}]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/privy-c2af3412/9a6cfa36ced76db0/welcome.js","/_mintlify/custom/privy-c2af3412/1af79d46bd64cd8b/fullstory.js","/_mintlify/custom/privy-c2af3412/e4d91321024fde21/recipes/recipes-search.js","/_mintlify/custom/privy-c2af3412/d31c5451398ab22c/check-links.js"],"subdomain":"privy-c2af3412","siteName":"Privy Docs","title":"User authorization keys - Privy Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-30T18:43:58.075Z","originalFileLocation":"security/authentication/authenticated-signers.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=\"application-name\" content=\"Privy 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/privy-c2af3412/bJgmnaRQwH8sO8y5/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/privy-c2af3412/bJgmnaRQwH8sO8y5/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/privy-c2af3412/bJgmnaRQwH8sO8y5/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/privy-c2af3412/bJgmnaRQwH8sO8y5/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/privy-c2af3412/bJgmnaRQwH8sO8y5/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/privy-c2af3412/bJgmnaRQwH8sO8y5/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/privy-c2af3412/bJgmnaRQwH8sO8y5/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/privy-c2af3412/bJgmnaRQwH8sO8y5/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/privy-c2af3412/bJgmnaRQwH8sO8y5/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"User authorization keys - Privy Docs\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Privy Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.privy.io/security/authentication/authenticated-signers\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://assets.privy.io/docs-og.png\">\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=\"Privy Docs\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://assets.privy.io/docs-og.png\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/privy-c2af3412/bJgmnaRQwH8sO8y5/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Privy Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#010110\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.privy.io/security/authentication/authenticated-signers\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/security/authentication/authenticated-signers.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://www.privy.io/#organization\",\"name\":\"Privy\",\"url\":\"https://www.privy.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://assets.privy.io/docs-og.png\"},\"sameAs\":[\"https://x.com/privy_io\",\"https://github.com/privy-io\"]},{\"@type\":\"WebSite\",\"@id\":\"https://docs.privy.io#website\",\"name\":\"Privy Docs\",\"url\":\"https://docs.privy.io\",\"publisher\":{\"@id\":\"https://www.privy.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.privy.io/security/authentication/authenticated-signers#webpage\",\"url\":\"https://docs.privy.io/security/authentication/authenticated-signers\",\"name\":\"User authorization keys\",\"dateModified\":\"2026-10-30T18:43:58.075Z\",\"isPartOf\":{\"@id\":\"https://docs.privy.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.privy.io/security/authentication/authenticated-signers#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.privy.io/security/authentication/authenticated-signers#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Authentication\",\"item\":\"https://docs.privy.io/security/authentication/user-authentication\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"User authorization keys\",\"item\":\"https://docs.privy.io/security/authentication/authenticated-signers\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.privy.io/security/authentication/authenticated-signers#article\",\"headline\":\"User authorization keys\",\"name\":\"User authorization keys\",\"url\":\"https://docs.privy.io/security/authentication/authenticated-signers\",\"mainEntityOfPage\":{\"@id\":\"https://docs.privy.io/security/authentication/authenticated-signers#webpage\"},\"image\":\"https://assets.privy.io/docs-og.png\",\"dateModified\":\"2026-10-30T18:43:58.075Z\",\"publisher\":{\"@id\":\"https://www.privy.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.privy.io#website\"}}]}\u003c/script>","siteName":"Privy Docs","nav":{"global":null,"tabs":[{"tab":"Basics","pages":[{"title":"Basics","href":"/basics/get-started/about"}]},{"tab":"Wallets","menu":[{"item":"Overview","pages":[{"title":"Overview","href":"/wallets/overview"}]},{"item":"Embedded wallets","pages":[{"title":"Embedded wallets","href":"/wallets/overview/embedded"}]},{"item":"Organization wallets","pages":[{"title":"Organization wallets","href":"/organizations/overview"}]},{"item":"External wallets","pages":[{"title":"External wallets","href":"/wallets/connectors/overview"}]},{"item":"Signatures and transactions","pages":[{"title":"Signatures and transactions","href":"/wallets/signatures-and-transactions"}]},{"item":"Balances and webhooks","pages":[{"title":"Balances and webhooks","href":"/wallets/gas-and-asset-management/assets/overview"}]},{"item":"Gas and fee management","pages":[{"title":"Gas and fee management","href":"/wallets/gas-and-asset-management/gas/overview"}]}],"pages":[{"title":"Wallets","href":"/wallets/overview"}]},{"tab":"Financial flows","menu":[{"item":"Overview","pages":[{"title":"Overview","href":"/financial-flows/overview"}]},{"item":"Deposits","pages":[{"title":"Deposits","href":"/financial-flows/deposits/overview"}]},{"item":"Payouts","pages":[{"title":"Payouts","href":"/financial-flows/payouts/overview"}]},{"item":"Earn","pages":[{"title":"Earn","href":"/wallets/actions/earn/overview"}]},{"item":"Cards","pages":[{"title":"Cards","href":"/financial-flows/cards/overview"}]},{"item":"Trade","pages":[{"title":"Trade","href":"/wallets/actions/swap/overview"}]},{"item":"Monetization","pages":[{"title":"Monetization","href":"/financial-flows/monetization"}]},{"item":"Treasury management","pages":[{"title":"Treasury management","href":"/treasury-management/overview"}]},{"item":"Private transactions","pages":[{"title":"Private transactions","href":"/financial-flows/private-transactions"}]}],"pages":[{"title":"Financial flows","href":"/financial-flows/overview"}]},{"tab":"Controls and policies","menu":[{"item":"Controls","pages":[{"title":"Controls","href":"/controls/overview"}]},{"item":"Policies","pages":[{"title":"Policies","href":"/controls/policies/overview"}]},{"item":"Manual approvals","pages":[{"title":"Manual approvals","href":"/controls/dashboard/overview"}]}],"pages":[{"title":"Controls and policies","href":"/controls/overview"}]},{"tab":"Identity","menu":[{"item":"Authentication","pages":[{"title":"Authentication","href":"/authentication/overview"}]},{"item":"Users","pages":[{"title":"Users","href":"/user-management/users/overview"}]},{"item":"KYC and KYB","pages":[{"title":"KYC and KYB","href":"/kyc-kyb/overview"}]}],"pages":[{"title":"Identity","href":"/authentication/overview"}]},{"tab":"Security","pages":[{"title":"Security","sidebarTitle":"Overview","href":"/security/overview"},{"group":"Wallet infrastructure","pages":[{"title":"Security architecture","sidebarTitle":"Architecture","href":"/security/wallet-infrastructure/architecture"},{"title":"Secure enclaves","sidebarTitle":"Secure enclaves","href":"/security/wallet-infrastructure/secure-enclaves"},{"title":"Wallet policies and controls","sidebarTitle":"Policy and controls","href":"/security/wallet-infrastructure/policy-and-controls"},{"group":"Advanced","pages":[{"title":"On device execution environment","sidebarTitle":"On device","href":"/security/wallet-infrastructure/advanced/user-device"}]}]},{"group":"Authentication","pages":[{"title":"User authentication","sidebarTitle":"User authentication","description":null,"href":"/security/authentication/user-authentication"},{"title":"User authorization keys","sidebarTitle":"User authorization keys","href":"/security/authentication/authenticated-signers"}]},{"group":"Implementation guide","pages":[{"title":"Security checklist","sidebarTitle":"Security checklist","description":null,"href":"/security/implementation-guide/security-checklist"},{"title":"Guidance for content security policies (CSPs)","sidebarTitle":"Content security policies (CSPs)","href":"/security/implementation-guide/content-security-policy"},{"title":"IP allowlist","sidebarTitle":"IP allowlist","href":"/security/implementation-guide/ip-allowlist"},{"title":"Activity logs","href":"/security/implementation-guide/activity-logs"}]},{"title":"Threat models \u0026 security FAQ","sidebarTitle":"Security FAQs","href":"/security/security-faqs"}]},{"tab":"Recipes","pages":[{"title":"Recipes","href":"/recipes/overview"}]},{"tab":"API reference","pages":[{"title":"API reference","href":"/api-reference/introduction"}]}]},"basePath":"","title":"User authorization keys - Privy Docs","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-DXXFP6nH.js","DynamicMarkdown-B54_zNBF.js","zoom-image-lightbox-BG6oD64b.js","lightbox-handle-r17bVUz3.js"]}