Skip to main content
You need an Unpod number to make or receive calls: it’s the from of the calls you place and the number people dial to reach you. Add one from the Unpod pool in either of two ways:
  • From the dashboard - pick a number and connect it in a few clicks.
  • From the API - list the pool, attach a number and check it’s ready, all in code.

From the dashboard

Using the Telephony APIs (Quick Start)? Attach the number from the API with attach_type="human_call". The steps below connect it to a SIP trunk or an agent.
1

Open Telephony → Numbers and click +

The + button next to the Telephony heading opens the number pool.
Unpod Telephony page with the + button highlighted

Telephony → Numbers - the + button opens the number pool

2

Select a number and click Save

Available Numbers lists every number you can add. Click Select on one, then Save.
Available Numbers panel with one number selected and the Save button highlighted

Available Numbers - select one, then Save

3

Click Connect to

The number starts Not Linked. Connect to offers SIP Trunk (your own SIP client places and answers calls) and Agents (an Unpod AI agent answers).
Number Configuration showing Not Linked and the Connect to menu with SIP Trunk and Agents

A new number starts Not Linked - Connect to opens the options

4

Ready (SIP Trunk)

After Connect to → SIP Trunk, the number turns Linked and shows its outbound trunk details.
Linked number showing Outbound Trunk Details: address, port, protocol, username and password

Outbound Trunk Details - ready as soon as you choose SIP Trunk

For the trunk values and the inbound setup, see the full dashboard walkthrough.

From the API

Export your credentials (UNPOD_BASE_URL, UNPOD_PLATFORM_TOKEN, UNPOD_ORG_HANDLE) first.

List numbers

The list holds the free pool plus the numbers your org already has. Pick one whose state is NOT_ASSIGNED and whose active is true. The SDK folds both into status: not_assigned means you can attach it.
The response:

Attach a number

Pass one number or a list, in strict E.164 (+ and the country code). Each number succeeds or fails on its own: check ok and error on every row (data.numbers in the cURL response). If no number attaches, the whole request fails: 400, 402 (no balance) or 206 (over your plan’s channel quota). The SDK raises httpx.HTTPStatusError on 400 and 402, but not on 206, so still check ok. To receive calls on a human_call number, point it at your app: see Incoming Calls.

Check status

The overview lists your org’s numbers with their connection_state (see Number states). Check it before you use a number as from.

Detach a number

Detach releases the number back to NOT_ASSIGNED; it isn’t deleted. A number your org owns stays yours to attach again. A number you took from the shared pool goes back to the pool, where another org can take it.

Number states

connection_state in the overview tells you whether a number is ready: On a call, 400 from_not_owned means from isn’t one of your org’s numbers at all. A 403 forbidden: from is not a number available to this organization means it is yours but isn’t ready: check its connection_state.

Reference