---
title: "Verify number ownership"
method: POST
path: "/v1/voice/verified-numbers/{verified_number_id}/verify"
tags: ["voice-verified-numbers"]
---

# Verify number ownership

`POST /v1/voice/verified-numbers/{verified_number_id}/verify`

## Request

- Base URL: `https://us1.platform.bird.com`
- URL: `https://us1.platform.bird.com/v1/voice/verified-numbers/{verified_number_id}/verify`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `bird_session`

Completes the number ownership verification challenge that registering the number
started. Submit the code delivered by the verification call. An incorrect code is
rejected.

If the verification call could not be started previously, this request can
retry it and place another call to the same number. Your organization must
still meet the identity-verification requirements for registering verified numbers;
otherwise the request returns `412`. For an expired or exhausted challenge,
delete the verified number and register it again, which places a new
verification call, and submit the new code against the ID the registration
returns.

A successful ownership check is retained even when organization eligibility
prevents outbound activation. If the verified number's `status` is `verified` after
a `412` or `503`, complete the missing steps or contact support, then
resubmit an empty object (`{}`). The saved proof is reused without checking
a code again. While proof is still pending, include the code; an empty
object is rejected. A `412` means missing verification steps or an
eligibility decision requiring support; a `503` means assessment is pending
or unavailable. `outbound_enabled` indicates whether activation has
completed. Outbound calls remain subject to routing and number ownership
requirements.

Activation attempts to enable the number's country as a Voice destination.
An unavailable country or a failed settings update can leave it disabled.
Check **Voice** > **Destinations** before calling; see the
[verified number guide](https://bird.com/docs/guides/voice/caller-ids).

## Headers

- `Idempotency-Key` string
- `X-Workspace-Id` string
- `X-Organization-Id` string

## Request body

- VoiceVerifiedNumberVerifyRequest
  - `code` string: The 6-digit verification code read out by the verification call. Required until ownership is verified. Omit it when retrying activation of an already verified number.

## Response `200`

Number ownership verified.

- VoiceVerifiedNumber
  - `id` string, required
  - `workspace_id` string, required
  - `phone_number` string, required: The phone number in E.164 format registered as an outbound caller ID.
  - `name` string, nullable, required: Your label for this verified number, to tell several registered numbers apart. `null` when the verified number has no label. It is yours to choose and appears nowhere on a call, so changing it never affects what the person you are calling sees. Set it with the verified number update operation.
  - `status` string, required: Verification state of the verified number. - `pending`: the number is registered but ownership has not yet been proven. - `verified`: the workspace proved ownership of the number. Check the resource's activation or direction fields for outbound availability. - `failed`: terminal because the verification challenge expired or the attempt limit was exhausted. Delete the verified number and register it again to retry. Open enum: additional states may be added over time, so treat an unrecognized value as a future state rather than an error.
  - `outbound_enabled` boolean, required: Whether outbound caller ID activation has completed. A verified number can remain inactive until activation requirements are met. Outbound calls remain subject to routing and number ownership requirements.
  - `verified_at` string, date-time, nullable, required: When the verified number was verified. `null` when its status is `pending` or `failed`.
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required

## Other responses

- `400`: Bad request
- `401`: Authentication required
- `403`: Insufficient permissions
- `404`: Resource not found
- `409`: Resource conflict
- `412`: Precondition failed
- `422`: The request has invalid field values, violates a business rule, or carries a query parameter the endpoint does not declare. Field validation errors use `type: validation_error` and include the affected fields in `details`. Business-rule errors identify the failed rule in `type`.
- `429`: Rate limit exceeded
- `500`: Internal server error
- `503`: The service is temporarily unavailable. If `Retry-After` is present, wait for that delay before retrying; otherwise, retry with exponential backoff. Reuse the same idempotency key and request when retrying a mutation.

---

[API](https://skmtc.dev/messagebird/apis/bird-api.md) · [All operations](https://skmtc.dev/messagebird/apis/bird-api/llms.txt) · [OpenAPI document](https://skmtc.dev/messagebird/apis/bird-api/revisions/3e2a50466454?raw)
