Meta API Error Reference

Complete WhatsApp Cloud API and Meta Graph error code reference — what each code means, where it appears, and how to fix it.

Meta Graph and WhatsApp Cloud API errors can appear in two places:

  • The immediate API response when your backend calls Meta.
  • A later statuses[].errors[] object in a message-status webhook (asynchronous). Some errors arrive through both channels.

Dualhook does not proxy outbound sends or message-status webhooks, so message-send failures happen in your own backend and in the webhook endpoint you configured with Webhook Override. This page is a comprehensive reference for the WhatsApp Cloud API and Graph API error codes — what they mean, where they appear, and how to fix them. Build your handling logic around the numeric code and error_data.details, not titles or HTTP status (Meta is deprecating titles and error_subcode).

Where Errors Appear

Immediate API response

If Meta rejects a request before accepting it, your sender receives an HTTP error and an error object immediately. Examples: invalid token, missing parameter, wrong template variable count, permission issue.

Status webhook after the send

If Meta accepts the request but later cannot deliver the message, your webhook receives a failed status with statuses[].errors[]. Cloud API surfaces asynchronous errors under entry.changes.value.errors and entry.changes.value.messages.errors. Examples: recipient cannot receive the message, pair rate limit, user stopped marketing messages.

Error Object Format

Most API failures return an error object with this shape:

{
  "error": {
    "message": "(#130429) Rate limit hit",
    "type": "OAuthException",
    "code": 130429,
    "error_data": {
      "messaging_product": "whatsapp",
      "details": "Cloud API message throughput has been reached."
    },
    "error_subcode": 2494055,
    "fbtrace_id": "Az8or2yhqkZfEZ-_4Qn_Bam"
  }
}

Always log: error.code, error.message, error_data.details, and fbtrace_id. error_subcode is deprecated and is not returned on v16.0+ — do not build logic around it.

Status webhooks use a similar shape inside statuses[].errors[]:

{
  "statuses": [
    {
      "id": "wamid...",
      "status": "failed",
      "errors": [
        {
          "code": 131026,
          "title": "Message undeliverable",
          "message": "Message undeliverable",
          "error_data": {
            "details": "Message Undeliverable."
          }
        }
      ]
    }
  ]
}

Quick Triage

SymptomFirst place to check
Sends fail immediately with 190, 0, 10, or 200Token validity, app permissions, WABA/phone-number asset tasks
Free-form text fails with 131047 (legacy 470)Customer service window expired; send a template instead
Template send fails with 132000 / 132001Template name, language, status, and variable count
Status webhook shows 131026Recipient cannot receive the message; validate opt-in/contact quality
Status webhook shows 131056Too many messages to the same user too quickly; slow down per recipient
Throughput error 130429 or 131048 / 131064Per-number throughput, quality, or template-classification limits
Marketing send shows 131049 / 131050 / 131063Marketing eligibility, recipient preference, send endpoint, or region
Status webhook shows 137000Identity-key check mismatch; re-verify the user outside WhatsApp
Account-wide failures 368 / 131031 / 130497Account restriction, policy enforcement, or country eligibility

Authorization and Permission Errors

CodeMeaningRecommended action
0Unable to authenticate the app userToken expired, invalidated, or access revoked — get a new access token
3Capability or permissions issueVerify the endpoint's required permissions with the access token debugger
10Permission not granted or removedVerify app permissions and review status; check API eligibility requirements
190Access token expiredGet a new access token (in Dualhook, reconnect or reveal the current token)
200No access token provided ("Provide valid app ID")Include a valid access token. Codes 200299 also indicate a permission that is not granted or has been removed
131005Permission not granted or removedConfirm the token belongs to the business/phone number and holds the needed WhatsApp permissions

Integrity and Policy Errors

CodeMeaningRecommended action
368WABA restricted or disabled for a platform policy violationSee Meta's Policy Enforcement docs; check Account Health
130497Business restricted from messaging users in certain countriesReview the WhatsApp Business Messaging Policy for allowed countries in your category
131031Account locked/restricted, or request data could not be verified (e.g. wrong two-step PIN)Review account quality/policy status; the Health Status API may show the lock reason

Request and Parameter Errors

CodeMeaningRecommended action
100Unsupported or misspelled parameterCheck the endpoint reference for supported parameter names, formats, and length limits
131008Required parameter missingAdd the missing field per the endpoint reference
131009One or more parameter values invalidCheck field formats, IDs, button payloads, or reaction target message
131051Unsupported message typeFix the message type and object structure
131062Message type does not support BSUID recipientsUse a phone number for one-tap/zero-tap/copy-code auth templates — see BSUID Transition
135000Generic error with request parametersVerify endpoint syntax; contact support if it persists

Delivery Errors

CodeMeaningRecommended action
130403Business has blocked the end user on WhatsAppDo not retry; unblock the user to resume sending
130472Message not sent as part of an experimentExpected for Marketing Message experiments — no action needed
131021Sender and recipient phone number are the sameSend to a number different from the sender
131026Message undeliverableRecipient is not on WhatsApp, hasn't accepted ToS, or is on an outdated app version — validate the destination and opt-in
131047More than 24h since the recipient last replied (legacy code 470)Send an approved template message to re-engage
131049Not delivered to maintain healthy ecosystem engagement (per-user marketing limit)Wait ≥24h before resending; segment recipients — see Per-User Marketing Template Limits
131050Recipient stopped marketing messages from your businessSuppress marketing sends; subscribe to the user_preferences webhook to track opt-out/resume
131052Unable to download media sent by the userCheck error_data.details; ask the user to resend via a non-WhatsApp method
131053Unable to upload the media used in the messageConfirm the media MIME type is supported before retrying

Throttling and Rate-Limit Errors

CodeMeaningRecommended action
4App reached its API call rate limitBack off and retry later; reduce call frequency
80007WABA reached its rate limitReduce query frequency; see Capacity & Limits
130429Cloud API message throughput reached (per-number ~80 msg/s default)Queue/throttle and retry with backoff — see Throughput
131048Spam-rate restriction (too many prior messages blocked or flagged)Check quality status in WhatsApp Manager; improve template/account quality
131056Pair rate limit — too many messages to the same recipient too quicklyBack off (4^X seconds) per retry to that recipient; see Pair Rate Limit
131064Messaging limit reached due to template classification violationsRe-check template categories; restriction lifts after the enforcement period
133016Too many registration/deregistration attempts for this numberWait until the number is unblocked before retrying

Template Creation Errors

CodeMeaningRecommended action
2388040A template field exceeded its maximum character limitShorten the affected field per the error message
2388047Message header format incorrectFix header formatting per the error message
2388072Message body format incorrectFix body formatting per the error message
2388073Message footer format incorrectFix footer formatting per the error message
2388293Parameter-to-words ratio exceeds the limitReduce variables or increase message length
2388299Leading or trailing parameters not allowedMove variables away from the start/end of the template
2388019Message template limit exceededA WABA allows up to 250 templates — delete unused ones. See Templates

Template Send Errors

CodeMeaningRecommended action
132000Variable count mismatch vs. the approved templateMatch the number of variables to the template definition
132001Template not found in the specified language, or not approvedUse the exact name + language locale and confirm it is approved
132005Translated text too longShorten variable values or template text
132007Template content violates a WhatsApp policySee the Template Review docs for the violation reason
132012Variable parameter values formatted incorrectlyMatch the component/button/media parameter format defined in the template
132015Template paused due to low qualityImprove quality and wait for re-approval, or use another template
132016Template permanently disabled (paused too many times)Create a new template with different content
131061Template carries a bid_spec / max-price and can't be sent via Cloud API /messagesSend through the Marketing Messages API
131063Marketing templates disabled for this WABA's Cloud API configUse the Marketing Messages API, or set disable_marketing_messages_on_cloud_api to false

Marketing Message Errors

The Marketing Messages API for WhatsApp (MM Lite) reuses Cloud API codes with these additions:

CodeHTTPMeaningRecommended action
100400"Message must be a template message"Send a marketing template, not a free-form message
131009400Parameter value not validVerify parameters; ad syncing may be incomplete — wait 10 min and retry
131055400Method not allowed — only marketing templates supportedDon't send authentication/utility templates on this API
132018400Template validation errorReview and fix the template parameters, then resend
134100400Only marketing messages supportedSend a MARKETING-category template (Graph API v23.0+)
134101400Template still syncingNew templates take up to 10 min to sync — wait and retry
134102500Template unavailable for useCheck eligibility; confirm marketing_messages_lite_api_status is ONBOARDED, else contact support
1752041400Duplicate onboarding requestThe client was already invited by a partner — no action needed; all eligible WABAs onboard automatically

Flows Errors

CodeMeaningRecommended action
132068Flow is in a blocked stateCorrect the Flow before sending
132069Flow is throttled (10 messages with this Flow already sent in the last hour)Slow down sends using this Flow

Phone Number and Registration Errors

CodeMeaningRecommended action
33Business phone number has been deletedVerify the phone number ID is correct
131037The 555 test number has no approved display nameSet/approve a display name for the number — see Display Names
131045Message failed due to a phone number registration errorRegister the phone number before sending
131057Business Account in maintenance modeOften a throughput upgrade — retry shortly
133000Previous deregistration attempt failedDeregister the number again before registering
133005Two-step verification PIN incorrectVerify the PIN; reset it via two-step verification if needed
133006Phone number needs verification before registeringVerify and register the number
133008Too many two-step PIN guessesWait the time specified in details before retrying
133009Two-step PIN entered too quicklyCheck details and slow down retries
133010Phone number not registered on the platformRegister the number before sending
133015Number recently deleted; deletion not yet completeWait ~5 minutes, then retry
2494100Account is in maintenance modeTry again in a few minutes

Payment and Billing Errors

CodeMeaningRecommended action
131042Payment-method error (no/over-limit credit line, inactive account, missing currency/timezone, pending "Messaging For")Verify billing setup for the WABA/business portfolio
131044No valid payment method (also seen on user-initiated Calling)Attach a valid payment method to the WABA
134011WhatsApp Payments terms of service acceptance pendingAccept the WhatsApp Payments ToS via the link in the error message

Phone Migration Errors

CodeMeaningRecommended action
2388012Phone number already exists in your WhatsApp accountMigrate a number not already present
2388091 / 2388093Number isn't eligible to receive/verify a registration code (not being migrated)Register and verify the number instead
2388103Cannot migrate phone number (multiple causes)Common fixes: subscribe the destination WABA to webhooks; get the display name approved; complete business verification and review approval; ensure the source/destination WABAs represent the same business; set up a payment account/credit line; or contact support for OBO-model accounts

WABA and OBO Ownership Errors

CodeMeaningRecommended action
2593079WABA already marked for migration to a different solution IDThe OBO ownership model is deprecated — contact support
2593085Invalid WABA for OBO mobilityWABA may already use the WABA-Sharing model, or the OBO request wasn't accepted. OBO is deprecated — contact support

Coexistence Synchronization Errors

These occur in the Coexistence onboarding flow when syncing contacts/history from the WhatsApp Business app.

CodeMeaningRecommended action
2593107Exceeded the max sync API calls for this numberContacts and history can each sync only once — offboard and re-onboard to retry
2593108Sync request made outside the 24h post-onboarding windowRe-onboard the user, then sync within 24 hours
2593109History sharing is turned off by the businessLive Coexistence still works; the business declined or disabled chat-history sharing

Template Insights Errors

CodeMeaningRecommended action
200005Template insights unavailable for this WABAInsights can't be enabled for this WABA right now
200006Cannot disable template insightsInsights can't be disabled once enabled
200007Template insights not enabledEnable insights first — see Confirming template analytics

Server and Generic Errors

CodeMeaningRecommended action
1Invalid request or possible server errorCheck the WhatsApp Business Platform status page; verify request formatting
2Temporary downtime or overloadCheck the platform status page before retrying
131000Message failed due to an unknown errorRetry; if it persists, open a Direct Support ticket
131016A service is temporarily unavailableRetry with backoff and a circuit-breaker guard
133004Server temporarily unavailableCheck the platform status page and details before retrying

What to Send Support

When asking Dualhook or Meta support about a send failure, include:

  • The full error.code, error.message, error_data.details, and fbtrace_id.
  • Whether it came from an API response or a status webhook.
  • The wamid / message ID if Meta accepted the send.
  • The phone number ID and WABA ID.
  • The template name + language, if it was a template send.
  • The timestamp and Graph API version.

Do not send message content unless support explicitly needs a redacted payload shape. Dualhook support can usually diagnose setup, permissions, template, or health issues from metadata.

Error Handling Strategy

Retryable:

  • 4 / 80007 / 130429 / 131056 rate and throughput limits (with backoff)
  • 1 / 2 / 131000 / 131016 / 133004 transient server failures
  • Network timeout/connectivity errors

Usually non-retryable without payload, access, or account changes:

  • 100 / 131008 / 131009 / 131051 validation errors
  • 0 / 10 / 190 / 200 / 131005 auth and permission errors
  • 132000 / 132001 / 132012 template errors
  • 131047 service-window violations (send a template instead)
  • 131049 / 131050 / 131063 marketing preference or policy failures
  • 368 / 130497 / 131031 integrity/policy restrictions
  • 137000 identity-key mismatches (re-verify the recipient)

Suggested Retry Policy

  1. Use exponential backoff with jitter.
  2. Cap retry attempts for transient classes (3–6 attempts).
  3. Send non-retryable errors directly to a dead-letter/ops queue.
  4. Include idempotency keys in sender jobs to avoid duplicate sends.
  5. Always store fbtrace_id for support escalation.

Dualhook surfaces webhook-side delivery errors and management alerts in monitoring views. Message-send API failures happen in your backend caller and should be logged there with full Graph error metadata.

Related

Browse more docsStart Free Trial