# Place the verification call

Source: https://docs.usetone.ai/reference/transfer-destinations/verify

> Tone calls the destination's number and speaks a six-digit code, valid for 15 minutes.

`POST /v1/transfer-destinations/{id}/verify`
Tone calls the destination's number and speaks a six-digit code, valid for 15 minutes. Send it to `POST /v1/transfer-destinations/{id}/confirm`. Only a `pending` destination can be verified (`409 conflict` otherwise). Limits: one call a minute and three a day per destination, twenty a day per workspace (`429 rate_limited`). Needs a live key or the dashboard (`422 environment_mismatch` for a test key), because it rings a real phone.

Requires the `admin` scope.

## Parameters

| Name | In | | Meaning |
|---|---|---|---|
| `id` | path | required | The transfer destination's id. |

## Response

| Field | Type | | Meaning |
|---|---|---|---|
| `createdAt` | string | required | RFC 3339, UTC. |
| `e164` | string | required | The number Tone rings. |
| `hours` | object[] | null | required | When it takes transfers, in IST. Null means at any time. |
| `id` | string | required | The destination's id. Agent configurations refer to it. |
| `key` | string | required | What agents and the call's model name it by. Fixed once created. |
| `label` | string | required | What the person is called in the brief and the dashboard. |
| `language` | string | required | The language the person is briefed in. |
| `status` | string | required | Where it stands. `pending` until the code from the verification call is confirmed; only `verified` can receive a transfer; `disabled` is switched off. Open set — handle an unrecognised value rather than throwing. Today: `pending`, `verified`, `disabled`. |
| `updatedAt` | string | required | RFC 3339, UTC. |
| `verification` | object | required | Where verification stands. |
| `verification.attemptsLeft` | integer | required | Wrong codes that may still be entered before a new call is needed. 0 when no code is waiting. |
| `verification.callsLeftToday` | integer | required | Verification calls this destination may still receive in the current 24 hours. |
| `verification.codeExpiresAt` | string | null | required | When the code from that call stops working. Null when no code is waiting. |
| `verification.lastCallAt` | string | null | required | When the last verification call was placed. |
| `verifiedAt` | string | null | required | When the code was confirmed. Null until then, and again after the number changes. |

### Example response

```json
{
  "data": {
    "createdAt": "2026-10-13T09:20:00.000Z",
    "e164": "+919876543210",
    "hours": [
      {
        "days": "mon-sat",
        "from": "09:30",
        "to": "19:00"
      }
    ],
    "id": "7d1f5c9e-2b3a-4c8d-9e0f-1a2b3c4d5e6f",
    "key": "delivery_team",
    "label": "Delivery team",
    "language": "hi-IN",
    "status": "verified",
    "updatedAt": "2026-10-13T09:30:00.000Z",
    "verification": {
      "attemptsLeft": 5,
      "callsLeftToday": 2,
      "codeExpiresAt": "2026-10-13T09:43:10.000Z",
      "lastCallAt": "2026-10-13T09:28:10.000Z"
    },
    "verifiedAt": "2026-10-13T09:30:00.000Z"
  }
}
```
