# Verify a caller ID

`POST /v1/voice/caller-ids/{caller_id}/verify`

Completes a caller-ID verification challenge started in the dashboard. Submit the code delivered by the verification call. Success marks the caller ID as verified so it can be presented on outbound calls.

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 caller IDs; otherwise the request returns `412`.

If the challenge expires or attempts are exhausted, open Voice > Numbers in the dashboard, remove the verified-number registration, and use Add number > Verify a number you own to register it again and receive a new code. Caller-ID creation and deletion are not available through the public API.

Verification also attempts to enable the number's country as a Voice destination. This is best effort: success does not guarantee the destination is enabled. Read the Voice destination settings and enable a supported country when needed.

## Code samples

**TypeScript**

```ts
const callerId = await bird.voice.callerIds.verify("CALLER_ID", { code: "123456" });
console.log(callerId.id, callerId.status);
```

Examples: [TypeScript](/docs/api/reference/verify-voice-caller-id.ts.md) · [Python](/docs/api/reference/verify-voice-caller-id.py.md) · [Go](/docs/api/reference/verify-voice-caller-id.go.md) · [PHP](/docs/api/reference/verify-voice-caller-id.php.md) · [CLI](/docs/api/reference/verify-voice-caller-id.cli.md) · [MCP](/docs/api/reference/verify-voice-caller-id.mcp.md) · [cURL](/docs/api/reference/verify-voice-caller-id.curl.md)

## Example response `200`

```json
{
  "id": "vci_01krdgeqcxet5s7t44vh8rt9mg",
  "workspace_id": "ws_01j8z5k2qvfpx9m3n7r4t6y8bc",
  "phone_number": "+14155551234",
  "name": "Support line",
  "status": "verified",
  "verified_at": "2026-09-23T10:15:00Z",
  "created_at": "2026-09-23T10:00:00Z",
  "updated_at": "2026-09-23T10:15:00Z"
}
```

## Path parameters

- `caller_id` (string)

## Request body

- `code` (string, required): The 6-digit verification code read out by the verification call.

## Response body

- `id` (string, required): Unique identifier for this caller ID.
- `workspace_id` (string, required)
- `phone_number` (string, required): The phone number in E.164 format registered as a caller ID.
- `name` (nullable string, required): Your label for this caller ID, to tell several registered numbers apart. `null` when the caller ID 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 caller ID update operation.
- `status` (string, required)

  Verification state of the caller ID.

  - `pending`: the number is registered but ownership has not yet been proven.
  - `verified`: the workspace completed the verification call, so the number can
    be presented as the outbound caller ID.
  - `failed`: terminal because the verification challenge expired or the attempt
    limit was exhausted. Use the dashboard to remove and register the caller ID
    again to retry.

  Possible values (may grow over time): `pending`, `verified`, `failed`
- `verified_at` (nullable string, required): When the caller ID was verified. `null` when its status is `pending` or `failed`.
- `created_at` (string, required)
- `updated_at` (string, required)

## Related resources

- [Should I use a Bird SDK or call the API directly?](/explained/platform/should-i-use-an-sdk-or-call-the-api-directly) (answer)
- [Build your first integration](/learn/paths/integration) (course)
- [Send your first email](/docs/get-started/send-your-first-email) (docs)

[Get an implementation brief](/learn/workspace?topic=api-basics)
