Endpoints
| Method | Path | Description |
|---|---|---|
GET | /v1/phone-numbers | List phone numbers |
POST | /v1/phone-numbers | Provision a new number |
GET | /v1/phone-numbers/{phone_number_id} | Retrieve a single number |
PUT / PATCH | /v1/phone-numbers/{phone_number_id} | Assign agents / update status |
DELETE | /v1/phone-numbers/{phone_number_id} | Release the number |
POST | /v1/phone-numbers/{phone_number_id}/transfer | Move a number to another org |
GET | /v1/phone-numbers/{phone_number_id}/versions | List prior assignments |
POST | /v1/phone-numbers/{phone_number_id}/verify-voip | Verify a VoIP-sourced number |
Phone number object
| Field | Type | Description |
|---|---|---|
id | integer | Server-assigned number id |
number | string | E.164-formatted phone number (e.g. +15551234567) |
source | string | demo (provisioned by ThunderPhone) or voip (brought via a VoIP connection) |
status | string | provisioning, active, failed, or released |
inbound_agent_id | integer | null | Agent that answers inbound calls to this number |
outbound_agent_id | integer | null | Agent used when placing outbound calls from this number |
voip_connection_id | integer | null | Linked VoIP connection (only when source="voip") |
voip_verification_status | string | unverified, verified, or failed |
voip_last_verified_at | timestamp | null | Last successful verify |
List phone numbers
created_at descending.
Provision a number
Requests a new demo number from ThunderPhone’s pool. To bring your own number through a VoIP provider, see Import VoIP numbers.| Field | Type | Required | Description |
|---|---|---|---|
area_code | string | no | 3-digit area code to prefer |
city | string | no | US city name |
state | string | no | 2-letter US state code |
201 Created with the new Phone number object in
status="provisioning". The upstream provider usually transitions to
active within seconds; poll the detail endpoint to observe the change.
Retrieve a phone number
200 OK with a Phone number object, or 404 if not found.
Assign agents / update status
PATCH clears or changes inbound/outbound agent assignments. The new
agents must belong to the same org.
| Field | Type | Description |
|---|---|---|
inbound_agent_id | integer | null | Pass null to clear |
outbound_agent_id | integer | null | Pass null to clear |
status | string | Usually set by the server; write access is limited to toggling between active and released |
200 OK with the updated Phone number object.
Release a phone number
204 No Content. Demo numbers are returned to the pool; VoIP
numbers are detached from the phone record but remain in your VoIP
provider.
Transfer a number to another org
Atomically move a number between orgs. Requiresadmin+ in both orgs.
On transfer, the number’s inbound/outbound agent assignments are
cleared (agents don’t cross org boundaries).
Response
Version history
Every assignment change records a snapshot so you can audit who changed what.Response
Verify a VoIP-sourced number
For numbers imported through a VoIP connection, run (or re-run) the end-to-end verification flow that confirms inbound routing works and outbound trunking is authorized.Response
voip_verification_status becomes
failed and the phone status returns to provisioning — fix the VoIP
connection (credentials, trunk, SIP allowlist) and call this endpoint
again.
Related
Agents
Configure the voice agents you assign to these numbers.
VoIP Connections
Bring your own phone numbers via Twilio, Telnyx, and more.
Phone Number Labels
Tag caller phone numbers that show up in call history.
Calls
See call history filtered by phone number.