code — only errors that benefit from programmatic branching. For errors without a code, use type and message to understand the issue.
For a full description of the error format, see Errors.
Quick Reference
| Code | Type | HTTP | Description |
|---|---|---|---|
message_undeliverable | provider_error | 402 | Message could not be delivered to recipient |
conversation_window_expired | provider_error | 402 | 24-hour WhatsApp conversation window has expired |
recipient_not_on_whatsapp | provider_error | 402 | Recipient is not registered on WhatsApp |
phone_number_not_assigned | invalid_request_error | 400 | Phone number is not assigned to your app |
unsupported_message_type | invalid_request_error | 400 | Message type not supported by the channel |
media_too_large | invalid_request_error | 400 | Media file exceeds the platform size limit |
invalid_phone_number | invalid_request_error | 400 | Phone number is not in E.164 format |
template_not_found | invalid_request_error | 404 | Template does not exist or is not approved |
template_parameter_mismatch | invalid_request_error | 400 | Template variable count or format is wrong |
groups_not_eligible | provider_error | 402 | Phone number is not eligible for the Groups API |
account_restricted | provider_error | 403 | WhatsApp account has been restricted by Meta |
display_name_not_approved | provider_error | 402 | Phone number display name is pending Meta approval |
whatsapp_not_configured | invalid_request_error | 400 | No WhatsApp Business Profile configured for this app |
meta_api_error | api_error | 424 | Unexpected error from Meta Graph API |
meta_api_unavailable | api_error | 424 | Meta API is temporarily unavailable |
telnyx_api_error | api_error | 424 | Unexpected error from Telnyx API |
telnyx_api_unavailable | api_error | 424 | Telnyx API is temporarily unavailable |
rate_limit_exceeded | invalid_request_error | 429 | Too many requests |
whatsapp_rate_limited | provider_error | 429 | WhatsApp messaging rate limit reached by Meta |
resource_already_exists | invalid_request_error | 409 | A resource with this identifier already exists |
Messaging Errors
message_undeliverable
| Type | provider_error |
| HTTP Status | 402 |
| Description | The message could not be delivered to the recipient. |
- The recipient has blocked your business number
- The recipient’s phone is turned off or unreachable
- The recipient is not available on WhatsApp
- Meta’s ecosystem protection chose not to deliver the message
- Verify the recipient’s phone number is correct and active
- Check if the recipient has opted out of receiving messages
- Try sending to a different number to verify your setup works
| Provider | Code | Meaning |
|---|---|---|
| Meta | 131026 | Unable to deliver message |
| Meta | 131049 | Ecosystem protection |
| Meta | 130472 | Experiment participant |
message_undeliverable response
conversation_window_expired
| Type | provider_error |
| HTTP Status | 402 |
| Description | The 24-hour WhatsApp conversation window has expired. You must use a template message to re-open the conversation. |
- More than 24 hours have passed since the recipient last sent you a message
- Attempting to send a free-form message outside the conversation window
- Send a template message to re-open the conversation
- Set up webhooks to track when customers message you, so you can respond within 24 hours
| Provider | Code | Meaning |
|---|---|---|
| Meta | 131047 | Re-engagement message |
conversation_window_expired response
recipient_not_on_whatsapp
| Type | provider_error |
| HTTP Status | 402 |
| Description | The recipient phone number is not registered on WhatsApp. |
- The phone number does not have WhatsApp installed
- The phone number is a landline or VoIP number
- The phone number was recently deactivated
- Verify the phone number is correct
- Confirm the recipient uses WhatsApp
- Consider falling back to SMS for this recipient
recipient_not_on_whatsapp response
phone_number_not_assigned
| Type | invalid_request_error |
| HTTP Status | 400 |
| Description | The phone number exists in your organization but is not assigned to the app you are sending from. |
- Using a phone number that belongs to a different app
- The phone number was recently unassigned from this app
- Using a test key with a production phone number
- Assign the phone number to your app in the dashboard
- Verify you are using the correct app key
- Check phone number assignments via the Phone Numbers API
phone_number_not_assigned response
unsupported_message_type
| Type | invalid_request_error |
| HTTP Status | 400 |
| Description | The message type is not supported by the channel. |
- Sending an interactive message type that is not supported
- Using a media type the platform does not accept
- Attempting to send a WhatsApp-only message type via SMS
- Check the supported message types for the channel you are using
- Verify media types are within platform limits
| Provider | Code | Meaning |
|---|---|---|
| Meta | 131051 | Unsupported message type |
unsupported_message_type response
media_too_large
| Type | invalid_request_error |
| HTTP Status | 400 |
| Description | The media file exceeds the platform’s size limit. |
- Image exceeds 5 MB (WhatsApp or MMS)
- Video exceeds 16 MB (WhatsApp) or 5 MB (MMS)
- Document exceeds 100 MB (WhatsApp)
- Compress the media file before sending
- Use a lower resolution or bitrate
- Check platform media limits for exact size constraints
media_too_large response
invalid_phone_number
| Type | invalid_request_error |
| HTTP Status | 400 |
| Description | The phone number is not in E.164 format. |
- Missing the
+prefix - Including spaces, dashes, or parentheses
- Invalid country code or number length
- Format the number as
+[country code][number]with no spaces or special characters - Example:
+14155552671(US number) or+447911123456(UK number)
invalid_phone_number response
Template Errors
template_not_found
| Type | invalid_request_error |
| HTTP Status | 404 |
| Description | The template does not exist or has not been approved in the specified language. |
- Typo in the template name
- The template has not been approved by Meta yet
- The template was approved in a different language than the one requested
- The template was rejected for policy violations
- Check the template name in the dashboard
- Verify the template status is “approved”
- Ensure you are requesting the correct language code
- See Templates for template management
| Provider | Code | Meaning |
|---|---|---|
| Meta | 132001 | Template does not exist in the specified language |
| Meta | 132007 | Template rejected for policy violation |
template_not_found response
template_parameter_mismatch
| Type | invalid_request_error |
| HTTP Status | 400 |
| Description | The template variable count or format does not match the template definition. |
- Sending too many or too few variables for the template
- Variables are in the wrong format (e.g., sending a string where a currency object is expected)
- Template definition was updated but your code still sends old parameters
- Check the template definition for the exact number and format of variables
- Ensure each variable matches the expected type
- Re-sync your template data if the template was recently updated
| Provider | Code | Meaning |
|---|---|---|
| Meta | 132000 | Template parameter count mismatch |
| Meta | 132012 | Template variable format mismatch |
template_parameter_mismatch response
Group Errors
groups_not_eligible
| Type | provider_error |
| HTTP Status | 402 |
| Description | The phone number is not eligible for the WhatsApp Groups API. |
- The phone number has not been approved for the Groups API by Meta
- The WhatsApp Business Account does not meet the Groups API requirements
- Check with Meta for Groups API eligibility requirements
- Ensure your WhatsApp Business Account is in good standing
- See WhatsApp Groups for setup instructions
| Provider | Code | Meaning |
|---|---|---|
| Meta | 131215 | Not eligible for Groups API |
groups_not_eligible response
Account Errors
account_restricted
| Type | provider_error |
| HTTP Status | 403 |
| Description | Your WhatsApp Business Account has been restricted by Meta. |
- Policy violations on your WhatsApp Business Account
- Billing issues with your Meta account
- High spam report rate from recipients
- Messaging to restricted countries
- Review Meta’s Commerce Policy and Business Policy
- Check your Meta Business Manager for any policy violation notices
- Resolve any outstanding billing issues
- Appeal the restriction through Meta Business Manager if you believe it was applied in error
| Provider | Code | Meaning |
|---|---|---|
| Meta | 368 | Policy violations |
| Meta | 130497 | Country restriction |
| Meta | 131031 | Account locked |
| Meta | 131042 | Payment issue |
account_restricted response
display_name_not_approved
| Type | provider_error |
| HTTP Status | 402 |
| Description | The phone number’s display name is pending Meta approval. |
- A new display name was submitted and is still being reviewed
- Meta rejected the display name and it reverted to the previous one
- Wait for Meta to approve the display name (typically 24-48 hours)
- Check the phone number status in your dashboard
- If rejected, submit a new display name that complies with Meta’s naming guidelines
| Provider | Code | Meaning |
|---|---|---|
| Meta | 131037 | Display name not approved |
display_name_not_approved response
whatsapp_not_configured
| Type | invalid_request_error |
| HTTP Status | 400 |
| Description | No WhatsApp Business Profile is configured for this app. |
- Attempting to send a WhatsApp message from an app that has not completed Embedded Signup
- The WhatsApp Business Profile was disconnected or deleted
- Complete the Embedded Signup flow to connect a WhatsApp Business Account
- Check that a WhatsApp phone number is assigned to your app
whatsapp_not_configured response
Provider Errors
meta_api_error
| Type | api_error |
| HTTP Status | 424 |
| Description | An unexpected error occurred with the Meta Graph API. |
- Meta returned an unrecognized or generic error code
- A transient issue with Meta’s infrastructure
- Retry the request with exponential backoff
- Check the
provider.codeandprovider.messagefor additional context - If the issue persists, contact support with the
provider.fbtrace_id
| Provider | Code | Meaning |
|---|---|---|
| Meta | 1 | API Unknown |
| Meta | 131000 | Unknown error |
| Meta | 135000 | Generic error |
meta_api_error response
meta_api_unavailable
| Type | api_error |
| HTTP Status | 424 |
| Description | Meta’s API is temporarily unavailable. |
- Meta is experiencing an outage or degraded performance
- The WhatsApp Business Account is in maintenance mode
- Temporary service disruption
- Retry the request with exponential backoff
- Check Meta’s status page for known outages
- If the issue persists for more than 30 minutes, contact support
| Provider | Code | Meaning |
|---|---|---|
| Meta | 2 | API Service |
| Meta | 131016 | Service unavailable |
| Meta | 131057 | Maintenance mode |
meta_api_unavailable response
telnyx_api_error
| Type | api_error |
| HTTP Status | 424 |
| Description | An unexpected error occurred with the Telnyx API. |
- Telnyx returned an unrecognized or generic error
- A transient issue with Telnyx’s infrastructure
- Retry the request with exponential backoff
- Check the
provider.codeandprovider.messagefor additional context - If the issue persists, contact support
telnyx_api_error response
telnyx_api_unavailable
| Type | api_error |
| HTTP Status | 424 |
| Description | Telnyx’s API is temporarily unavailable. |
- Telnyx is experiencing an outage or degraded performance
- Temporary service disruption
- Retry the request with exponential backoff
- Check Telnyx’s status page for known outages
- If the issue persists for more than 30 minutes, contact support
telnyx_api_unavailable response
Rate Limiting Errors
rate_limit_exceeded
| Type | invalid_request_error |
| HTTP Status | 429 |
| Description | You have sent too many requests in a given time period. |
- Exceeding the per-endpoint rate limit
- Burst of requests without rate limiting on your end
- Implement exponential backoff (see Handling Errors)
- Check the
Retry-Afterheader for how long to wait - See Rate Limits for per-endpoint limits
rate_limit_exceeded response
whatsapp_rate_limited
| Type | provider_error |
| HTTP Status | 429 |
| Description | Meta’s WhatsApp messaging rate limit has been reached. |
- Sending too many WhatsApp messages in a short period
- Your WhatsApp Business Account’s messaging tier limit was reached
- Implement exponential backoff
- Request a higher messaging tier through Meta Business Manager
- Spread messages over a longer time window
whatsapp_rate_limited response
Resource Errors
resource_already_exists
| Type | invalid_request_error |
| HTTP Status | 409 |
| Description | A resource with this identifier already exists. |
- Attempting to create a resource with a slug or name that is already taken
- Duplicate webhook registration
- Re-submitting a creation request that already succeeded
- Use a different identifier for the new resource
- Check if the resource already exists before creating it
- If this was a retry, the resource may have been created on the first attempt
resource_already_exists response