Verify an internal OAuth token redirected to your application upon the completion of the OAuth flow. This token is generated by MoonKey and can be used to exchange for the authenticated user information and/or the original access_token and refresh_token of the idp providers that can be used directly with the external OAuth providers (e.g., Google, Apple, Microsoft, etc).
Returns
A successful response returns user_id, idp_session property with data from the OAuth provider by default. Session object in session property if any of the session_token, session_jwt, or session_expires_in is valid.
Required OAuthToken provided to the login/signup redirect url to authenticate the OAuth session and exchange user info and idp access_token and refresh_token.
Extend the session expiration time to N minutes from now, must be between 5 to 525600 minutes (365 days). This parameter will create a new session if there is no existing session along with a session_token and session_jwt. However, if a valid session_token or session_jwt is sent in, it will extend that session by the minutes specified. If not sent in and no valid session_token or session_jwt included, it will be ignored and no MoonKey session will be created by default.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"moonkey docs","colors":{"primary":"#7D00FF","light":"#8d60f0","dark":"#5C35B1"},"logo":{"light":"https://mintcdn.com/streambird-23/7SoXp5lRb42-tDXG/logo/moonkey-logo-light.svg?fit=max\u0026auto=format\u0026n=7SoXp5lRb42-tDXG\u0026q=85\u0026s=d79111a5ab7380e32858a62bc531ecfc","dark":"https://mintcdn.com/streambird-23/KaaakNPa1CnYmCK_/logo/moonkey-logo-dark.svg?fit=max\u0026auto=format\u0026n=KaaakNPa1CnYmCK_\u0026q=85\u0026s=c70dbe7c8b31c1b909d323ec37859637"},"favicon":"/favicon.png","api":{"mdx":{"auth":{"method":"bearer"},"server":"https://api.moonkey.fun"}},"navbar":{"links":[]},"footer":{"socials":{"github":"https://github.com/moonkey","website":"https://moonkey.fun"}},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"streambird-23","hasAudioNarration":false,"actualSubdomain":"streambird-23","customDomains":["docs.streambird.io"],"gitSource":{"type":"github","owner":"tim-moonpay","repo":"mintlify-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6a21a5c87676216effceffac","collectionId":"7c239a6a-5f04-43f3-aec7-14c261c32b26","schemaVersion":"v2"},"entitlements":{},"buildId":"6ae9157d2bff7601755cebb5:success","clientVersion":"0.0.4054","searchFilterCounts":[{"language":"default","tag":"API Reference","count":62},{"language":"default","tag":"Wallet as a Service","count":26},{"language":"default","tag":"Get Started","count":18},{"language":"default","tag":"Authentication","count":13},{"language":"default","tag":"Using Streambird authentication","count":12},{"language":"default","tag":"Using wallets","count":11},{"language":"default","tag":"Users","count":10},{"language":"default","tag":"Recipes","count":10},{"language":"default","tag":"Managed Wallets","count":9},{"language":"default","tag":"Sessions","count":8}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/oauth/verify-token","slug":"/api-reference/oauth/verify-token","pageMetadata":{"openapi":"post /v1/auth/oauth/verify","title":"Verify Token","description":"Verify an internal OAuth token redirected to your application upon the completion of the OAuth flow. This token is generated by MoonKey and can be used to exchange for the authenticated user information and/or the original `access_token` and `refresh_token` of the idp providers that can be used directly with the external OAuth providers (e.g., Google, Apple, Microsoft, etc).\n## Returns\n\nA successful response returns `user_id`, `idp_session` property with data from the OAuth provider by default. `Session` object in `session` property if any of the `session_token`, `session_jwt`, or `session_expires_in` is valid.","href":"/api-reference/oauth/verify-token"},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n h2: \"h2\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Verify an internal OAuth token redirected to your application upon the completion of the OAuth flow. This token is generated by MoonKey and can be used to exchange for the authenticated user information and/or the original \", _jsx(_components.code, {\n children: \"access_token\"\n }), \" and \", _jsx(_components.code, {\n children: \"refresh_token\"\n }), \" of the idp providers that can be used directly with the external OAuth providers (e.g., Google, Apple, Microsoft, etc).\"]\n }), \"\\n\", _jsx(_components.h2, {\n children: \"Returns\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"A successful response returns \", _jsx(_components.code, {\n children: \"user_id\"\n }), \", \", _jsx(_components.code, {\n children: \"idp_session\"\n }), \" property with data from the OAuth provider by default. \", _jsx(_components.code, {\n children: \"Session\"\n }), \" object in \", _jsx(_components.code, {\n children: \"session\"\n }), \" property if any of the \", _jsx(_components.code, {\n children: \"session_token\"\n }), \", \", _jsx(_components.code, {\n children: \"session_jwt\"\n }), \", or \", _jsx(_components.code, {\n children: \"session_expires_in\"\n }), \" is valid.\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"openapi":"post /v1/auth/oauth/verify","title":"Verify Token","description":"Verify an internal OAuth token redirected to your application upon the completion of the OAuth flow. This token is generated by MoonKey and can be used to exchange for the authenticated user information and/or the original `access_token` and `refresh_token` of the idp providers that can be used directly with the external OAuth providers (e.g., Google, Apple, Microsoft, etc).\n## Returns\n\nA successful response returns `user_id`, `idp_session` property with data from the OAuth provider by default. `Session` object in `session` property if any of the `session_token`, `session_jwt`, or `session_expires_in` is valid.","href":"/api-reference/oauth/verify-token"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Verify Token","operationId":"VerifyOAuthToken","responses":{"200":"90419a0b-cd2e-4200-a232-4eb10ba2985d"},"description":"Verify an internal OAuth token redirected to your application upon the completion of the OAuth flow. This token is generated by MoonKey and can be used to exchange for the authenticated user information and/or the original `access_token` and `refresh_token` of the idp providers that can be used directly with the external OAuth providers (e.g., Google, Apple, Microsoft, etc).\n## Returns\n\nA successful response returns `user_id`, `idp_session` property with data from the OAuth provider by default. `Session` object in `session` property if any of the `session_token`, `session_jwt`, or `session_expires_in` is valid.","tags":["OAuth"],"requestBody":"3d5e1a8f-c64a-4db5-88de-6ca0c4eacdce","method":"post","type":"path","servers":["d20f097c-20a8-4afd-b7e5-e96252956d43"],"security":["00d0480a-c2e3-4624-98cd-868739f70878"],"path":"/v1/auth/oauth/verify","baseUrlOptions":["https://api.moonkey.fun"],"title":"Verify Token","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"content":{"application/json":{"schema":{"description":"","type":"object","properties":{"token":{"type":"string","minLength":1,"description":"`Required` OAuthToken provided to the login/signup redirect url to authenticate the OAuth session and exchange user info and idp `access_token` and `refresh_token`.","isRequired":true,"uniqueKey":"token","typeLabel":"string"},"session_expires_in":{"type":"number","description":"Extend the session expiration time to N minutes from now, must be between 5 to 525600 minutes (365 days). This parameter will create a new session if there is no existing session along with a `session_token` and `session_jwt`. However, if a valid `session_token` or `session_jwt` is sent in, it will extend that session by the minutes specified. If not sent in and no valid `session_token` or `session_jwt` included, it will be ignored and no MoonKey session will be created by default.","uniqueKey":"session_expires_in","typeLabel":"number"},"session_token":{"type":"string","minLength":1,"description":"Unique session token to verify.","uniqueKey":"session_token","typeLabel":"string"},"session_jwt":{"type":"string","description":"Unique Session JWT to verify.","uniqueKey":"session_jwt","typeLabel":"string"}},"required":["token"],"uniqueKey":"","typeLabel":"object"},"examples":{"VerifyOAuthTokenReq":{"title":"VerifyOAuthTokenReq","value":{"token":"yRqkvNQVTwddlZV6D7S0ypSNpHlCbfYG4OAw3oUIVFFZ27UJ8R0xmRUQfNF59G9i"}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"90419a0b-cd2e-4200-a232-4eb10ba2985d":{"description":"Verify Token response","content":{"application/json":{"schema":{"description":"","type":"object","properties":{"provider_subject":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"provider_subject","typeLabel":"string"},"provider":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"provider","typeLabel":"string"},"user_id":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"user_id","typeLabel":"string"},"idp_session":{"type":"object","description":"Returned if `session_type` with value `idp` is used.","required":["idp"],"properties":{"idp":{"type":"object","required":["access_token","refresh_token"],"properties":{"access_token":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"idp_session.idp.access_token","typeLabel":"string"},"refresh_token":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"idp_session.idp.refresh_token","typeLabel":"string"}},"isRequired":true,"uniqueKey":"idp_session.idp","typeLabel":"object"}},"isRequired":true,"uniqueKey":"idp_session","typeLabel":"object"},"session_token":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"session_token","typeLabel":"string"},"session":{"description":"","type":"object","x-examples":{"Session":{"id":"sess_24tZ6tlJ7CxlTwB6Zoj6SHQ9vU3","user_id":"user_24wFP9pDa9YiMJLun94iKykoZs2","session_token":"7hssInGtOjKGUh8w7T4NjgLIKKSw6UdZ8uOduBYmJzrtfV6GrNtaUYoGehRS6jBh","started_at":1643496805,"expires_at":1643502805,"last_active_at":1643496805,"factors":[{"delivery_channel":"sms","type":"otp","method":{"method_id":"pn_24oXBLRv6BoHXbNZoTAZkAFlRsy","method_type":"phone_number","phone_number_id":"pn_24oXBLRv6BoHXbNZoTAZkAFlRsy","phone_number":"+14152222222","last_verified_at":1643496805}}],"device_fingerprint":{"user_agent":"","ip":"123.2.1.1"},"updated_at":1643496805,"created_at":1643496805}},"title":"Session","properties":{"id":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"session.id","typeLabel":"string"},"user_id":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"session.user_id","typeLabel":"string"},"session_token":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"session.session_token","typeLabel":"string"},"started_at":{"type":"number","isRequired":true,"uniqueKey":"session.started_at","typeLabel":"number"},"expires_at":{"type":"number","isRequired":true,"uniqueKey":"session.expires_at","typeLabel":"number"},"last_active_at":{"type":"number","isRequired":true,"uniqueKey":"session.last_active_at","typeLabel":"number"},"factors":{"type":"array","uniqueItems":true,"minItems":1,"items":{"type":"object","properties":{"delivery_channel":{"type":"string","minLength":1,"description":"Delivery channel for this factor. Possible values: sms, email, totp_authenticator, totp_recovery_code, google_oauth, apple_oauth, microsoft_oauth, discord_oauth, okta_oauth, github_oauth, slack_oauth, facebook_oauth, webauthn_credential, eth_wallet, sol_wallet.","isRequired":true,"uniqueKey":"session.factors.items.[INDEX].delivery_channel","typeLabel":"string"},"type":{"type":"string","minLength":1,"description":"Authentication type of factor. Possible values: otp, oauth, wallet, totp, webauthn.","isRequired":true,"uniqueKey":"session.factors.items.[INDEX].type","typeLabel":"string"},"method":{"type":"object","required":["method_id","method_type","last_verified_at"],"properties":{"method_id":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"session.factors.items.[INDEX].method.method_id","typeLabel":"string"},"method_type":{"type":"string","minLength":1,"description":"Identifier method type. Possible values: email, wallet, phone_number, webauthn.","isRequired":true,"uniqueKey":"session.factors.items.[INDEX].method.method_type","typeLabel":"string"},"last_verified_at":{"type":"number","isRequired":true,"uniqueKey":"session.factors.items.[INDEX].method.last_verified_at","typeLabel":"number"},"id":{"type":"string","uniqueKey":"session.factors.items.[INDEX].method.id","typeLabel":"string"},"phone_number_id":{"type":"string","minLength":1,"uniqueKey":"session.factors.items.[INDEX].method.phone_number_id","typeLabel":"string"},"phone_number":{"type":"string","minLength":1,"uniqueKey":"session.factors.items.[INDEX].method.phone_number","typeLabel":"string"},"email_id":{"type":"string","uniqueKey":"session.factors.items.[INDEX].method.email_id","typeLabel":"string"},"email":{"type":"string","uniqueKey":"session.factors.items.[INDEX].method.email","typeLabel":"string"},"wallet_type":{"type":"string","uniqueKey":"session.factors.items.[INDEX].method.wallet_type","typeLabel":"string"},"wallet_id":{"type":"string","uniqueKey":"session.factors.items.[INDEX].method.wallet_id","typeLabel":"string"},"wallet_public_address":{"type":"string","uniqueKey":"session.factors.items.[INDEX].method.wallet_public_address","typeLabel":"string"},"totp_id":{"type":"string","uniqueKey":"session.factors.items.[INDEX].method.totp_id","typeLabel":"string"},"webauthn_credential_id":{"type":"string","uniqueKey":"session.factors.items.[INDEX].method.webauthn_credential_id","typeLabel":"string"},"provider_subject":{"type":"string","uniqueKey":"session.factors.items.[INDEX].method.provider_subject","typeLabel":"string"}},"isRequired":true,"uniqueKey":"session.factors.items.[INDEX].method","typeLabel":"object"}},"required":["delivery_channel","type","method"],"uniqueKey":"session.factors.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"session.factors","typeLabel":"object[]"},"device_fingerprint":{"type":"object","required":["user_agent","ip"],"properties":{"user_agent":{"type":"string","isRequired":true,"uniqueKey":"session.device_fingerprint.user_agent","typeLabel":"string"},"ip":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"session.device_fingerprint.ip","typeLabel":"string"}},"isRequired":true,"uniqueKey":"session.device_fingerprint","typeLabel":"object"},"updated_at":{"type":"number","isRequired":true,"uniqueKey":"session.updated_at","typeLabel":"number"},"created_at":{"type":"number","isRequired":true,"uniqueKey":"session.created_at","typeLabel":"number"}},"required":["id","user_id","session_token","started_at","expires_at","last_active_at","factors","device_fingerprint","updated_at","created_at"],"isRequired":true,"uniqueKey":"session","typeLabel":"Session · object"},"session_jwt":{"type":"string","uniqueKey":"session_jwt","typeLabel":"string"}},"required":["provider_subject","provider","user_id","idp_session","session_token","session"],"uniqueKey":"","typeLabel":"object"},"examples":{"VerifyOAuthTokenResp":{"title":"VerifyOAuthTokenResp","value":{"provider_subject":"100157402424066154830","provider":"google","user_id":"user_24wFP9pDa9YiMJLun94iKykoZs2","idp_session":{"idp":{"access_token":"ya29.A0ARrdaM9TnNfrdqDZmBIw7PBPjYf0HELFdxDCNC2cQRK7aqgsIfIusuCd0SJ5nx9dgGti2KU-rt_dIV7cpxasqpCpRq7VNyv-KsbC2-cn6j76p_wVmUwCKlWZ_3ZHx8WFdlIrLu-E1q3Ea_11zfmQCwuwgBMl","refresh_token":"1//0d2jmQJmy0z17CgYIARAAGA0SNwF-L9IrF-jEvfwE-YNr_--Cqzu7MGnmtpLu0kklcFfgJzI2FSBib9_4wh1MAs4JKbAvue2XJoI"}},"session":null,"session_token":""}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"00d0480a-c2e3-4624-98cd-868739f70878":{"Authorization":{"type":"http","scheme":"bearer","description":"Auth Platform API includes all the Auth related features. All Users, Phone Numbers, Emails, and OTPs are associated with an `App` as the container.\n\nEndpoints only accept App's `Secret API keys` other than certain endpoints that are used client side or via SDK that accept the `public_token`.\n\n## Authentication using App Api Key\n\n## Header:\n\n```\nAuthorization: Bearer {api_key}\n```\n\n## Authenticated Request\n\n```curl\ncurl \\\n -X GET https://api.moonkey.fun/v1/auth/users/user_24wFP9pDa9YiMJLun94iKykoZs2 \\\n -H \"Authorization: Bearer sk_test_pRqweh3wvWmJAAVYv7Z0T5iPLzFM4ql0muoyQcjOxGeN3p1r\"\n```","scopes":[]}}},"servers":{"d20f097c-20a8-4afd-b7e5-e96252956d43":{"url":"https://api.moonkey.fun","description":"Production","variables":{}}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"Auth Platform API includes all the Auth related features. All Users, Phone Numbers, Emails, and OTPs are associated with an `App` as the container.\n\nEndpoints only accept App's `Secret API keys` other than certain endpoints that are used client side or via SDK that accept the `public_token`.\n\n## Authentication using App Api Key\n\n## Header:\n\n```\nAuthorization: Bearer {api_key}\n```\n\n## Authenticated Request\n\n```curl\ncurl \\\n -X GET https://api.moonkey.fun/v1/auth/users/user_24wFP9pDa9YiMJLun94iKykoZs2 \\\n -H \"Authorization: Bearer sk_test_pRqweh3wvWmJAAVYv7Z0T5iPLzFM4ql0muoyQcjOxGeN3p1r\"\n```","scopes":[]},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Auth Platform API includes all the Auth related features. All Users, Phone Numbers, Emails, and OTPs are associated with an `App` as the container.\n\nEndpoints only accept App's `Secret API keys` other than certain endpoints that are used client side or via SDK that accept the `public_token`.\n\n## Authentication using App Api Key\n\n## Header:\n\n```\nAuthorization: Bearer {api_key}\n```\n\n## Authenticated Request\n\n```curl\ncurl \\\n -X GET https://api.moonkey.fun/v1/auth/users/user_24wFP9pDa9YiMJLun94iKykoZs2 \\\n -H \"Authorization: Bearer sk_test_pRqweh3wvWmJAAVYv7Z0T5iPLzFM4ql0muoyQcjOxGeN3p1r\"\n```","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"Authorization","name":"Authorization"}],"title":"Authorization"}]},"originalFileLocation":"openapi/streambird-api-3.1.yml"},"subdomain":"streambird-23","siteName":"moonkey docs","title":"Verify Token - moonkey docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2025-12-16T21:52:59.549Z","originalFileLocation":"api-reference/oauth/verify-token.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=\"Verify an internal OAuth token redirected to your application upon the completion of the OAuth flow. This token is generated by MoonKey and can be used to exchange for the authenticated user information and/or the original access_token and refresh_token of the idp providers that can be used directly with the external OAuth providers (e.g., Google, Apple, Microsoft, etc). ## Returns A successful response returns user_id, idp_session property with data from the OAuth provider by default. Session object in session property if any of the session_token, session_jwt, or session_expires_in is valid.\">\u003cmeta data-mint-head name=\"application-name\" content=\"moonkey 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/streambird-23/ZyHtXE9VLNWbz3Rg/_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/streambird-23/ZyHtXE9VLNWbz3Rg/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/streambird-23/ZyHtXE9VLNWbz3Rg/_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/streambird-23/ZyHtXE9VLNWbz3Rg/_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/streambird-23/ZyHtXE9VLNWbz3Rg/_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/streambird-23/ZyHtXE9VLNWbz3Rg/_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/streambird-23/ZyHtXE9VLNWbz3Rg/_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/streambird-23/ZyHtXE9VLNWbz3Rg/_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/streambird-23/ZyHtXE9VLNWbz3Rg/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Verify Token - moonkey docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Verify an internal OAuth token redirected to your application upon the completion of the OAuth flow. This token is generated by MoonKey and can be used to exchange for the authenticated user information and/or the original access_token and refresh_token of the idp providers that can be used directly with the external OAuth providers (e.g., Google, Apple, Microsoft, etc). ## Returns A successful response returns user_id, idp_session property with data from the OAuth provider by default. Session object in session property if any of the session_token, session_jwt, or session_expires_in is valid.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"moonkey docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.streambird.io/api-reference/oauth/verify-token\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://streambird-23.mintlify.app/_mintlify/api/og/v2?division=OAuth\u0026amp;title=Verify+Token\u0026amp;description=Verify+an+internal+OAuth+token+redirected+to+your+application+upon+the+completion+of+the+OAuth+flow.+This+token+is+generated+by+MoonKey+and+can+be+used+to+excha\u0026amp;theme=d508d8e3df2d6acae45c8112\u0026amp;signature=f86168af18da5081d1f1653ab9f1d897d391d098eadc8b4b14b5731ac43e7622\">\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=\"Verify Token - moonkey docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Verify an internal OAuth token redirected to your application upon the completion of the OAuth flow. This token is generated by MoonKey and can be used to exchange for the authenticated user information and/or the original access_token and refresh_token of the idp providers that can be used directly with the external OAuth providers (e.g., Google, Apple, Microsoft, etc). ## Returns A successful response returns user_id, idp_session property with data from the OAuth provider by default. Session object in session property if any of the session_token, session_jwt, or session_expires_in is valid.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://streambird-23.mintlify.app/_mintlify/api/og/v2?division=OAuth\u0026amp;title=Verify+Token\u0026amp;description=Verify+an+internal+OAuth+token+redirected+to+your+application+upon+the+completion+of+the+OAuth+flow.+This+token+is+generated+by+MoonKey+and+can+be+used+to+excha\u0026amp;theme=d508d8e3df2d6acae45c8112\u0026amp;signature=f86168af18da5081d1f1653ab9f1d897d391d098eadc8b4b14b5731ac43e7622\">\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/streambird-23/ZyHtXE9VLNWbz3Rg/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"moonkey docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#7D00FF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.streambird.io/api-reference/oauth/verify-token\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/oauth/verify-token.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.streambird.io/#organization\",\"name\":\"moonkey docs\",\"url\":\"https://docs.streambird.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/streambird-23/7SoXp5lRb42-tDXG/logo/moonkey-logo-light.svg?fit=max\u0026auto=format\u0026n=7SoXp5lRb42-tDXG\u0026q=85\u0026s=d79111a5ab7380e32858a62bc531ecfc\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.streambird.io#website\",\"name\":\"moonkey docs\",\"url\":\"https://docs.streambird.io\",\"publisher\":{\"@id\":\"https://docs.streambird.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.streambird.io/api-reference/oauth/verify-token#webpage\",\"url\":\"https://docs.streambird.io/api-reference/oauth/verify-token\",\"name\":\"Verify Token\",\"description\":\"Verify an internal OAuth token redirected to your application upon the completion of the OAuth flow. This token is generated by MoonKey and can be used to exchange for the authenticated user information and/or the original access_token and refresh_token of the idp providers that can be used directly with the external OAuth providers (e.g., Google, Apple, Microsoft, etc). ## Returns A successful response returns user_id, idp_session property with data from the OAuth provider by default. Session object in session property if any of the session_token, session_jwt, or session_expires_in is valid.\",\"dateModified\":\"2025-12-16T21:52:59.549Z\",\"isPartOf\":{\"@id\":\"https://docs.streambird.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.streambird.io/api-reference/oauth/verify-token#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.streambird.io/api-reference/oauth/verify-token#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"OAuth\",\"item\":\"https://docs.streambird.io/api-reference/oauth/google\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Verify Token\",\"item\":\"https://docs.streambird.io/api-reference/oauth/verify-token\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.streambird.io/api-reference/oauth/verify-token#apireference\",\"headline\":\"Verify Token\",\"name\":\"Verify Token\",\"description\":\"Verify an internal OAuth token redirected to your application upon the completion of the OAuth flow. This token is generated by MoonKey and can be used to exchange for the authenticated user information and/or the original access_token and refresh_token of the idp providers that can be used directly with the external OAuth providers (e.g., Google, Apple, Microsoft, etc). ## Returns A successful response returns user_id, idp_session property with data from the OAuth provider by default. Session object in session property if any of the session_token, session_jwt, or session_expires_in is valid.\",\"url\":\"https://docs.streambird.io/api-reference/oauth/verify-token\",\"mainEntityOfPage\":{\"@id\":\"https://docs.streambird.io/api-reference/oauth/verify-token#webpage\"},\"dateModified\":\"2025-12-16T21:52:59.549Z\",\"publisher\":{\"@id\":\"https://docs.streambird.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.streambird.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"moonkey docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"moonkey docs","nav":{"global":null,"tabs":[{"tab":"Get Started","pages":[{"title":"Get Started","href":"/get-started/about"}]},{"tab":"Authentication","pages":[{"title":"Authentication","href":"/authentication/overview"}]},{"tab":"Wallet as a Service","pages":[{"title":"Wallet as a Service","href":"/wallet-as-a-service/wallets-overview"}]},{"tab":"Recipes","pages":[{"title":"Recipes","href":"/recipes/overview"}]},{"tab":"API Reference","pages":[{"group":"API Reference","pages":[{"title":"Authentication","href":"/api-reference/authentication"}]},{"group":"Managed Wallets","pages":[{"openapi":"post /v1/wallets/create","title":"Create Wallet","href":"/api-reference/managed-wallets/create-wallet"},{"openapi":"post /v1/wallets/balance","title":"Get Wallet Balance","href":"/api-reference/managed-wallets/get-wallet-balance"},{"openapi":"get /v1/wallets/{wallet_id}","title":"Get Wallet","href":"/api-reference/managed-wallets/get-wallet"},{"openapi":"get /v1/wallets/list","title":"List Wallet","href":"/api-reference/managed-wallets/list-wallet"},{"group":"Solana Wallets","pages":[{"title":"Solana Sign Transaction","api":"POST https://api.moonkey.fun/v1/wallets/{wallet_id}/rpc","href":"/api-reference/managed-wallets/solana/sign-transaction"},{"title":"Solana Sign Message","api":"POST https://api.moonkey.fun/v1/wallets/{wallet_id}/rpc","href":"/api-reference/managed-wallets/solana/sign-message"}]},{"group":"Ethereum Wallets","pages":[{"title":"Ethereum Sign Transaction","api":"POST https://api.moonkey.fun/v1/wallets/{wallet_id}/rpc","href":"/api-reference/managed-wallets/ethereum/sign-transaction"},{"title":"Ethereum Sign Message","api":"POST https://api.moonkey.fun/v1/wallets/{wallet_id}/rpc","href":"/api-reference/managed-wallets/ethereum/sign-message"},{"title":"Ethereum Sign EIP-7702 Authorization","api":"POST https://api.moonkey.fun/v1/wallets/{wallet_id}/rpc","href":"/api-reference/managed-wallets/ethereum/sign-7702-authorization"}]}]},{"group":"Wallet Import","pages":[{"openapi":"post /v1/wallets/import/begin","title":"Begin Wallet Import","href":"/api-reference/wallet-import/begin-wallet-import"},{"openapi":"post /v1/wallets/import","title":"Import Wallet","href":"/api-reference/wallet-import/import-wallet"}]},{"group":"Users","pages":[{"openapi":"post /v1/auth/users/create","title":"Create User","href":"/api-reference/users/create-user"},{"openapi":"post /v1/auth/users/search","title":"Search Users (beta)","href":"/api-reference/users/search-users-beta"},{"openapi":"get /v1/auth/users/{user_id}","title":"Get User","href":"/api-reference/users/get-user"},{"openapi":"put /v1/auth/users/{user_id}/update","title":"Update User","href":"/api-reference/users/update-user"},{"openapi":"delete /v1/auth/users/{user_id}/delete","title":"Delete User","href":"/api-reference/users/delete-user"},{"openapi":"delete /v1/auth/users/emails/{email_id}/delete","title":"Delete User Email","href":"/api-reference/users/delete-user-email"},{"openapi":"delete /v1/auth/users/phone_number/{phone_number_id}/delete","title":"Delete User Phone Number","href":"/api-reference/users/delete-user-phone-number"},{"openapi":"delete /v1/auth/users/wallets/{wallet_id}/delete","title":"Delete User Wallet","href":"/api-reference/users/delete-user-wallet"},{"openapi":"delete /v1/auth/users/webauthn_credentials/{webauthn_credential_id}/delete","title":"Delete User WebAuthn Credential","href":"/api-reference/users/delete-user-webauthn-credential"},{"openapi":"delete /v1/auth/users/totps/{totp_id}/delete","title":"Delete User TOTP","href":"/api-reference/users/delete-user-totp"}]},{"group":"OTPs","pages":[{"openapi":"post /v1/auth/otps/sms/login_or_create","title":"Login or Create User by SMS","href":"/api-reference/otps/login-or-create-user-by-sms"},{"openapi":"post /v1/auth/otps/sms/send","title":"Create SMS OTP","href":"/api-reference/otps/create-sms-otp"},{"openapi":"post /v1/auth/otps/email/login_or_create","title":"Login or Create User by Email OTP","href":"/api-reference/otps/login-or-create-user-by-email-otp"},{"openapi":"post /v1/auth/otps/email/send","title":"Create Email OTP","href":"/api-reference/otps/create-email-otp"},{"openapi":"post /v1/auth/otps/verify","title":"Verify OTP (One-time passcode)","href":"/api-reference/otps/verify-otp-one-time-passcode"}]},{"group":"OAuth","pages":[{"openapi":"get /v1/auth/oauth/google/begin","title":"Google","href":"/api-reference/oauth/google"},{"openapi":"get /v1/auth/oauth/apple/begin","title":"Apple","href":"/api-reference/oauth/apple"},{"openapi":"get /v1/auth/oauth/microsoft/begin","title":"Microsoft","href":"/api-reference/oauth/microsoft"},{"openapi":"get /v1/auth/oauth/discord/begin","title":"Discord","href":"/api-reference/oauth/discord"},{"openapi":"get /v1/auth/oauth/github/begin","title":"Github","description":"Client side **public endpoint** to generate a `redirect_url` for OAuth provider that will direct the user to sign in via Github. User will first sign in to their Github account, Github will then call the MoonKey callback URL set during the setup process for Github provider. Once MoonKey completes the OAuth flow with Github, we will redirect back to the login/signup redirect URLs set for your App with an `internal token` for this session. You can then use this token to verify with our `VerifyOAuthToken` endpoint to retrieve the authenticated user and optionally the original `access_token` and `refresh_token` from Github.\n## Query String Example\n\n``` json\n/v1/auth/oauth/github/begin?public_token=pk_live_bGcnsYLoObxCSvUcCNBEWgWkOFIBD6JQhx1bMTakf1R6QWrR\u0026redirect=true\u0026login_redirect_url=http://localhost:8080/register\n\n```\n\n## Returns\n\nA successful response returns an object with a `redirect_url` property. If `redirect` query parameter is set to true, a response with status code 302 will be returned, which allows the browser to automatically redirect to the returned `redirect_url` without custom client side redirect logic.","href":"/api-reference/oauth/github"},{"openapi":"post /v1/auth/oauth/verify","title":"Verify Token","href":"/api-reference/oauth/verify-token"}]},{"group":"Sessions","pages":[{"openapi":"get /v1/auth/jwks/default","title":"GetJWKs","description":"Get JWK Set using a publishable `PublicToken` or secret `ApiKey`. It serves as a wrapper on top of `GetJWKsByApp` and infers the `app_id` from the api key used.\n## Returns\n\nA successful response returns a `JWK` Set object.","href":"/api-reference/sessions/getjwks"},{"openapi":"get /v1/auth/jwks/{app_id}","title":"GetJWKsByApp","href":"/api-reference/sessions/getjwksbyapp"},{"openapi":"get /v1/auth/sessions/list","title":"List Sessions","href":"/api-reference/sessions/list-sessions"},{"openapi":"post /v1/auth/sessions/verify","title":"Verify Session","href":"/api-reference/sessions/verify-session"},{"openapi":"delete /v1/auth/sessions/delete","title":"Delete Session","href":"/api-reference/sessions/delete-session"}]},{"group":"TOTP (Time-based one-time passcode)","pages":[{"openapi":"post /v1/auth/totps/create","title":"Create TOTP (beta)","href":"/api-reference/totp-time-based-one-time-passcode/create-totp-beta"},{"openapi":"post /v1/auth/totps/verify","title":"Verify TOTP (beta)","href":"/api-reference/totp-time-based-one-time-passcode/verify-totp-beta"},{"openapi":"post /v1/auth/totps/recovery_codes","title":"Get TOTP Recovery Codes (beta)","href":"/api-reference/totp-time-based-one-time-passcode/get-totp-recovery-codes-beta"},{"openapi":"post /v1/auth/totps/recovery","title":"TOTP Recovery (beta)","href":"/api-reference/totp-time-based-one-time-passcode/totp-recovery-beta"}]},{"group":"Wallets Login","pages":[{"openapi":"post /v1/auth/wallets/registrations/begin","title":"Begin Wallet Registration","href":"/api-reference/wallets-login/begin-wallet-registration"},{"openapi":"post /v1/auth/wallets/registrations/nonce","title":"Get Wallet Registration Nonce","href":"/api-reference/wallets-login/get-wallet-registration-nonce"},{"openapi":"post /v1/auth/wallets/verify","title":"Verify Wallet (beta)","href":"/api-reference/wallets-login/verify-wallet-beta"},{"openapi":"post /v1/auth/wallets/siwe/verify","title":"Verify Siwe Wallet Registration","href":"/api-reference/wallets-login/verify-siwe-wallet-registration"}]},{"group":"Passwords","pages":[{"openapi":"post /v1/auth/passwords/session/update","title":"Update Password by Session (Enterprise)","href":"/api-reference/passwords/update-password-by-session-enterprise"},{"openapi":"post /v1/auth/passwords/verify","title":"Verify Password (Enterprise)","href":"/api-reference/passwords/verify-password-enterprise"},{"openapi":"post /v1/auth/passwords/strength_check","title":"PasswordStrengthCheck (Enterprise)","href":"/api-reference/passwords/passwordstrengthcheck-enterprise"}]},{"group":"Transfers","pages":[{"openapi":"post /v1/transfers/create","title":"Create Transfer (beta)","href":"/api-reference/transfers/create-transfer-beta"},{"openapi":"post /v1/transfers/{transfer_id}/confirm","title":"Confirm Transfer (beta)","href":"/api-reference/transfers/confirm-transfer-beta"},{"openapi":"get /v1/transfers/{transfer_id}","title":"Get Transfer (beta)","href":"/api-reference/transfers/get-transfer-beta"},{"openapi":"get /v1/transfers/list","title":"List Transfer (beta)","href":"/api-reference/transfers/list-transfer-beta"}]},{"group":"WebAuthn","pages":[{"openapi":"post /v1/auth/webauthn/registrations/begin","title":"Initiate WebAuthn Registration (beta)","href":"/api-reference/webauthn/initiate-webauthn-registration-beta"},{"openapi":"post /v1/auth/webauthn/registrations/create","title":"Create WebAuthn Registration (beta)","href":"/api-reference/webauthn/create-webauthn-registration-beta"},{"openapi":"post /v1/auth/webauthn/authentication/begin","title":"Initiate WebAuthn Authentication (beta)","href":"/api-reference/webauthn/initiate-webauthn-authentication-beta"},{"openapi":"post /v1/auth/webauthn/verify","title":"Verify WebAuthn Authentication (beta)","href":"/api-reference/webauthn/verify-webauthn-authentication-beta"}]},{"group":"Magic Links (Deprecated)","pages":[{"openapi":"post /v1/auth/magic_links/email/login_or_create","title":"Login or Create User by Magic Link","href":"/api-reference/magic-links/login-or-create-user-by-magic-link"},{"openapi":"post /v1/auth/magic_links/email/invite","title":"Invite User by Magic Link","href":"/api-reference/magic-links/invite-user-by-magic-link"},{"openapi":"post /v1/auth/magic_links/create","title":"Create Embeddable Magic Link","href":"/api-reference/magic-links/create-embeddable-magic-link"},{"openapi":"post /v1/auth/magic_links/verify","title":"Verify Token","href":"/api-reference/magic-links/verify-token"}]}]}]},"basePath":"","title":"Verify Token - moonkey docs","buildId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","deploymentId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-C8RPHPxo.js","utils-0BK-9q6z.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DfjzsUJT.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-B4v9psJ4.js","snippetPresets-CpTQv-Ez.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-BNP-Fvr0.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BSgu6h1D.js","shallow-Biv1i9Gs.js","getApiPlaygroundDisplay-BoGOXhtF.js","CodeSnippet-DvQoT18_.js","CodeSnippets-Dnpa15xT.js","Page-Buji1S4J.js","getPastedJson-xAIyhUFE.js","icon-S6FBih11.js","MethodPill-SaYeUZyk.js","DuplicateIcon-Cs-p3v2Q.js","createIcon-DjCFEoHq.js","DynamicMarkdown-BcnBltEQ.js","SectionHeading-BUBl0eEF.js","axios-vUo_bRtp.js","Markdown-h4cOoD8d.js","clsx-B2v50t8t.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-DJnKvr0g.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BHrrjR1K.js"]}