CallNet Voice API
Programmable Voice Infrastructure for AI Agents. Place calls, receive webhooks, and route audio with sub-200ms control latency.
Introduction
Base URL: https://api.callnetdialer.com
All endpoints accept and return JSON. Authenticate every request with your API key.
Pricing: $0.01/minute, flat rate for both outbound and inbound calls, billed in 6-second increments (6s minimum per connected call).
Authentication
Send your API key in the x-api-key header on every request.
x-api-key: cnva_live_sk_...
POST /v1/calls/outbound
Initiate an outbound call from one of your assigned DIDs to any destination number.
curl -X POST https://api.callnetdialer.com/v1/calls/outbound \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"from_did": "9783842993",
"to_number": "YOUR_NUMBER",
"webhook_url": "https://yourserver.com/webhook"
}'Numbers
Search carrier inventory and add numbers to your account. Numbers are invoiced — there is no payment step in the API today.
# search by area code (or ?state=PA)
curl "https://api.callnetdialer.com/v1/dids/available?npa=267&max=20" \
-H "x-api-key: YOUR_API_KEY"
# add a number to your account
curl -X POST https://api.callnetdialer.com/v1/dids \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{"number": "2676782101"}'
# list the numbers on your account
curl https://api.callnetdialer.com/v1/dids -H "x-api-key: YOUR_API_KEY"
# release a number
curl -X DELETE https://api.callnetdialer.com/v1/dids/2676782101 \
-H "x-api-key: YOUR_API_KEY"Inventory varies by area code — an empty result means nothing is available there right now, so try another. Accounts have a number limit; a 403 means you have reached it.
Webhooks
We POST call lifecycle events to your webhook_url: call.ringing, call.answered, call.completed, call.no_answer.
Error codes
401— invalid API key403— DID not assigned to your tenant402— monthly usage limit reached429— rate limit exceeded503— calling temporarily disabled5xx— upstream carrier error