POST
/v1/auth/magiclink/signup/email

Initiate a sign-up process by sending a magic link to a new end user. Descope will generate and deliver a clickable magic link to the email address specified. The clickable magic link is made up of two parts - the URI you provide in the URI field and the magic link token generated by Descope. For example, if URI=https://app.mycompany.com/magiclink/verify, the clickable magic link will be https://app.mycompany.com/magiclink/verify?t=magic-link-token. Magic links expire in the time frame configured in the Descope console, so sending multiple magic links (for example, when an end user tries to sign-up a second or third time) does not invalidate magic links that have already been sent.

The endpoint will return a failure code if the email address is already registered.

Note that URI is an optional parameter. If omitted - the project setting will apply. If provided - it should to be part of the allowed Approved Domains configured in the project settings.

Next Steps

Verify the magic link token using the Verify Token endpoint.

See Also

  • See Magic link Authentication for details about implementing magic links.
  • See The User Object for further details on how to identify users and their contact information such as email addresses and phone number.
  • Use the Sign-In endpoint to sign-in an existing end user.
  • Use the Sign-In with Auto Sign-up endpoint to create a single sign-up and sign-in flow, which will create a new end user if they are not already registered.

Endpoint Authentication

Use authorization bearer header with the following format:

Authorization: Bearer \<Project ID\>

Try it

/v1/auth/magiclink/signup/email

The Authorization access token

Authorization

Authorization
Required
Bearer <token>

In: header

Request Body

emailstring

loginIdstring

userobject

redirectUrlstring

providerIdstring

loginOptionsobject

Status codeDescription
200OK
curl -X POST "https://api.descope.com/v1/auth/magiclink/signup/email" \
  -d '{
  "email": "string",
  "loginId": "string",
  "user": {
    "loginId": "string",
    "name": "string",
    "phone": "string",
    "email": "string",
    "givenName": "string",
    "middleName": "string",
    "familyName": "string"
  },
  "redirectUrl": "string",
  "providerId": "string",
  "loginOptions": {
    "customClaims": {},
    "templateOptions": {
      "property1": "string",
      "property2": "string"
    },
    "locale": "string",
    "pkceChallenge": "string"
  }
}'

{
  "maskedEmail": "string"
}

Was this helpful?