Send the verification email to the primary email

POST /v1/users/{user_id}:send-verification-email · permission user-credentials:write

Sends the verification email to the user's primary email. The response carries the expiry of the verification request; no code or link is returned. To target a specific email row use Send the verification email to an email address. The optional body only selects the email language.

Request

Parameter In Required Description
user_id path yes User id, prefixed usr_.

Optional body:

Field Type Required Description
locale string no BCP 47 language tag of the email, for example tr or pt-BR. Defaults to the user's or the environment's language.

Response

200 OK. expires_at is when the verification request expires.

{
  "expires_at": "2026-01-16T09:30:00Z"
}

Errors

Every error is an application/problem+json body with a stable code.

HTTP code When
400 malformed_request, unknown_field The body is not valid JSON or has an unknown field.
409 conflict The primary email is already verified, or the user has no primary email.
415 unsupported_media_type A body was sent without Content-Type: application/json.
422 validation_failed locale is not a valid BCP 47 language tag, or a field has the wrong type.
404 not_found The user does not exist in this environment (or the id is malformed).
401 unauthenticated The API key is missing, invalid or revoked.
403 insufficient_permissions The key lacks the user-credentials:write permission.
429 rate_limited The API rate limit or the per-user email sending limit was exceeded; honor Retry-After.
503 service_unavailable A dependency is temporarily unavailable; retry later.

Example

curl -X POST https://api.eu.keenauth.com/v1/users/usr_0a1b2c3d4e5f6g7h8j9k0m1n2p:send-verification-email \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"locale": "en"}'