When sending SMS/MMS messages through Chirp, delivery failures from Telnyx are mapped to Chirp’s standard error format. The original Telnyx error details are preserved in theDocumentation Index
Fetch the complete documentation index at: https://docs.buildwithchirp.com/llms.txt
Use this file to discover all available pages before exploring further.
provider object for debugging.
For a general overview of the error format, see Errors.
Error Code Mapping
The following table shows how common Telnyx error scenarios are mapped to Chirp error codes.| Scenario | Chirp Code | HTTP | Description |
|---|---|---|---|
| Invalid destination number | invalid_phone_number | 400 | The destination phone number is not valid or cannot receive SMS. |
| Number not assigned | phone_number_not_assigned | 400 | The sending phone number is not assigned to your app. |
| Media too large | media_too_large | 400 | The MMS media attachment exceeds the 5 MB size limit. |
| Carrier rejected | message_undeliverable | 402 | The carrier rejected the message (spam filter, invalid route, etc.). |
| Destination unreachable | message_undeliverable | 402 | The recipient’s phone is unreachable or the number is disconnected. |
| Telnyx API error | telnyx_api_error | 424 | An unexpected error occurred with the Telnyx API. |
| Telnyx service down | telnyx_api_unavailable | 424 | Telnyx API is temporarily unavailable. |
| Rate limited | rate_limit_exceeded | 429 | Too many requests sent in a short period. |
Example Error Response
When an SMS fails to send, you receive a standard Chirp error response with the Telnyx error details in theprovider object:
SMS delivery failure
Common Delivery Failures
Invalid Destination Number
The destination phone number is not valid. This can happen when the number is formatted incorrectly, does not exist, or is a type that cannot receive SMS (e.g., some toll-free numbers or short codes). How to fix:- Verify the phone number is in E.164 format (e.g.,
+14155552671) - Confirm the number is a mobile phone that can receive SMS
- Remove any spaces, dashes, or parentheses from the number
Invalid destination
Carrier Rejected
The recipient’s carrier rejected the message. This typically happens due to spam filtering, content restrictions, or carrier-level blocking. Common reasons:- Message content triggered a spam filter
- The sender number is not properly registered for A2P (Application-to-Person) messaging
- The carrier blocks messages from certain number types
- The recipient has opted out of receiving messages from this number
- Review your message content for spam trigger words
- Ensure your sending number has a proper messaging profile configured
- Register your brand and campaign with The Campaign Registry (TCR) for 10DLC numbers
- Check if the recipient has opted out
Rate Limited
You are sending messages too quickly. Telnyx and carriers enforce rate limits to prevent abuse. How to fix:- Implement a sending queue with rate limiting
- Spread messages over a longer time period
- Use the
Retry-Afterresponse header to determine when to retry - See Rate Limits for Chirp API rate limits
Webhook Delivery Failures
When an SMS fails to deliver after being accepted, Chirp sends a webhook notification with the failure details.SMS failure webhook
Webhook delivery failures happen asynchronously. The initial API call may return a success response (message queued), but the delivery can still fail later. Always set up webhooks to track delivery status.
Troubleshooting
If you are experiencing persistent SMS delivery issues:- Check your messaging profile — Ensure your Telnyx messaging profile is properly configured with the correct webhook URL
- Verify 10DLC registration — For US numbers, ensure you have completed A2P 10DLC registration through TCR
- Test with different carriers — Try sending to numbers on different carriers to isolate carrier-specific issues
- Review message content — Some content may trigger carrier spam filters
- Check number capabilities — Confirm your sending number supports SMS/MMS
- Monitor webhook events — Set up webhooks to track delivery status in real time