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
List your org’s numbers and note theid of the one you want to route.
cURL
Response (200)
List Numbers reference
Full request/response schema.
2. Create the SIP trunk to Vapi
Point the trunk’ssip_url at Vapi’s 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 Vapi.
cURL
Response (201)
origin_endpoint.ingress (plus the trunk’s auth_username / auth_password) is what
you enter in Vapi’s BYO SIP trunk.
Attach Numbers reference
Path params, request body, and the full origin-endpoint response.
Configure the Vapi side
The Unpod side is done. Register the origin endpoint in Vapi as a BYO SIP trunk, then import the number. These are Vapi’s own APIs (api.vapi.ai, Authorization: Bearer <vapi-key>).
4. Create the BYO SIP trunk credential
cURL
gateways[].ip = your Unpod origin_endpoint.ingress (host only, no sip:). Copy the
returned credential id.
5. Import the number
cURL
Vapi SIP trunk docs
Full BYO SIP trunk credential + phone-number reference (fields may change - this is Vapi’s API).
Troubleshooting
| Status | Meaning | Fix |
|---|---|---|
400 on /trunks/ | Missing sip_url | Send sip:sip.vapi.ai |
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 |