Deprecated: Magic Links are deprecated and will be removed in a future version. Please use One-time Passcodes (OTP) or OAuth for passwordless authentication instead.
The base url we will use to construct the final login magic link and send to the user via email if this is a login (existing user). If the redirect_url is https://moonkey.fun/authenticate, final url user sees in email will be https://moonkey.fun/authenticate?token=autogeneratedmagictoken. We will redirect to your app in this url and your app should handle and parse the token parameter and allow the user log in. If no url is sent in, we will use the default redirect url set in the Console and if no default redirect url is available, an error will be returned.
The base url we will use to construct the final login magic link and send to the user via email if this is a registration (new user). If the redirect_url is https://moonkey.fun/authenticate, final url user sees in email will be https://moonkey.fun/authenticate?token=autogeneratedmagictoken. We will redirect to your app in this url and your app should handle and parse the token parameter and register the user. If no url is sent in, we will use the default redirect url set in the Console and if no default redirect url is available, an error will be returned.
Expiration time of the magic link in minutes for login (when an existing user is found) Must be between 5 to 10080 minutes (7 days), defaults to 60 minutes.
Expiration time of the magic link in minutes for registration (when a new user is created). Must be between 5 to 10080 minutes (7 days), defaults to 60 minutes.
Device fingerprinting metadata for fraud detection during verification step. This is useful to ensure that the user who originated the request matches the user that verifies the token. Verification requirements can be enabled in the Verify Token step by matching fields in the device_fingerprint such as IP, User Agent or the combination of them (more fraud detection features coming soon!)
{"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":"6a21a5c87676216effceffac:success","clientVersion":"0.0.4045","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":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"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":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/magic-links/login-or-create-user-by-magic-link","slug":"/api-reference/magic-links/login-or-create-user-by-magic-link","pageMetadata":{"openapi":"post /v1/auth/magic_links/email/login_or_create","title":"Login or Create User by Magic Link","description":"Create an email Magic Link to the provided email for login verification. If no user account exists, a new user will be created and Magic Link sent.\n## Returns\n\nA successful response returns an object with `user_id`, `user_created` indicating if the user has been newly created, and `email_id` properties.","href":"/api-reference/magic-links/login-or-create-user-by-magic-link"},"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: [_jsx(_components.p, {\n children: \"Create an email Magic Link to the provided email for login verification. If no user account exists, a new user will be created and Magic Link sent.\"\n }), \"\\n\", _jsx(_components.h2, {\n children: \"Returns\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"A successful response returns an object with \", _jsx(_components.code, {\n children: \"user_id\"\n }), \", \", _jsx(_components.code, {\n children: \"user_created\"\n }), \" indicating if the user has been newly created, and \", _jsx(_components.code, {\n children: \"email_id\"\n }), \" properties.\"]\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{jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,p:`p`,strong:`strong`,..._provideComponents(),...props.components},{Warning}=_components;if(!Warning)_missingMdxReference(`Warning`,true);return _jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Deprecated:`}),` Magic Links are deprecated and will be removed in a future version. Please use `,_jsx(_components.a,{href:`/methods/otp/overview`,children:`One-time Passcodes (OTP)`}),` or `,_jsx(_components.a,{href:`/methods/oauth/overview`,children:`OAuth`}),` for passwordless authentication instead.`]})})}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":{"openapi":"post /v1/auth/magic_links/email/login_or_create","title":"Login or Create User by Magic Link","description":"Create an email Magic Link to the provided email for login verification. If no user account exists, a new user will be created and Magic Link sent.\n## Returns\n\nA successful response returns an object with `user_id`, `user_created` indicating if the user has been newly created, and `email_id` properties.","href":"/api-reference/magic-links/login-or-create-user-by-magic-link"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Login or Create User by Magic Link","description":"Create an email Magic Link to the provided email for login verification. If no user account exists, a new user will be created and Magic Link sent.\n## Returns\n\nA successful response returns an object with `user_id`, `user_created` indicating if the user has been newly created, and `email_id` properties.","operationId":"LoginOrCreateUserByMagicLink","parameters":[],"tags":["Magic Links"],"x-internal":false,"requestBody":"14438d4d-6756-4ca9-9a88-70b461456908","responses":{"200":"18a51069-76ea-47a9-b129-4d7f1dbba8cb"},"method":"post","type":"path","servers":["d20f097c-20a8-4afd-b7e5-e96252956d43"],"security":["00d0480a-c2e3-4624-98cd-868739f70878"],"path":"/v1/auth/magic_links/email/login_or_create","baseUrlOptions":["https://api.moonkey.fun"],"title":"Login or Create User by Magic Link","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"content":{"application/json":{"schema":{"description":"","type":"object","properties":{"email":{"type":"string","minLength":1,"description":"`Required` Email that uniquely identifies the user.","isRequired":true,"uniqueKey":"email","typeLabel":"string"},"login_redirect_url":{"type":"string","description":"The base url we will use to construct the final login magic link and send to the user via email if this is a login (existing user). If the `redirect_url` is `https://moonkey.fun/authenticate`, final url user sees in email will be `https://moonkey.fun/authenticate?token=autogeneratedmagictoken`. We will redirect to your app in this url and your app should handle and parse the `token` parameter and allow the user log in. If no url is sent in, we will use the default redirect url set in the Console and if no default redirect url is available, an error will be returned.","uniqueKey":"login_redirect_url","typeLabel":"string"},"registration_redirect_url":{"type":"string","description":"The base url we will use to construct the final login magic link and send to the user via email if this is a registration (new user). If the `redirect_url` is `https://moonkey.fun/authenticate`, final url user sees in email will be `https://moonkey.fun/authenticate?token=autogeneratedmagictoken`. We will redirect to your app in this url and your app should handle and parse the `token` parameter and register the user. If no url is sent in, we will use the default redirect url set in the Console and if no default redirect url is available, an error will be returned.","uniqueKey":"registration_redirect_url","typeLabel":"string"},"login_expires_in":{"type":"number","description":"Expiration time of the magic link in minutes for login (when an existing user is found) Must be between 5 to 10080 minutes (7 days), defaults to 60 minutes.","uniqueKey":"login_expires_in","typeLabel":"number"},"registration_expires_in":{"type":"number","description":"Expiration time of the magic link in minutes for registration (when a new user is created). Must be between 5 to 10080 minutes (7 days), defaults to 60 minutes.","uniqueKey":"registration_expires_in","typeLabel":"number"},"requires_verification":{"type":"boolean","description":"Determines if verification for the authentication method (email, phone_number) is required before marking the user as active.","uniqueKey":"requires_verification","typeLabel":"boolean"},"device_fingerprint":{"type":"object","description":"Device fingerprinting metadata for fraud detection during verification step. This is useful to ensure that the user who originated the request matches the user that verifies the token. Verification requirements can be enabled in the `Verify Token` step by matching fields in the `device_fingerprint` such as IP, User Agent or the combination of them (more fraud detection features **coming soon**!)","properties":{"ip":{"type":"string","description":"IP of the user originating the request.","uniqueKey":"device_fingerprint.ip","typeLabel":"string"},"user_agent":{"type":"string","description":"User Agent of the browser originating the request.","uniqueKey":"device_fingerprint.user_agent","typeLabel":"string"}},"uniqueKey":"device_fingerprint","typeLabel":"object"}},"required":["email"],"uniqueKey":"","typeLabel":"object"},"examples":{"LoginOrCreateUserByMagicLinkReq":{"title":"LoginOrCreateUserByMagicLinkReq","value":{"email":"sandbox@moonkey.fun","expires_in":60,"login_redirect_url":"http://localhost:8081/authenticate","registration_redirect_url":"http://localhost:8081/authenticate"}}},"exampleType":"examples"}},"description":"","exampleType":"examples"},"responses":{"18a51069-76ea-47a9-b129-4d7f1dbba8cb":{"description":"OK","content":{"application/json":{"schema":{"description":"","type":"object","properties":{"user_id":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"user_id","typeLabel":"string"},"user_created":{"type":"boolean","isRequired":true,"uniqueKey":"user_created","typeLabel":"boolean"},"status":{"type":"string","isRequired":true,"uniqueKey":"status","typeLabel":"string"},"email_id":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"email_id","typeLabel":"string"}},"required":["user_id","user_created","status","email_id"],"uniqueKey":"","typeLabel":"object"},"examples":{"LoginOrCreateUserByMagicLinkResp":{"title":"LoginOrCreateUserByMagicLinkResp","value":{"user_id":"user_24wFP9pDa9YiMJLun94iKykoZs2","status":"active","user_created":false,"updated_at":1630989225,"created_at":1630989225,"email_id":"email_24oXBL3PufzHkH1Jzyjc2EXYeo7"}}},"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":"Login or Create User by Magic Link - moonkey docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2025-12-16T21:52:59.523Z","originalFileLocation":"api-reference/magic-links/login-or-create-user-by-magic-link.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=\"Create an email Magic Link to the provided email for login verification. If no user account exists, a new user will be created and Magic Link sent. ## Returns A successful response returns an object with user_id, user_created indicating if the user has been newly created, and email_id properties.\">\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=\"Login or Create User by Magic Link - moonkey docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Create an email Magic Link to the provided email for login verification. If no user account exists, a new user will be created and Magic Link sent. ## Returns A successful response returns an object with user_id, user_created indicating if the user has been newly created, and email_id properties.\">\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/magic-links/login-or-create-user-by-magic-link\">\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=Magic+Links+%28Deprecated%29\u0026amp;title=Login+or+Create+User+by+Magic+Link\u0026amp;description=Create+an+email+Magic+Link+to+the+provided+email+for+login+verification.+If+no+user+account+exists%2C+a+new+user+will+be+created+and+Magic+Link+sent.%0A%23%23+Returns%0A%0A\u0026amp;theme=d508d8e3df2d6acae45c8112\u0026amp;signature=1af392a6a1b201ff1697ad61c9a35bceee44c73d364cdc0d3b8f8e14d1573823\">\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=\"Login or Create User by Magic Link - moonkey docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Create an email Magic Link to the provided email for login verification. If no user account exists, a new user will be created and Magic Link sent. ## Returns A successful response returns an object with user_id, user_created indicating if the user has been newly created, and email_id properties.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://streambird-23.mintlify.app/_mintlify/api/og/v2?division=Magic+Links+%28Deprecated%29\u0026amp;title=Login+or+Create+User+by+Magic+Link\u0026amp;description=Create+an+email+Magic+Link+to+the+provided+email+for+login+verification.+If+no+user+account+exists%2C+a+new+user+will+be+created+and+Magic+Link+sent.%0A%23%23+Returns%0A%0A\u0026amp;theme=d508d8e3df2d6acae45c8112\u0026amp;signature=1af392a6a1b201ff1697ad61c9a35bceee44c73d364cdc0d3b8f8e14d1573823\">\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/magic-links/login-or-create-user-by-magic-link\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/magic-links/login-or-create-user-by-magic-link.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/magic-links/login-or-create-user-by-magic-link#webpage\",\"url\":\"https://docs.streambird.io/api-reference/magic-links/login-or-create-user-by-magic-link\",\"name\":\"Login or Create User by Magic Link\",\"description\":\"Create an email Magic Link to the provided email for login verification. If no user account exists, a new user will be created and Magic Link sent. ## Returns A successful response returns an object with user_id, user_created indicating if the user has been newly created, and email_id properties.\",\"dateModified\":\"2025-12-16T21:52:59.523Z\",\"isPartOf\":{\"@id\":\"https://docs.streambird.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.streambird.io/api-reference/magic-links/login-or-create-user-by-magic-link#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.streambird.io/api-reference/magic-links/login-or-create-user-by-magic-link#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"moonkey docs\",\"item\":\"https://docs.streambird.io\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Login or Create User by Magic Link\",\"item\":\"https://docs.streambird.io/api-reference/magic-links/login-or-create-user-by-magic-link\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.streambird.io/api-reference/magic-links/login-or-create-user-by-magic-link#apireference\",\"headline\":\"Login or Create User by Magic Link\",\"name\":\"Login or Create User by Magic Link\",\"description\":\"Create an email Magic Link to the provided email for login verification. If no user account exists, a new user will be created and Magic Link sent. ## Returns A successful response returns an object with user_id, user_created indicating if the user has been newly created, and email_id properties.\",\"url\":\"https://docs.streambird.io/api-reference/magic-links/login-or-create-user-by-magic-link\",\"mainEntityOfPage\":{\"@id\":\"https://docs.streambird.io/api-reference/magic-links/login-or-create-user-by-magic-link#webpage\"},\"dateModified\":\"2025-12-16T21:52:59.523Z\",\"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","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","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)","description":"Verify and complete a WebAuthn credential authentication request. This endpoint requires that a user already exists and the `BeginWebAuthnAuthentication` has been called. Pass in the response from [navigator.credentials.get(options)](https://w3c.github.io/webappsec-credential-management/#dom-credentialscontainer-get) into `public_key_credential` as a JSON object. If you are using the [webauthn-json](https://github.com/github/webauthn-json) library, pass in the response from `let response = await get(options)`.\n## Returns\n\nA successful response returns a `webauthn_credential_id` property and `user_id` property.","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","description":"Create an email Magic Link to the provided email for invite verification. If no user account exists, a new user will be created and Magic Link sent.\n## Returns\n\nA successful response returns an object with `user_id` and `email_id` properties.","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":"Login or Create User by Magic Link - moonkey docs","buildId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","deploymentId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DCDCdBVX.js","utils-ME8dDnLe.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-0e84ACsd.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-wgRBj-ia.js","snippetPresets-C11Sgb-o.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-C0lapOpP.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-ZeRQV8fF.js","shallow-BupWh095.js","getApiPlaygroundDisplay-BnYQO2Ss.js","CodeSnippet-RKKOc8c_.js","CodeSnippets-Drf_m8wS.js","Page-Bevw23-4.js","getPastedJson-u6QiPzNZ.js","icon-Bb-CBSxO.js","MethodPill-F7l5AI7V.js","DuplicateIcon-IiAXkdSg.js","createIcon-FliI8EBc.js","DynamicMarkdown-B62XqCSI.js","SectionHeading-Dj31pT03.js","axios-vUo_bRtp.js","Markdown-BOgQCTwD.js","clsx-BIWXJmsZ.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-DKZWslLH.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-UDqbR6xh.js"]}