Base URL:
https://unpod.ai/api/v2/platform/
Every request needs Authorization: Token <your-api-key> and an Org-Handle header.
See Authentication.Prerequisites
- An Unpod API Token and Org-Handle.
- A number in your org (we’ll fetch its
idbelow).
1. Find your number
cURL
Response (200)
List Numbers reference
Full request/response schema.
2. Create the SIP trunk to ElevenLabs
Point the trunk’ssip_url at ElevenLabs’ SIP host. One trunk carries both inbound and outbound.
cURL
Response (201)
Create Trunk reference
All request fields (
sip_url, auth_username, auth_password, transport, port, source_ips).3. Attach your number to the trunk
Map the number from step 1 (itsid) to the trunk from step 2 (its id). The response
returns the origin endpoint - the address + creds you register in ElevenLabs.
cURL
Response (201)
origin_endpoint.ingress (plus the trunk’s auth_username / auth_password) is what
you enter in ElevenLabs’ BYO SIP trunk.
Attach Numbers reference
Path params, request body, and the full origin-endpoint response.
Configure the ElevenLabs side
The Unpod side is done. Import the number into ElevenLabs over SIP. This is ElevenLabs’ own API (api.elevenlabs.io, xi-api-key header). Use the origin endpoint from step 3.
4. Import the number from SIP trunk
cURL
outbound_trunk_config.address = your origin_endpoint.ingress host (no sip:). The
response returns a phone_number_id - attach your Conversational AI agent to it.
ElevenLabs SIP trunking docs
Full phone-number import + agent assignment (this is ElevenLabs’ API).
Troubleshooting
| Status | Meaning | Fix |
|---|---|---|
400 on /trunks/ | Missing sip_url | Send sip:sip.rtc.elevenlabs.io:5060;transport=tcp |
400 on attach | Number not in org | Use a valid id from GET /numbers/ |
401 | Bad Unpod token | Verify Authorization: Token … |
403 | Wrong org | Verify the Org-Handle header |