---
title: "Confirm email verification"
method: POST
path: "/api/v1/me/domains/{id}/verify-email/confirm"
tags: ["Domains"]
---

# Confirm email verification

`POST /api/v1/me/domains/{id}/verify-email/confirm`

## Request

- Base URL: `https://api.proof.holdings`
- URL: `https://api.proof.holdings/api/v1/me/domains/{id}/verify-email/confirm`
- Auth: API key in cookie `auth_token`

Submit OTP code to confirm corporate email domain verification.

## Path parameters

- `id` string, required: MongoDB ObjectId

## Request body

- VerifyCodeRequest: OTP code submission
  - `code` string, required: OTP verification code

## Response `200`

Domain verified via email — or, for a renewal code, its proof re-minted (`renewed: true`)

- SuccessResponse: Generic success response
  - `success` boolean, required
  - `message` string

## Other responses

- `400`: Invalid code
- `409`: `proof_revoked` or `proof_suspended` — the proof was revoked or paused after the renewal code was sent; it is not re-issued `domain_revoking` — the domain's revocation cascade is running (h-implement-proper-deletion, DOM-1); nothing is minted for it — retry in a moment
- `503`: `domain_proof_status_unavailable` — the proof state could not be read; `domain_renewal_unavailable` — the renewal did not complete. Either way the code stays usable — retry.

---

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