Voice overview
Bird Voice lets you place calls to phone numbers. Your phone system connects to Bird, and Bird routes each call through a carrier to the public telephone network, the PSTN.
The connection between your phone system and Bird is a SIP trunk. SIP (Session Initiation Protocol) sets up calls between phone systems. Bird gives your workspace a trunk address, which your phone system uses for outbound calls to the telephone network.
You do not need a phone system to make the first call: the phone in the dashboard places one straight from the browser, over one of your trunks.
How a call is placed
Your phone system sends a SIP INVITE to the trunk address to start a call. Bird checks the caller ID, destination country, limits, and wallet balance before contacting a carrier. If the call passes, Bird routes it and relays the audio. When it ends, Bird writes a record under Voice > Calls and emits a voice_call.ended event.
A call that fails a check is refused before a carrier is involved, and the specific reason goes onto the call record. Placing calls covers what Bird reads off each call, and Rejected calls lists every refusal reason and what to do about it.
Before your first call
Three things are yours to set up before a call goes through:
- Create a SIP trunk, turn outbound calling on, and allow callers on it: an IP range or an API key for your own equipment, session credentials for a browser or the CLI.
- Verify a caller ID: register the number you present as the caller and confirm it with a verification call. Calls go out only under numbers you have verified.
- Enable your destinations: turn on the countries you call.
Place your first call walks through all three requirements and ends with a real call.
The Voice app in the dashboard
| Page | What it is for |
|---|---|
| Metrics | Call volume, answer rate, and call duration over time, with top countries and SIP response codes |
| Calls | Every call the workspace placed, with usage totals for the month |
| Numbers | Every number the workspace can use for voice: the ones you have from us and the ones you verified as caller IDs |
| SIP Trunks | Your trunks, their SIP domain, and who may send traffic to them |
| Destinations | The countries your workspace may call, off by default |
| Phone | A floating phone that places calls from the browser, over one of your trunks |
Visibility
Every call Bird admits produces a record, whether it connected, rang out, or was refused:
- Call log: the per-call view on the Calls page. Status, both numbers, the trunk the call came in on, the SIP response it ended on, answer and end times, billable time, and cost. Filter it, then export the result as CSV.
- Voice events: voice_call.initiated, voice_call.answered, and voice_call.ended delivered to your own endpoint, so your systems learn about a call without polling.
Limits
Three ceilings apply to your calls: how many you may have in progress at once, how many new calls you may place per second, and what you may spend on voice in a UTC day. Each is set per organization, and the amounts depend on your plan. A call over any of them is refused at setup, and its record names which one, under Rejected calls.
The per-second ceiling is the voice_call group in Rate limits, which also covers how Bird resolves a limit and how to have it raised.
Next steps
| Page | What it covers |
|---|---|
| Place your first call | From an empty workspace to a ringing phone |
| Phone | Calling from the dashboard, what it needs, and what you can do mid-call |
| SIP trunks | Creating a trunk, its connection details, and controlling who may send |
| Placing calls | What Bird expects on the INVITE, and what a call costs |
| Caller IDs | Registering a number and proving you own it with a verification call |
| Voice destinations | Turning on the countries you call, and what high risk means |
| Call log | Browsing, filtering, and exporting your call records |
| Voice events | The three call events and their payloads |
| Troubleshooting | Diagnosing a call that does not go through, from its symptom |
| Webhooks & events | Endpoint setup, signature verification, retries, and replay |