> ## Documentation Index
> Fetch the complete documentation index at: https://learn.nexudus.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Send Verification Email

> Emails the owner of an address a code and a link to prove it is theirs, when signing up answered MUST_SIGN_IN.

# Send Verification Email

[Signing up](https://learn.nexudus.com/api/endpoints/checkout/signup.md) with an email that already belongs to a Nexudus account answers `MUST_SIGN_IN` (and [Check Sign-up Email](https://learn.nexudus.com/api/endpoints/checkout/check-email.md) says so as soon as the email is typed). This endpoint emails the owner of that address a way to prove it is theirs and carry on.

With `code=true` the email is the **SignInCode** template: a six-digit code to send to [Verify Sign-in Code](https://learn.nexudus.com/api/endpoints/checkout/verify-code.md), plus a link that does the same, back to `returnUrl`. Without it (every portal before November 2026) the email is **SignupRestore**, or **MagicLink** when the account is already a customer of this location, with the link alone. See [Sign-in Codes](https://learn.nexudus.com/member-portal/auth/sign-in-codes.md).

## Authentication

No authentication required. The answer is the same whether or not the address has an account, so which addresses have one stays private.

Limited to 2 requests per minute. With `code=true`, at most 5 code emails go to one account in 15 minutes.

## Query Parameters

**email** `string` *required*

The email typed into the sign-up form.

**returnUrl** `string` (default: /checkout/tariffs)

The page the email's link brings the customer back to: a path on the portal, starting with `/`. Anything else answers `400`. Send `location.pathname + location.search` as they are; the backend encodes it once more for the email.

**code** `boolean` (default: false)

Send the SignInCode email, with a code the page can take, instead of the link-only email.

## Response

Without `code`: an empty `200`.

**CodeSent** `boolean`

With `code=true`: always `true`, so the page knows it may ask for a code. A platform version without codes ignores the parameter and answers an empty body, which the portal reads as "link only".

### Errors

| Message | When |
| - | - |
| `TOO_MANY_CODES` | With `code=true`, more than 5 code emails for this account in 15 minutes. No email goes out and the last code sent keeps working |

## Examples

```http theme={null}
GET /api/sys/users/restore?email=jane%40example.com&returnUrl=%2Fhoxton%2Fcheckout%2Faccount%3Fplan_id%3D7&code=true
```

```json theme={null}
{
  "CodeSent": true
}
```

## TypeScript Integration

```typescript theme={null}
import { sendAccountRestoreEmail } from '@/views/checkout/useCheckoutData'

// Asks for a code and returns the page's own path as returnUrl
const { codeSent } = await sendAccountRestoreEmail(httpClient, 'jane@example.com')
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.