Skip to main content

POST /v1/auth/email/verify

Consume a verification token from the user's email and mark them verified.

::: tip Auth Required: none. The token IS the credential. :::

Request

POST /v1/auth/email/verify

HeaderRequiredNotes
Content-Type: application/jsonyes

Body

{ "token": "abc...32_byte_base64" }

Response

204 No Content

The user's email_verified flag is now true.

If the user changed their email after the token was issued (so the token is stale-but-not-malicious), the endpoint silently no-ops and still returns 204.

Error responses

StatusCodeWhen
400invalid_inputToken missing.
401authentication_requiredToken doesn't match, already consumed, or expired.
404not_foundThe user the token belongs to no longer exists.

Notes

  • Tokens are single-use; the row is marked consumed_at = now() on success.
  • An audit entry (users.email_verified) is recorded.