Skip to content

50,000 free calls a month, card-free. Get an API key →

Documentation menu
docs / api / post-v1-keys-self-email-verify
self-serve

POST/v1/keys/self/email/verify

API key required, sent as Authorization: Bearer snk_… or ?api_key=snk_….

What it does

Only the key that asked for the code can redeem it. An address that already has ANY identity row is NEVER attached, whether or not anybody ever verified it, and nothing moves between identities: the answer is 409 email-in-use. The app should then sign in with that address through POST /v1/keys, which the owner's own mailbox verifies; that is a new key on the address's identity, so the email-less key's own state (its usage, styles and jobs) does not come with it. A wrong code counts against identity::MAX_EMAIL_CODE_ATTEMPTS (then the code is void), and attempts are capped per key and per IP per day like every other verification budget.

Call it

bash
curl -fsS -X POST "https://api.mapmap.ai/v1/keys/self/email/verify" \
  -H "Authorization: Bearer $MAPMAP_KEY" \
  -H "Content-Type: application/json" \
  -d @request.json

Request body

application/json · VerifyEmailCodeRequest

FieldTypeRequiredDescription
codestringyesThe code from the mail.

Responses

200Address attached; this key is now verified on the free tier
FieldTypeRequiredDescription
emailstringyesThe address now on the account.
monthly_quotaintegeryesRequests allowed per calendar month from now on.
statestringyesAlways verified.
400Wrong, used, expired or voided code, or a code another key asked for
401Missing, unknown, revoked or expired key
409key-has-email: the key already has an email; email-in-use: the address belongs to another account, which is left untouched
429Per-key or per-IP daily attempt limit, or the key's per-minute rate limit

Error bodies follow the shared problem model documented on API conventions.

Also under self-serve

Generated from https://api.mapmap.ai/openapi.json on 2026-10-02 · operationId verify_email_code