---
title: "Email Send Code"
method: POST
path: "/api/auth/email/send-code"
tags: ["auth"]
---

# Email Send Code

`POST /api/auth/email/send-code`

## Request

- Base URL: `https://api.retirementlab.app` (the document declares no server; this is the origin it was published from)
- URL: `https://api.retirementlab.app/api/auth/email/send-code`
- Auth: none declared

Send a verification code via email.

Always returns 200 regardless of whether email exists — anti-enumeration.
Passwordless auth means every valid request follows the same code path
(generate, store, send), so timing does not leak account existence.

Email delivery is synchronous so that runtime failures (SES credential
issues, transient AWS errors) surface as a 503 to the caller instead of
silently succeeding while the code never arrives.

## Request body

- EmailSendCodeRequest
  - `email` string, required
  - `purpose` 'auth'

## Response `200`

Successful Response

- object

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/retirementlab/apis/income-simulator-api.md) · [All operations](https://skmtc.dev/retirementlab/apis/income-simulator-api/llms.txt) · [OpenAPI document](https://skmtc.dev/retirementlab/apis/income-simulator-api/revisions/b0f00a0333fd?raw)
