---
title: "Send passwordless email"
method: POST
path: "/api/v1/passwordless/email/send"
tags: ["Magic link & OTP"]
---

# Send passwordless email

`POST /api/v1/passwordless/email/send`

Send a verification email containing either a verification code (OTP), magic link, or both to a user's email address

## Request body

- PasswordlessSendPasswordlessRequest
  - `email` string — Email address where the passwordless authentication credentials will be sent. Must be a valid email format.
  - `expires_in` integer — Time in seconds until the passwordless authentication expires. If not specified, defaults to 300 seconds (5 minutes)
  - `magiclink_auth_uri` string — Your application's callback URL where users will be redirected after clicking the magic link in their email. The link token will be appended as a query parameter as link_token
  - `state` string — Custom state parameter that will be returned unchanged in the verification response. Use this to maintain application state between the authentication request and callback, such as the intended destination after login
  - `template` 'SIGNIN' | 'SIGNUP'
  - `template_variables` object — A set of key-value pairs to personalize the email template. * You may include up to 30 key-value pairs. * The following variable names are reserved by the system and cannot be supplied: `otp`, `expiry_time_relative`, `link`, `expire_time`, `expiry_time`. * Every variable referenced in your email template must be included as a key-value pair. Use these variables to insert custom information, such as a team name, URL or the user's employee ID. All variables are interpolated before the email is sent, regardless of the email provider.

## Response `200`

Successfully sent passwordless authentication email. Returns the authentication request details including expiration time and auth request ID

- PasswordlessSendPasswordlessResponse
  - `auth_request_id` string — Unique identifier for this passwordless authentication request. Use this ID to resend emails.
  - `expires_at` string, int64 — Unix timestamp (seconds since epoch) when the passwordless authentication will expire. After this time, the OTP or magic link will no longer be valid.
  - `expires_in` integer — Number of seconds from now until the passwordless authentication expires. This is a convenience field calculated from the expires_at timestamp.
  - `passwordless_type` 'OTP' | 'LINK' | 'LINK_OTP'

---

[API](https://skmtc.net/scalekit/apis/scalekit-api-reference.md) · [All operations](https://skmtc.net/scalekit/apis/scalekit-api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/scalekit/scalekit-api-reference/versions/a40d5d4650e5/schema)
