Stytch · Schema
api_magic_v1_magic_links_email_LoginOrCreateRequest
Request type
AuthenticationIdentityPasswordlessSecurityB2BConnected AppsMCPAI AgentsDeveloper Tools
Properties
| Name | Type | Description |
|---|---|---|
| string | The email address of the end user. | |
| login_magic_link_url | string | The URL the end user clicks from the login Email Magic Link. This should be a URL that your app receives and parses and subsequently send an API request to authenticate the Magic Link and log in the U |
| signup_magic_link_url | string | The URL the end user clicks from the sign-up Email Magic Link. This should be a URL that your app receives and parses and subsequently send an API request to authenticate the Magic Link and sign-up th |
| login_expiration_minutes | integer | Set the expiration for the login email magic link, in minutes. By default, it expires in 1 hour. The minimum expiration is 5 minutes and the maximum is 7 days (10080 mins). |
| signup_expiration_minutes | integer | Set the expiration for the sign-up email magic link, in minutes. By default, it expires in 1 week. The minimum expiration is 5 minutes and the maximum is 7 days (10080 mins). |
| login_template_id | string | Use a custom template for login emails. By default, it will use your default email template. Templates can be added in the [Stytch dashboard](https://stytch.com/dashboard/templates) using our built-in |
| signup_template_id | string | Use a custom template for sign-up emails. By default, it will use your default email template. Templates can be added in the [Stytch dashboard](https://stytch.com/dashboard/templates) using our built- |
| attributes | object | Provided attributes to help with fraud detection. These values are pulled and passed into Stytch endpoints by your application. |
| create_user_as_pending | boolean | Flag for whether or not to save a user as pending vs active in Stytch. Defaults to false. If true, users will be saved with status pending in Stytch's backend until authenticated. If false, users will |
| code_challenge | string | A base64url encoded SHA256 hash of a one time secret used to validate that the request starts and ends on the same device. |
| locale | object | Used to determine which language to use when sending the user this delivery method. Parameter is an [IETF BCP 47 language tag](https://www.w3.org/International/articles/language-tags/), e.g. `"en"`. C |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "#/components/schemas/api_magic_v1_magic_links_email_LoginOrCreateRequest",
"title": "api_magic_v1_magic_links_email_LoginOrCreateRequest",
"type": "object",
"properties": {
"email": {
"type": "string",
"description": "The email address of the end user."
},
"login_magic_link_url": {
"type": "string",
"description": "The URL the end user clicks from the login Email Magic Link. This should be a URL that your app receives and parses and subsequently send an API request to authenticate the Magic Link and log in the User. If this value is not passed, the default login redirect URL that you set in your Dashboard is used. If you have not set a default login redirect URL, an error is returned."
},
"signup_magic_link_url": {
"type": "string",
"description": "The URL the end user clicks from the sign-up Email Magic Link. This should be a URL that your app receives and parses and subsequently send an API request to authenticate the Magic Link and sign-up the User. If this value is not passed, the default sign-up redirect URL that you set in your Dashboard is used. If you have not set a default sign-up redirect URL, an error is returned."
},
"login_expiration_minutes": {
"type": "integer",
"format": "int32",
"description": "Set the expiration for the login email magic link, in minutes. By default, it expires in 1 hour. The minimum expiration is 5 minutes and the maximum is 7 days (10080 mins)."
},
"signup_expiration_minutes": {
"type": "integer",
"format": "int32",
"description": "Set the expiration for the sign-up email magic link, in minutes. By default, it expires in 1 week. The minimum expiration is 5 minutes and the maximum is 7 days (10080 mins)."
},
"login_template_id": {
"type": "string",
"description": "Use a custom template for login emails. By default, it will use your default email template. Templates can be added in the [Stytch dashboard](https://stytch.com/dashboard/templates) using our built-in customization options or custom HTML templates with type \u201cMagic links - Login\u201d."
},
"signup_template_id": {
"type": "string",
"description": "Use a custom template for sign-up emails. By default, it will use your default email template. Templates can be added in the [Stytch dashboard](https://stytch.com/dashboard/templates) using our built-in customization options or custom HTML templates with type \u201cMagic links - Sign-up\u201d."
},
"attributes": {
"$ref": "#/components/schemas/api_attribute_v1_Attributes",
"description": "Provided attributes to help with fraud detection. These values are pulled and passed into Stytch endpoints by your application."
},
"create_user_as_pending": {
"type": "boolean",
"description": "Flag for whether or not to save a user as pending vs active in Stytch. Defaults to false.\n If true, users will be saved with status pending in Stytch's backend until authenticated.\n If false, users will be created as active. An example usage of\n a true flag would be to require users to verify their phone by entering the OTP code before creating\n an account for them."
},
"code_challenge": {
"type": "string",
"description": "A base64url encoded SHA256 hash of a one time secret used to validate that the request starts and ends on the same device."
},
"locale": {
"$ref": "#/components/schemas/api_magic_v1_LoginOrCreateRequestLocale",
"description": "Used to determine which language to use when sending the user this delivery method. Parameter is an [IETF BCP 47 language tag](https://www.w3.org/International/articles/language-tags/), e.g. `\"en\"`.\n\nCurrently supported languages are English (`\"en\"`), Spanish (`\"es\"`), French (`\"fr\"`) and Brazilian Portuguese (`\"pt-br\"`); if no value is provided, the copy defaults to English.\n\nRequest support for additional languages [here](https://docs.google.com/forms/d/e/1FAIpQLScZSpAu_m2AmLXRT3F3kap-s_mcV6UTBitYn6CdyWP0-o7YjQ/viewform?usp=sf_link\")!\n"
}
},
"description": "Request type",
"required": [
"email"
]
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/stytch-api-magic-v1-magic-links-email-loginorcreaterequest"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.