WhatsApp API Error Codes: Troubleshooting & Solutions

When a WhatsApp API request fails, check these in order: authentication (is your token valid?), permissions (does your account have the required capability?), the recipient (is the number valid and reachable?), the template (is it approved and does your payload match it?), the payload itself (are all fields present and correctly formatted?), rate limits, and account configuration. Most failures trace back to one of these seven categories.

This page is a practical troubleshooting reference - error categories, verified error codes from Meta's official documentation, a decision flow, and best practices for handling failures in production. It isn't a general introduction to WhatsApp Business API; for that, see WhatsApp Business API.

Quick Troubleshooting Checklist

Authentication

Is your access token valid, unexpired and sent correctly?

Permissions

Does your app/account have the permission this action requires?

Phone Number

Is the sending number verified and correctly configured?

Recipient

Is the recipient number valid, active on WhatsApp, and opted in if needed?

Template

Is the template approved, and does your payload match it exactly?

Payload

Are all required fields present and correctly formatted?

Webhook

Is your endpoint reachable and correctly subscribed to events?

Rate Limits

Are you sending within your account's current throughput limit?

Account Configuration

Is the account restricted, in maintenance, or missing a setup step?

Delivery Status

What does the actual status event say happened to the message?

What Are WhatsApp API Errors?

A WhatsApp API error is a structured response the platform returns when a request can't be completed as sent - it includes an HTTP status code and, in the response body, a WhatsApp-specific error code and message describing exactly what went wrong.

HTTP status vs API error: the HTTP status (200, 400, 401, and so on) tells you whether the request itself was reachable and well-formed. The API error code inside the response body tells you what actually went wrong with the messaging operation - a request can return HTTP 200 and still fail later at delivery, which is why the two need to be checked separately, not treated as the same signal.

Troubleshooting Decision Flow

API request failed

Check HTTP response

Check authentication

Check permissions

Check request payload

Check recipient

Check template

Check account configuration

Check delivery/webhook status

Retry or correct configuration

WhatsApp API Error Categories

The codes below are documented in Meta's official WhatsApp Cloud API error reference. This is a curated, representative selection covering the categories developers hit most often - not the complete list, and codes/meanings can be added or changed by Meta over time, so treat this as a starting reference rather than an exhaustive one.

Authentication Errors

CodeMeaningCommon CauseWhat to CheckRecommended Action
190Access token has expiredA long-lived token wasn't refreshed in timeYour token's expiry/rotation scheduleGenerate a fresh token and redeploy it
0Unable to authenticate the app userToken expired, invalidated or revokedWhether the token was manually revoked or app permissions changedGenerate a new token from your dashboard
200No access token was providedThe Authorization header is missing from the requestWhether every request includes the headerAdd Authorization: Bearer <token> to the request

Permission Errors

CodeMeaningCommon CauseWhat to CheckRecommended Action
10Permission not granted or has been removedA required permission wasn't approved, or was revokedYour app/account's current permission scopeRe-request or verify the permission in account settings
3Capability or permissions issueThe action needs a permission your account doesn't currently haveWhich capability the failing call actually requiresConfirm that capability is enabled for your account

Template Errors

CodeMeaningCommon CauseWhat to CheckRecommended Action
132001Template does not exist or isn't approvedWrong template name/ID, or approval is still pendingThe template name and its approval statusWait for approval, or correct the template reference
132000Parameter count mismatchNumber of variables sent doesn't match the approved templatePlaceholder count in the template vs your params arrayMatch the params array exactly to the approved template
132007Template violates WhatsApp policyContent was changed after approval, or violates policyWhether sent content matches what was approved, verbatimResubmit a compliant template rather than editing on the fly
132015Template paused due to low qualityNegative recipient feedback (blocks/reports) affected its quality ratingThe template's quality rating in your dashboardImprove targeting/relevance or revise the template content

Recipient / Phone Number Errors

CodeMeaningCommon CauseWhat to CheckRecommended Action
131026Recipient not reachable on WhatsAppThe number isn't an active WhatsApp user, or is on an outdated app versionNumber format and whether it's WhatsApp-activeVerify the number before sending
131047Re-engagement message requiredMore than 24 hours since the customer's last messageWhether this should be a session message or a templateSend an approved template to re-open the conversation
131050Recipient has opted outThe customer previously opted out of marketing messagesOpt-in/opt-out status for that recipientRespect the opt-out; don't resend marketing content
131021Sender and recipient number are the sameA test or misconfigured request targeted your own numberThe value in the 'to' fieldCorrect the recipient number

Payload / Parameter Errors

CodeMeaningCommon CauseWhat to CheckRecommended Action
100Unsupported or misspelled parameterA typo or invalid field in the request bodyField names against the current API referenceFix the field name/value and resend
131009One or more parameter values are invalidA field has a badly formatted value (e.g. a date or number)The format of each parameter against the template specCorrect the value's format
131008Missing required parameterA required field was left out of the requestWhether every required field is presentAdd the missing field and resend

Media Errors

CodeMeaningCommon CauseWhat to CheckRecommended Action
131053Media upload failedThe file exceeds a size limit or uses an unsupported formatFile type and size against platform limitsRe-encode or resize the file and retry
131052Unable to download recipient mediaA temporary issue on the platform sideWhether the failure is one-off or persistentRetry; escalate if the pattern continues

Rate-Limit Errors

CodeMeaningCommon CauseWhat to CheckRecommended Action
130429Message throughput limit reachedSending faster than your current plan/tier allowsYour current messages-per-second limitSlow down sending, or request a higher limit
131048Too many blocked/spam reportsA recent messaging pattern triggered spam protectionRecent recipient block/report rateReview targeting and content quality
80007Account-level rate limit reachedOverall account throughput was exceededAccount-wide sending volumeSpace out sends, or contact support for a limit increase

Account Configuration Errors

CodeMeaningCommon CauseWhat to CheckRecommended Action
368Account restricted for policy violationsA policy violation was detected on the accountRecent policy notices in your business accountReview and resolve the flagged violation
130497Restricted from messaging certain countriesA country-level restriction applies to the accountThe destination country against account restrictionsContact support if this affects a legitimate market
131057Business account in maintenance modeA temporary platform-side maintenance stateAccount status in your business managerWait and retry - this isn't caused by your code

Webhook-Related Errors & Message Delivery Failures

An error returned at send time is different from a delivery failure reported after the fact. A request can be accepted (no error at send) and still end up with a failed status delivered later through your webhook - with its own reason attached, drawing on the same categories above (invalid recipient, unapproved template, media issue, and so on).

Endpoint-side webhook problems - unreachable URLs, verification failures, malformed responses, timeouts, duplicate events - are a distinct troubleshooting area with its own checklist on WhatsApp API Webhooks.

Stuck On A Specific Error?

Share the error you're seeing and our team will help you pin down the cause.

Error Handling Best Practices

Retry Strategy

Retry transient failures only - a rejected template or invalid recipient will fail again identically.

Idempotency

Use a unique reference per send so a network retry can’t duplicate a message.

Logging

Log the full error response and message ID, not just the HTTP status code.

Monitoring

Track error rates by category so a rising trend surfaces before it becomes a bigger problem.

Production Debugging

Reproduce the exact failing payload in a test environment rather than guessing from partial logs.

Common Mistakes Developers Make

  • Assuming a 200 HTTP status means the message was delivered, rather than just accepted for processing

  • Retrying a rejected template or invalid-recipient error as if it were a transient failure

  • Editing approved template wording without resubmitting it for approval

  • Hardcoding a token instead of handling expiry and rotation

  • Ignoring the specific error reason and treating every failure the same way

  • Not logging the full error response, making later debugging much harder

WhatsApp API Error Codes FAQs

What should I check first when a WhatsApp API request fails?

Start with the HTTP status code, then the specific error in the response body. Work through authentication, permissions, recipient validity, template approval, payload format, rate limits and account status in that order - see the Quick Troubleshooting Checklist above.

What does WhatsApp error code 131047 mean?

It means the 24-hour customer-service window has closed since the recipient last messaged you, so a free-form session message can't be sent - you need to send an approved template instead to re-open the conversation.

What does error 132000 mean?

It's a parameter count mismatch - the number of variables your request sends doesn't match the number of placeholders in the approved template. Check your params array against the template exactly.

Why is my WhatsApp template message being rejected?

Most commonly because the template isn't approved yet, or the content sent doesn't exactly match what Meta approved. See the Template Errors table on this page.

Why does my WhatsApp API request return a 401 or authentication error?

Your access token is likely missing, expired or revoked. Confirm the Authorization header is present on every request and that the token hasn't expired - see the Authentication Errors table.

Why is my message not reaching the recipient even though the API accepted it?

An accepted request (HTTP 200) only means the API received your request - actual delivery is reported separately through status webhooks. Check the delivery status event for the real outcome, not just the initial response.

What does a rate-limit error mean?

It means you're sending faster than your account's current throughput allows, or have triggered spam-protection thresholds from recipient blocks/reports. See the Rate-Limit Errors table for the specific conditions.

Should I automatically retry every failed WhatsApp message?

No. Retry transient failures, but retrying a rejected template, an invalid recipient, or a permission error will just fail again - branch on the specific error reason instead of retrying blindly.

What is the difference between an HTTP status code and a WhatsApp API error code?

The HTTP status (like 200, 400 or 401) reflects whether the API request itself was well-formed and authenticated. The WhatsApp-specific error code in the response body explains what actually went wrong with the messaging operation - both matter for diagnosis.

Why does my webhook show a message as failed?

The failed status event includes a reason - commonly an unapproved template, an unreachable number, or media issues. See the Message Delivery Failures section, and Webhook Errors on WhatsApp API Webhooks for endpoint-side issues specifically.

What is a media upload error in the WhatsApp API?

It typically means the file you're sending exceeds a size limit or is in an unsupported format for that media type - re-encode or resize the file and retry.

Why is my WhatsApp Business account restricted?

Account restrictions usually follow a detected policy violation, a country-level messaging restriction, or a temporary platform maintenance state - check recent notices in your business account for the specific reason.

What is idempotency, and why does it matter for WhatsApp API error handling?

Idempotency means safely handling a retried request without sending a duplicate message - important because network retries after a timeout can otherwise result in the same message going out twice.

How do I debug WhatsApp API errors in production?

Log the full error response (not just the HTTP status), correlate it with the message ID, monitor error-rate trends by category, and reproduce the specific failing payload in a test environment rather than guessing from partial logs.

Can I see the exact list of WhatsApp API error codes?

Meta publishes and maintains the official WhatsApp Cloud API error code reference. This page covers the categories and codes developers hit most often; check Meta's current documentation for the complete, up-to-date list, since codes and meanings can change.

Is a WhatsApp API error the same as a webhook error?

No. An API error is returned when your send request itself fails (bad auth, bad payload, etc.). A webhook error is about your endpoint not correctly receiving or processing delivery events - see WhatsApp API Webhooks for that troubleshooting checklist.

What does 'invalid recipient' actually mean?

It usually means the number isn't reachable on WhatsApp, is formatted incorrectly, or the recipient has opted out of receiving your messages - see the Recipient Errors table for the specific conditions.

Business owner managing customer messaging on Teleopedia

Ready to unify your business communication?

Most businesses are live on their own branded panel within days, not months - talk to our team today and see how fast you can start sending.