One API for programmable voice
Everything below is live today. Place and receive calls, drive them with simple verbs, stream events in real time, and pay only for what you use — all from your own backend. Read the documentation for the full reference.
Inbound & outbound calls
Receive calls on your numbers and place them with a single POST. Retry safely with an Idempotency-Key — a network blip never places two calls.
Call-control verbs
Drive any call with plain XML: Say, Play, Dial, Record, Pause, Redirect, Hangup. No SDK, no call state to manage.
Phone numbers (DIDs)
Browse the pool, acquire a number, and point it at a webhook. Set a different handler per number, or one account-wide default.
Numbers API →Real-time event stream
Open a WebSocket and watch calls ring, answer, and complete live. Mint a short-lived stream token on your server so your API key never reaches the browser.
Events & codes →Signed webhooks
Every request we send carries an X-Voice-Signature (HMAC-SHA256) and timestamp. Verify it in a few lines and reject anything older than 5 minutes.
Browser & mobile softphones
Create end-users and mint short-lived phone tokens on your backend. Each token has its own extension and concurrency cap, and can be revoked instantly.
Phone tokens →Text-to-speech
Speak text on any call with <Say>. High-quality voices with an automatic fallback chain, billed per second of speech.
Call recording
Record a caller with <Record> or a whole conversation with <RecordSession>. Download later with a time-limited signed URL.
Pay-as-you-go in KES
A single KES wallet, no monthly fees. Calls billed per second, numbers per month. A live monitor watches active calls and stops runaway spend before it happens.
Wallet API →Start with the quickstart
Five minutes from sign-up to your first call.