provider object so you have full context for debugging.
For a general overview of the error format, see Errors.
Error Code Mapping
The following table shows how Meta error codes are mapped to Chirp error codes. When a Meta error does not have a corresponding Chirp code, the error response usestype and message only.
| Meta Code | Meta Title | Chirp Code | Chirp Message |
|---|---|---|---|
| 1 | API Unknown | meta_api_error | An unknown error occurred with the Meta API. |
| 2 | API Service | meta_api_unavailable | Meta API is temporarily unavailable. Please try again later. |
| 368 | Policy Violations | account_restricted | Your account has been restricted for policy violations. |
| 130472 | Experiment Participant | message_undeliverable | Message was not delivered due to Meta’s engagement policies. |
| 130497 | Country Restriction | account_restricted | Messaging to users in this country is restricted. |
| 131000 | Unknown Error | meta_api_error | Message failed to send due to an unknown Meta error. |
| 131005 | Access Denied | — | Permission not granted or has been removed. |
| 131008 | Missing Parameter | — | A required parameter is missing from the request. |
| 131016 | Service Unavailable | meta_api_unavailable | WhatsApp service is temporarily unavailable. |
| 131021 | Same Sender/Recipient | — | Sender and recipient phone numbers cannot be the same. |
| 131026 | Message Undeliverable | message_undeliverable | Unable to deliver message. The recipient may have blocked your number or is unavailable on WhatsApp. |
| 131031 | Account Locked | account_restricted | Account has been locked due to policy violation. |
| 131037 | Display Name Not Approved | display_name_not_approved | Phone number display name is pending Meta approval. |
| 131042 | Payment Issue | account_restricted | There is a billing issue with your Meta account. |
| 131047 | Re-engagement Message | conversation_window_expired | More than 24 hours since the recipient last replied. Send a template message to re-open the conversation. |
| 131049 | Ecosystem Protection | message_undeliverable | Meta chose not to deliver this message to maintain platform quality. |
| 131051 | Unsupported Message Type | unsupported_message_type | This message type is not supported by WhatsApp. |
| 131052 | Media Download Error | — | Unable to download the media sent by the user. |
| 131053 | Media Upload Error | — | Unable to upload the media for sending. |
| 131057 | Maintenance Mode | meta_api_unavailable | Business account is in maintenance mode. |
| 131215 | Groups Not Eligible | groups_not_eligible | This phone number is not eligible to access the Groups API. |
| 132000 | Template Param Mismatch | template_parameter_mismatch | Template parameter count doesn’t match the template definition. |
| 132001 | Template Nonexistent | template_not_found | Template doesn’t exist in the specified language or hasn’t been approved. |
| 132005 | Translated Text Too Long | — | Translated template text exceeds the maximum length. |
| 132007 | Template Policy Violation | template_not_found | Template content violates WhatsApp policy and has been rejected. |
| 132012 | Param Format Mismatch | template_parameter_mismatch | Template variable parameters are incorrectly formatted. |
| 135000 | Generic Error | meta_api_error | Message failed to send due to an unknown Meta error. |
Entries marked with
-- in the Chirp Code column use type and message only. These errors do not need a specific code because they do not require programmatic branching in your application.Understanding Meta Error Responses
When a Meta error occurs, the Chirp API response includes the full provider details:Meta error response
The Provider Object
| Field | Description |
|---|---|
source | Always "meta" for WhatsApp errors. |
code | Meta’s numeric error code. Use this for detailed debugging and when referencing Meta’s own documentation. |
message | Meta’s error message in their own words. |
fbtrace_id | A unique trace identifier generated by Meta for each request. Critical for support tickets. |
Using fbtrace_id
Thefbtrace_id is the most important field when you need to escalate an issue with Meta. It allows Meta’s support team to look up the exact request in their systems.
When to save it:
- Always log the
fbtrace_idwhen a WhatsApp message fails - Store it alongside the message record in your database
- Include it in any support tickets or bug reports
- Open a support case through Meta Business Help Center
- Include the
fbtrace_idvalue in your report - Meta can use this to trace the exact API call and diagnose the issue
Saving fbtrace_id
Common Scenarios
24-Hour Window Expired (131047)
WhatsApp Business API has a 24-hour messaging window. After a user messages you, you have 24 hours to respond with free-form messages. After the window closes, you must use an approved template message to re-initiate the conversation. What happens:- A customer sends you a message at 10:00 AM
- You can send free-form messages until 10:00 AM the next day
- After 10:00 AM the next day, free-form messages fail with
conversation_window_expired - You must send a template message to re-open the conversation
Handling expired conversation window
Account Restricted (368, 131031, 131042)
Account restrictions prevent you from sending messages. They can happen for several reasons:| Meta Code | Reason | Resolution |
|---|---|---|
| 368 | Policy violations | Review and fix the policy violation in Meta Business Manager |
| 130497 | Country restriction | Messaging to users in certain countries may be restricted |
| 131031 | Account locked | Your account was locked; appeal through Meta Business Manager |
| 131042 | Payment issue | Resolve the billing issue in your Meta account |
- Log in to Meta Business Manager
- Check for any policy violation notices or account quality warnings
- Review the WhatsApp Business Policy
- If your account was restricted in error, submit an appeal through Business Manager
- For billing issues, update your payment method in account settings
Template Issues (132000, 132001, 132005, 132007, 132012)
Template errors occur when sending template messages. They fall into two categories: Template does not exist (132001, 132007):- The template name is misspelled
- The template was not approved in the requested language
- The template was rejected by Meta for policy violations
- Wrong number of variables provided
- Variables in the wrong format
- Missing required header or button parameters
- Verify the template exists in your dashboard or via the Templates API
- Check that the template status is “approved”
- Confirm the language code matches the approved template language
- Count the variables in your template body and verify you are providing the exact same number
- Check that variable types match (text, currency, date-time)
Template error handling