This is a searchable reference for Twilio error and warning codes across the products you actually integrate — the REST API, Programmable Messaging (SMS/MMS), Programmable Voice, Verify, and Video. Each entry shows the product area that raised the code, what it means, and how to resolve it, so you can tell a request mistake from a delivery failure at a glance.
How Twilio organises error codes
Twilio assigns error codes into numeric ranges that map to a product and to a point in the lifecycle:
1xxxx Voice / TwiML retrieval and execution (e.g. 11200 HTTP retrieval failure)
21xxx REST API request errors — synchronous, returned on the API call
30xxx Messaging delivery errors — asynchronous, via status callbacks
53xxx Video room and participant errors
60xxx Verify / Authy (e.g. 60200 invalid parameter)
The most important distinction is synchronous vs asynchronous:
- Synchronous (21xxx): Returned immediately with a non-2xx HTTP status and a
codefield in the response body. These mean the API call itself was rejected — badTonumber, missing parameter, unverified caller ID, or trial account restriction. - Asynchronous (30xxx): Arrive later in a
MessageStatuswebhook callback. The API call returned201 Created, but the carrier later rejected or could not deliver the message. If you are not wiring up a status callback URL, these errors are invisible.
The errors you will encounter most often
| Code | Product | Meaning | Fix |
|---|---|---|---|
| 21211 | Messaging | Invalid To phone number | Use E.164 format: +14155551234 |
| 21608 | Messaging | Trial account, unverified recipient | Verify the number in console |
| 11200 | Voice | HTTP retrieval failure (TwiML fetch failed) | Make webhook public, return valid TwiML, check TLS |
| 30003 | Messaging | Unreachable destination handset | Phone off or out of coverage; retry later |
| 30007 | Messaging | Message blocked by carrier | Register A2P 10DLC brand + campaign |
| 30034 | Messaging | Message blocked — unregistered sender | Complete 10DLC registration with TCR |
| 60200 | Verify | Invalid parameter | Check the to number and channel parameter |
Why 30007 and 30034 are so common
Since US carriers began enforcing A2P 10DLC registration, unregistered application-to-person SMS traffic is routinely filtered. 30007 (carrier filtering) and 30034 (unregistered sender) now account for a large share of delivery failures. The fix is registering your brand and campaign with The Campaign Registry (TCR) and linking them to the Twilio messaging service you use to send. Once registered, most filtering clears within 24 to 48 hours.
Tips for debugging
- Always wire up a
StatusCallbackURL on your messaging requests so30xxxerrors surface in your logs rather than silently disappearing. - A
201 Createdfrom the Twilio REST API only confirms Twilio accepted the request — it says nothing about carrier delivery. - For Voice,
11200almost always means your TwiML webhook returned something that is not a200 OKwith a valid XML body, or the URL is blocked by a firewall or basic auth. - Use the search field here to filter by code number, product area, or keyword so you do not have to scroll the full list. Everything runs in your browser; nothing is uploaded.