Cowdidocs
API ReferenceCurrent account email verification

Confirm the email OTP

POST
/v1/user/accounts/current/email/verifications/{emailVerificationId}/confirm

Verifies the OTP code and marks the account's email VERIFIED. Requires an authenticated, active user. Confirming an already-verified email is a no-op that returns the same verified result. Returns 404 when the verification does not exist, belongs to another caller, or is not AWAITING_OTP. Returns 400 when the code is wrong or no longer valid.

AuthorizationBearer <token>

Create a client with POST /v1/oauth/clients, then exchange its credentials for an access token. AUTHORIZATION_CODE clients act on behalf of a signed-in user and always use PKCE; CLIENT_CREDENTIALS clients act as themselves. A client may only be granted scopes its creator already holds — read the grantable list from GET /v1/oauth/clients/scopes.

In: header

Path Parameters

emailVerificationId*string

Unique identifier of the email verification.

Formatuuid

Request Body

application/json

Request body for confirming an OTP.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/user/accounts/current/email/verifications/550e8400-e29b-41d4-a716-446655440000/confirm" \  -H "Content-Type: application/json" \  -d '{    "otp_code": "1234"  }'
{  "id": "550e8400-e29b-41d4-a716-446655440000",  "url": "https://api.cowdi.co/v1/user/accounts/current/email/verifications/550e8400-e29b-41d4-a716-446655440000",  "status": "INITIALIZING",  "created_at": "2026-09-01T10:15:30Z",  "verified_at": "2026-01-15T09:32:00Z",  "confirm_url": "https://api.cowdi.co/v1/user/accounts/current/email/verifications/550e8400-e29b-41d4-a716-446655440000/confirm",  "resource_id": "string"}
{  "code": "BAD_REQUEST",  "description": "Bad Request"}
{  "code": "UNAUTHORISED",  "description": "Unauthorised"}
{  "code": "FORBIDDEN",  "description": "Forbidden"}
{  "code": "RATE_LIMIT_EXCEEDED",  "description": "Too Many Requests"}
{  "code": "INTERNAL_ERROR",  "description": "Internal Server Error"}