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). - Your LiveKit SIP URI from the LiveKit Cloud dashboard (Settings → Project),
e.g.
sip:<project-id>.sip.livekit.cloud.
1. Find your number
cURL
Response (200)
List Numbers reference
Full request/response schema.
2. Create the SIP trunk to LiveKit
Point the trunk’ssip_url at your LiveKit SIP URI. 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 use in LiveKit.
cURL
Response (201)
origin_endpoint.ingress (plus the trunk’s auth_username / auth_password) is what
you enter when creating the LiveKit outbound trunk.
Attach Numbers reference
Path params, request body, and the full origin-endpoint response.
Configure the LiveKit side
The Unpod side is done. LiveKit’s SIP API is served over Twirp HTTP at{LIVEKIT_URL}/twirp/livekit.SIP/<Method>. Authenticate with a LiveKit access token
(JWT with a SIP admin grant) - mint one with lk token create --sip-admin or a server SDK.
Env
4. Create the inbound trunk
cURL
Response
5. Create the outbound trunk
cURL
Response
trunk.address = your origin_endpoint.ingress host (no sip: prefix).
6. Create the dispatch rule
cURL
Response
The same calls are available via the
lk CLI (lk sip inbound create <file>) and the
server SDKs (Go SIPClient, JS SipClient, Python sip_service). Field shapes follow
LiveKit’s SIP proto - confirm in their API reference.LiveKit SIP API reference
Full trunk + dispatch-rule API and SDK usage (this is LiveKit’s API).
Troubleshooting
| Status | Meaning | Fix |
|---|---|---|
400 on /trunks/ | Missing sip_url | Send your sip:<project-id>.sip.livekit.cloud |
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 |