---
title: "Verify Email"
method: POST
path: "/api/v1/auth/verify-email"
tags: ["auth"]
---

# Verify Email

`POST /api/v1/auth/verify-email`

## Request

- Base URL: `https://api.badgeia.com`
- URL: `https://api.badgeia.com/api/v1/auth/verify-email`
- Auth: none declared

Confirm an email address (SEC-AUTH-012).

Validates the single-use token, sets `email_verified=True`, emits
`email_verified`. Idempotent at the user level: a user who is already
verified and re-submits an *unused* token still gets a 200 (we just set
the already-true flag). A reused / expired / unknown token → opaque 400.

## Request body

- VerifyEmailRequest: Body for POST /auth/verify-email. The token rides the emailed link.
  - `token` string, required

## Response `200`

Successful Response

- object

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/badgeia/apis/badge.md) · [All operations](https://skmtc.dev/badgeia/apis/badge/llms.txt) · [OpenAPI document](https://skmtc.dev/badgeia/apis/badge/revisions/7e7f7fee8b77?raw)
