Dialer
Call any phone number from your browser using your own Twilio numbers, with a live transcript, a dual-channel recording, and every call saved to Call history.
What you'll learn
How to place your first call from the browser, choose which number the other person sees, use the live transcript and in-call controls, find recordings and transcripts afterwards, what a call costs, and how to fix the most common problems.
Dialer
The Dialer is a phone in your browser. Type a number, press call, and talk through your computer's microphone and speakers. The call goes out from one of your own Twilio numbers, so the person you call sees a real phone number, not a browser.
Use it for the calls that need a human: a follow-up after an agent call, an escalation, or checking that a number works. It's a call between two people. No AI agent joins the call.
Every dialer call gets:
| What you get | Details |
|---|---|
| Crystal-clear audio path | Your voice goes straight from your browser to Twilio's nearest edge and on to the phone network. zoxaAI's servers never sit in the audio path. |
| Live transcript | Both sides are transcribed as you talk, with You and Callee shown separately. |
| Dual-channel recording | Your voice and the callee's voice are recorded on separate channels. |
| Call history | Every call lands in Call history with its recording, transcript, outcome and cost. |
| Any destination | Mobiles and landlines, in your country or abroad, as long as your Twilio account allows it. |
Requirements
| Requirement | Why |
|---|---|
| A Twilio telephony configuration | The dialer places calls through your Twilio account. Set one up in Twilio. |
| At least one active Twilio number in that configuration | This is the number the person you call will see. Numbers from other providers don't appear in the dialer. |
| A wallet balance above the minimum | The same balance check as any other call. |
| A browser with microphone access | Chrome, Edge, Firefox and Safari on desktop all work. Headphones give the best results. |
Nothing to set up in Twilio
You only ever enter your Account SID and Auth Token. The first time you use the dialer with a Twilio configuration, zoxaAI creates what browser calling needs in your Twilio account for you: an API Key and a TwiML App, both named zoxa-dialer. Leave them in place; zoxaAI checks they still exist (at most once an hour per configuration), and if one was removed it is created again the next time you open the dialer. Rotating the Auth Token keeps them, because they belong to the Twilio account. If you change the Account SID on the configuration, or delete the configuration, zoxaAI removes that API Key and TwiML App from your Twilio account and creates new ones the next time you call. The API Key secret is stored on our side only and is never shown in the dashboard or returned by the API.
If you open the dialer without a Twilio configuration, you'll see Add Twilio telephony first with a button to the Telephony page. If you have a Twilio configuration with no active number, the page asks you to add a number to it.
Make your first call
Open the Dialer
Select Dialer in the sidebar.
Check the number you're calling from
The Call from card at the top shows the number the other person will see. It starts on your default number (marked with a ★). Click it to pick a different one. See Choose your from-number.
Enter the number to call
Type the number with the keypad or your keyboard. The flag picker sets the country code and starts on your from-number's country.
- Pasting works with any formatting.
(+91) 98-765 43210andtel:+919876543210both become+91 98765 43210, and a pasted country code switches the flag. - Hold 0 on the keypad to type
+. - Backspace deletes one digit.
The call button stays disabled until the number is complete and valid for its country.
Press call
Click the green call button or press Enter. The first time, your browser asks for microphone access. Choose Allow.
The status moves through Connecting → Ringing → Connected. The timer starts the moment the other person answers.
Talk, then hang up
Use the controls on the live call panel while you talk. Click End to hang up. You can also click it while the phone is still ringing to cancel the call.
Test your connection first
Click the gear icon next to the keypad to choose your microphone and run Test connection. It places a short test call to Twilio, which plays the audio straight back, and grades your connection quality, with round-trip time, jitter and MOS (an audio-quality score out of 5). In Chrome the test sends a built-in sample sound and ends by itself with a full report. In other browsers it uses your microphone, so you may hear yourself, and it stops after 20 seconds with the measurements taken so far; the full quality grade needs Chrome. Closing the settings panel stops a running test, and zoxaAI hangs up any test call still open after 25 seconds. The test isn't available during a call and doesn't appear in Call history. zoxaAI doesn't charge for it, but Twilio bills the test's Voice SDK (client) minutes to your Twilio account at your Twilio rates.
Choose your from-number
The from-number is the caller ID the other person sees. The Call from picker lists every active number in your Twilio configurations, grouped by configuration, with a search box.
| Marker | Meaning |
|---|---|
| ★ | The configuration's default caller ID number. Set it on the Telephony page. |
Which number is picked first:
- The ★ number of your default outbound configuration, if that configuration is Twilio.
- Otherwise, the first ★ number in any Twilio configuration.
- Otherwise, the first active Twilio number.
To switch, open the picker and choose another number. Your choice stays selected while you keep the page open.
During a call
| Control | What it does |
|---|---|
| Mute | Stops sending your microphone. A live level meter next to it shows whether your mic is picking you up. |
| Keypad | Sends touch-tones, for example to get through a phone menu ("press 1 for sales"). |
| End | Hangs up. While the phone is ringing, it cancels the call. |
Live transcript. What you say appears on the right as You. What the other person says appears on the left as Callee. Words stream in as they're spoken and settle into final text. The view follows the conversation. If you scroll up to reread something, it stays where you are and shows a Jump to latest button.
The transcript starts when the other person answers. Ringing tones and carrier messages are never transcribed.
Live translation. Turn on Translate callee to see what the other person says in your language as they speak. Their original words stay in the bubble, and the translation appears underneath in smaller text with a language tag, for example EN. The translation streams in a few words at a time and settles when they finish the phrase. Only the callee is translated; your own words are never translated. Translation is included in the per-minute price.
Call settings. Before you call, open the gear icon to set how the call is transcribed and translated:
| Setting | What it does |
|---|---|
| Languages | The languages spoken on the call. The starred language is the main one; star another to make it the main language. Only these languages are transcribed, so add every language you expect, for example Hindi and English for a Hinglish call. When Translate callee is on, the callee's language is detected automatically and these languages are used as hints. Defaults to English. |
| Accuracy ↔ Speed | How long the transcript waits before it settles each phrase. Max accuracy (the default) waits for the speaker to finish, so words at the end of a phrase aren't cut off. Balanced, Fast and Fastest settle sooner, and long phrases may split in two or lose a word. |
| Translate callee | Shows a live translation under everything the other person says. |
| Translate to | The language the callee is translated into. Defaults to English. |
| Microphone and Speaker | The devices the call uses. |
Your settings are saved in this browser and apply from the next call you place. Each call also keeps a record of the settings it ran with: its languages, accuracy setting, translation, the names of your microphone and speaker, and the per-minute rate. Call history shows them in the call's Dialer settings card.
Connection warnings. If your network struggles, a Poor connection pill appears. If your microphone goes silent, you'll see We can't hear your mic. If your network drops briefly, a Reconnecting… banner shows while the call carries on. A brief problem that doesn't end the call, such as a touch-tone that couldn't be sent, shows a short Brief connection problem note with its error code; the call stays connected.
Transcript unavailable. If live transcription stops for one side of the call, a note says Live transcript unavailable for the callee (or for you). The call itself carries on, and the recording is still saved to Call history.
During a call, the microphone and Test connection in the gear panel are locked. You can still switch the speaker.
Don't close the tab mid-call
Closing the tab, or going to another page of zoxaAI, hangs up the call. You're asked to confirm first. Switching teams during a call keeps the call and its controls on screen.
After the call
A summary card shows the outcome (Answered, No answer, Busy, Invalid number, Declined, Unreachable, Failed or Cancelled) and, for an answered call, its duration, with buttons to Open in Call history, Call again or go Back to recents.
When the call didn't complete normally, the summary also shows the call's status from the phone network, for example No answer · SIP 487 Request terminated or Failed · SIP 404 Not found. An answered call that ended normally shows no status line. The SIP code is the carrier's answer to the call attempt, and a failed call's outcome follows from it straight away:
| SIP code | Meaning | Outcome |
|---|---|---|
| 404 Not found, 410 Gone, 484 Address incomplete, 604 Does not exist anywhere | That number isn't valid. | Invalid number |
| 480 Temporarily unavailable | The phone is switched off or out of coverage. | Unreachable |
| 486 Busy here, 600 Busy everywhere | The line is busy. | Busy |
| 603 Decline | The person rejected the call. | Declined |
| 403 Forbidden | Twilio or the carrier refused the call, for example because of Geo Permissions. The Twilio error code, when it arrives, says why. | Failed |
| 487 Request terminated | The call stopped ringing: nobody answered in time, or it was cancelled. | No answer or Cancelled |
| 503 Service unavailable | The carrier couldn't route the call right now. | Failed |
Why a call didn't go through
When a call fails, the call panel explains why in plain language, says what to do about it, and shows the Twilio error code with a link to Twilio's page for it, for example:
International calling to this country is off in your Twilio Geo Permissions In the Twilio Console, open Voice → Settings → Geo permissions, turn on this country, then call again. Twilio error 13227
The reason comes from the phone network first. When Twilio ends a call it was placing, for example to an invalid number, the call panel shows the carrier's reason (That number isn't valid) as soon as the call ends, from the SIP code. Twilio's own error code and its docs link follow a few seconds later: Twilio doesn't send them with the call itself, so zoxaAI looks them up from your Twilio account's error log. If the error points to something more specific than "Failed", the outcome is updated too, for example to Invalid number.
Your browser often reports an error at the same moment Twilio ends a call, such as 31005. That error is a side effect, so it is never shown in place of the network's reason. It is shown only when the call never reached Twilio (microphone or sign-in problems appear straight away), or when the network gives no reason within a few seconds; it is then labelled Browser reported. Every code zoxaAI explains is listed under Twilio error codes.
Recents
The right side of the dialer lists your dialer calls, newest first, grouped by day. Each row shows the number, the from-number it was called via, the outcome and, for a call that didn't go through, why, the duration and when it happened.
- Click the number to put it back on the keypad without dialing.
- Call again redials it from the same from-number.
- You can also copy the number or open the call in Call history.
Recordings and transcripts in Call history
Dialer calls appear in Call history like every other call, marked with a D badge in place of an agent name.
| What | Where |
|---|---|
| Recording | Recorded from the moment the call is answered, in two channels: channel 1 is You, channel 2 is the Callee. It appears a short time after the call ends. |
| Transcript | The final transcript of both sides, labelled You and Callee. When translation was on, each Callee line shows its translation underneath. |
| Dialer settings | The settings the call ran with: transcription languages, accuracy setting, translation, microphone and speaker names, and the rate. |
| Cost | The dialer charge for the call. |
| Call connection | The dialer's outcome words: Answered, No answer, Busy, Declined, Cancelled, Invalid number, Unreachable and so on, the same as in the dialer and Recents. |
| Ended reason | You hung up means you ended the call. Callee hung up means the person you called hung up. |
| Why it didn't connect | For a call that wasn't answered: the outcome, the network status and SIP code, and the reason with what to do and the Twilio error code. An answered call that ended abnormally shows the same card as How it ended. |
Recordings are copied into zoxaAI's storage and then deleted from your Twilio account, so they don't pile up there. The copy is fetched from Twilio's US1 region (api.twilio.com), where Twilio stores recordings by default; a recording kept in another Twilio region is not copied.
Recording consent
Every answered dialer call is recorded. Recording and call-consent laws differ by country and state. Telling the other person the call is recorded, where the law requires it, is your responsibility.
Pricing
| Cost | |
|---|---|
| Answered call | $0.03 per minute, rounded up to the next whole minute. Live transcription and translation are included. |
| Unanswered call (no answer, busy, failed, cancelled) | Free |
| Twilio minutes | Billed by Twilio to your own Twilio account, at your Twilio rates |
Billing counts talk time only, from the moment the other person answers. Ringing time is not charged. If Twilio can't confirm how a call ended (for example, the Twilio credentials were removed while the call was running), the call is ended without a charge.
| Talk time | Billed minutes | zoxaAI charge |
|---|---|---|
| 0:20 | 1 | $0.03 |
| 1:00 | 1 | $0.03 |
| 1:01 | 2 | $0.06 |
| 12:30 | 13 | $0.39 |
Dialer calls count toward your organization's concurrent-call limit while they're in progress. A single call can last up to 2 hours.
Calling other countries
Twilio Geo Permissions and the India caller-ID rule
Geo Permissions. Twilio blocks calls to countries that aren't enabled on your account. Before calling a new country, enable it in the Twilio Console under Voice → Settings → Geo permissions. If it isn't enabled, the call fails with error 13227.
Calling India. Twilio only allows calls into India (+91) from a non-Indian caller ID. If you enter a +91 number while an Indian number is selected, the dialer stops you and lets you switch to a number you can use. When you call India from a non-Indian number, the person you call sees an international number.
Troubleshooting
| Problem | Cause | Fix |
|---|---|---|
| "Microphone access was blocked" | Your browser or operating system denied the microphone. Nothing was dialed. | Click the lock or camera icon in the address bar, set Microphone to Allow, and reload. On macOS, also check System Settings → Privacy & Security → Microphone for your browser. |
| "We can't hear your mic" | The selected microphone is sending silence. | Open the gear icon, choose the right microphone, and check that it isn't muted on the device itself. |
| "Poor connection", choppy or robotic audio | High latency, jitter or packet loss on your network. | Move to a wired or stronger Wi-Fi connection, pause large downloads and video calls, and run Test connection. |
| The other person hears an echo | Your speakers are feeding back into your microphone. | Use headphones. They give the clearest calls and stop echo. |
| A Twilio error code | Twilio refused or dropped the call. | See Twilio error codes below. |
| "The call came from a different browser session" or "The call had already ended when Twilio tried to connect it" | The call was started again or abandoned while Twilio was still connecting it. | Start a new call from the dialer. |
| Every call fails at once, and Twilio's debugger shows HTTP 403 from zoxaAI | The Twilio auth token saved in zoxaAI doesn't match your Twilio account, usually after the token was rotated, so zoxaAI can't verify Twilio's requests. | Update the auth token in Telephony, then call again. |
| Calling India is blocked | You chose an Indian from-number for a +91 destination. | Switch to a non-Indian from-number. See Calling other countries. |
| Call connects but there's no audio, or it can't connect at all on a work network | A firewall is blocking Twilio's voice traffic. | Ask your network admin to allow outbound UDP ports 10000–60000 to Twilio's media servers, and TCP 443 to Twilio. |
| "Insufficient balance" | Your wallet is below the minimum needed to start a call. | Top up your wallet on the Billing page. |
| "Concurrency limit reached" | Your organization already has as many calls running as its plan allows. | Wait for a call to end, or add concurrency slots. |
| "Add Twilio telephony first" | No Twilio configuration, or no active number in it. | Add a Twilio configuration and a number in Telephony. |
| Transcript is in the wrong language or garbled | The call's language isn't in your transcription languages. | Open the gear icon and add every language spoken on the call under Transcription, then call again. |
| No live transcript | The transcript starts only after the other person answers. | If it stays empty during a connected call, the call itself is unaffected: the recording is still saved to Call history. |
| Words at the end of a phrase are cut off | Accuracy ↔ Speed is set toward Speed, so phrases settle before the speaker finishes. | Open the gear icon and move the slider back to Max accuracy. |
Twilio error codes
These are the errors zoxaAI explains in the call panel and in Call history. Each code links to Twilio's own page for it.
Raised by Twilio when it places the call
| Code | What you see | What to do | Outcome |
|---|---|---|---|
| 13227 | International calling to this country is off in your Twilio Geo Permissions | In the Twilio Console, open Voice → Settings → Geo permissions, turn on the country, then call again. | Dial failed |
| 13223, 13224, 13226 | That number isn't valid | Check the number, including the + and country code. Premium-rate and shared-cost numbers can't be called. | Invalid number |
| 13225 | Twilio blocked this call | Twilio blocks destinations it rates high-risk for fraud, and calls to +1 numbers need an approved Primary Customer Profile in Trust Hub. Contact Twilio Support if the number should be allowed. | Dial failed |
| 13214 | Caller ID not accepted | Call from a number bought in this Twilio account, or verify the number as a caller ID in the Twilio Console. Remove numbers you no longer own from your telephony configuration. | Dial failed |
Raised in your browser
| Code | What you see | What to do |
|---|---|---|
| 31401, 31208 | Microphone access was blocked | Allow the microphone for this site in your browser, and in your computer's privacy settings. |
| 31402 | Your microphone couldn't be started | Check the microphone is connected and not in use by another app, or pick another one under the gear icon. |
| 31003, 31005, 31009, 53405 | Connection timed out / Lost connection to Twilio / Couldn't reach Twilio / Call audio couldn't connect | Check your internet connection. On a work network or VPN, make sure it allows Twilio voice traffic. |
| 20101, 20104, 31201, 31202, 31204, 31205, 31207 | Couldn't sign in to Twilio / Your Twilio session expired | Reload the page and try again. |
| 31203 | Your Twilio account isn't active | Check the account's status and balance in the Twilio Console. |
| 31206 | Too many requests to Twilio | Wait a moment, then try again. |
| 31000, 31002 | Twilio couldn't complete the call / Twilio declined the call | Try again. If it keeps happening, check Monitor → Logs → Errors in the Twilio Console. |
| 31008, 31480, 31486, 31603 | Call cancelled / They're unavailable / Line busy / Call declined | Try again later. |
Browser errors don't change the call's outcome; Twilio's own result for the call does. In Call history, a browser error appears under Browser reported, below the call's reason.
Campaigns
Run outbound calling campaigns at scale with per-campaign telephony, scheduling, retries, circuit-breaker protection, structured event logs, and real-time progress monitoring.
Call History
The Calls page — list view filters and columns, plus the per-call detail page with Transcript, Logs, Latency, Insights, Cost, and Config tabs. Every metric defined with what it means and how to use it.