Confirm an email address

OpenAPI contract

Method
POST
Path
/api/v1/auth/email-verification/confirm
Security
None
Response status
200 400 429 500
Request and response schemas
JSON
{
  "requestBody": {
    "application/json": {
      "$ref": "#/components/schemas/ConfirmEmailRequest"
    }
  },
  "responses": {
    "200": {
      "description": "Email verified",
      "content": {
        "application/json": {}
      }
    },
    "400": {
      "description": "Invalid request",
      "content": {
        "application/json": {
          "$ref": "#/components/schemas/RequestError"
        }
      }
    },
    "429": {
      "description": "Rate limit exceeded",
      "content": {
        "application/json": {
          "$ref": "#/components/schemas/SecurityError"
        }
      }
    },
    "500": {
      "description": "Unexpected server error",
      "content": {
        "application/json": {
          "$ref": "#/components/schemas/ApiError"
        }
      }
    }
  }
}

POST /api/v1/auth/email-verification/confirm is public and accepts a JSON body containing the one-use token from the verification link. A successful response is HTTP 200 with a confirmation message. Expired, invalid, or already used tokens are rejected.

Treat the token as a secret: never record it in logs or diagnostics. Confirmation can make the account eligible for free NCU under the verified identity policy; it does not guarantee another grant for an address that has already received one.