---
title: "Submits a single-email verification job."
method: POST
path: "/api/verify"
tags: ["verification"]
---

# Submits a single-email verification job.

`POST /api/verify`

## Request

- Base URL: `https://api.pricklymails.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.pricklymails.com/api/verify`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer

## Request body

- SubmitVerificationRequest: `POST /api/verify` request body.
  - `email` string, required: Email address to verify.

## Response `200`

Idempotent replay of a prior submission.

- SubmitVerificationResponse: `POST /api/verify` response body.
  - `email` string, required: Echo of the submitted email address.
  - `estimated_cost` integer, required: Total tokens reserved for the job.
  - `idempotency_key` string, required: Resolved idempotency key.
  - `job_uuid` string, required: Public UUID of the persisted job. Use it with `GET /api/verify/{uuid}` to poll the result.
  - `replayed` boolean, required: `true` when the response replays a prior submission made with the same idempotency key and the same email.
  - `status` string, required: Current status of the job (`pending`, `queued`, `processing`, `completed`, `failed`, `canceled`).
  - `suggestion` string, nullable: Typo-corrected suggestion for the submitted email (e.g. `user@gmial.com` -> `user@gmail.com`), computed synchronously at submit time.

## Other responses

- `202`: Job accepted and queued.
- `402`: Wallet balance too low to reserve the job's cost.
- `403`: Caller is missing the `email:verify:single` scope.
- `429`: Rate limit exceeded.

---

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