---
title: "Confirm a verification code"
method: POST
path: "/v2/senders/registrations/{registration_id}/verifications/confirmation"
tags: ["Senders"]
---

# Confirm a verification code

`POST /v2/senders/registrations/{registration_id}/verifications/confirmation`

## Request

- Base URL: `https://api.transmitmessage.com`
- URL: `https://api.transmitmessage.com/v2/senders/registrations/{registration_id}/verifications/confirmation`
- Auth: API key in header `x-api-key`

Confirms a sender registration by submitting the verification code.
On success, the verification `status` becomes `CONFIRMED` and the sender registration `status` becomes `VERIFIED`.
If you exceed the allowed attempts, the verification becomes `FAILED`. Request a new verification code to try again.

## Path parameters

- `registration_id` string, uuid, required

## Request body

- VerificationConfirmRequest: Request body for confirming a verification code.
  - `code` string, required: The verification code received via the selected verification method.

## Response `200`

Successful response containing the verification confirmation details.

- object
  - `data` object, required: The result of a successful verification code confirmation.
    - `registration_id` string, uuid, required: The registration this verification belongs to.
    - `status` 'SENT' | 'CONFIRMED' | 'EXPIRED' | 'FAILED', required: Status of a sender registration verification.
    - `verified_at` string, date-time, required: Timestamp in RFC3339 format (e.g., 2025-08-26T10:32:00Z) when the verification was confirmed.
  - `request` object: Optional metadata (e.g. requestId, traceId)
  - `meta` object: Optional pagination, feature flags, etc.

## Other responses

- `400`: 400 response specific to the verification confirmation endpoint. The response includes `attempts_remaining` as a structured integer field alongside the standard `detail` and `issues` fields, so clients can display the remaining attempt count without string parsing.
- `401`: Unauthorized. The credential is missing or was rejected by the authentication check. For API keys, other 4xx codes from the key check are returned with the same body, and a failure inside the authentication check returns 500 with it.
- `404`: Not Found
- `409`: Conflict
- `429`: Too Many Requests
- `500`: Internal Server Error
- `503`: Service Unavailable. The authentication check could not be reached. If it is reached but fails internally, the gateway returns 500 with the same body.

## Changes

- **2026-10-01** `e7314f92947a`: 1 breaking, 3 info
  - the response's body type changed from no type to `object` for status `401`
  - removed `#/components/schemas/CommonErrorResponse, subschema #2` from the response body `allOf` list for the response status `401`
  - added the non-success response with the status `503`
  - added the required property `status` to the response with the `401` status

[Operation history](https://skmtc.dev/kudosity/apis/transmit-message-api/changes/v2/senders/registrations/:registration_id/verifications/confirmation/post.md)

---

[API](https://skmtc.dev/kudosity/apis/transmit-message-api.md) - [All operations](https://skmtc.dev/kudosity/apis/transmit-message-api/llms.txt) - [OpenAPI document](https://skmtc.dev/kudosity/apis/transmit-message-api/revisions/6ad9a1c0cd6b?raw)
