Meta Tech Provider

WhatsApp Cloud API error codes

This is every WhatsApp Cloud API error code we document, in one table, with what each one means and whether retrying it helps. Most do not: they are deterministic, so the same request fails the same way and a retry loop turns a bad request into a rate limit.

No message storageBusiness App + Cloud APIMCP for Claude and ChatGPTLive in 2 minutes

Request

CodeWhat it meansRetry
100A parameter is unsupported, misspelled or malformed.No
131008A required parameter was not included at all.No
131009A parameter is present with a value the endpoint rejects.No
131021Sender and recipient are the same number.No
131051The message type is not supported, often a Coexistence limit.No
131052Meta could not download media a customer sent.No
131053Meta could not upload media you sent. Size, format or reach.No

Template

CodeWhat it meansRetry
132000The number of parameters does not match the template.No
132001No template exists with that name and language pair.No
132007The template breaks messaging policy. Rewrite and resubmit.No
132012Parameter format does not match what the template defines.No
132015The template is paused after a quality decline. Temporary.Wait
132016The template is permanently disabled. It will not come back.No

Window and recipient

CodeWhat it meansRetry
131047The 24-hour service window is closed. Send a template.No
131026The recipient cannot receive the message at all.No
131050The person opted out. There is no workaround, by design.No
130497Messaging that country is restricted for your account.No

Registration and PIN

CodeWhat it meansRetry
131045The number was never registered for Cloud API messaging.No
133010The number is not registered. Registration must be completed.No
133006The number must be verified before it can be registered.No
133005The two-step verification PIN was wrong. Stop guessing.No
133008Too many PIN attempts. Registration is locked for a period.Wait

Access and account

CodeWhat it meansRetry
190The access token expired or was invalidated.No
368The account is restricted after a policy violation.No
131031The account is restricted, or its data does not match Meta's.No
131042A payment problem on the business account blocks sending.No
131049Meta blocked the message to protect ecosystem health.No

Rate limits

CodeWhat it meansRetry
130429The account's messaging throughput limit was reached.Wait
131048A spam rate limit was hit. Quality, not volume, is the cause.No
131056Too many messages between your number and one recipient.No
80007The account hit its management call limit. Usually polling.Wait

Transient

CodeWhat it meansRetry
131016A Meta service is temporarily unavailable.Yes
131000Unclassified failure. Retry once, then escalate with the trace id.Yes

Coexistence sync

CodeWhat it meansRetry
2593107The chat history synchronisation limit was exceeded.No
2593108A sync was attempted outside the 24-hour sync window.No

How to read the retry column

It has three values, and choosing between them wrong is the most expensive mistake in this whole reference.

No means the failure is deterministic. The request, the template or the recipient's state is what failed, and sending the identical request again produces the identical error while consuming throughput you will want later. Yes means the failure was on Meta's side and a backoff genuinely resolves it. Wait means the condition is real but temporary: a limit or a lock that lifts on its own, where retrying before it lifts does nothing and can extend it.

Why most of these are not retryable

Because the platform returns specific codes rather than generic ones. A malformed parameter, a template that does not exist, a closed messaging window and an opted-out recipient are all knowable at the moment of the response, so Meta names them instead of failing vaguely.

  • A request problem does not become correct on the second attempt.
  • A template problem lives in the template, which the request cannot change.
  • A window or opt-out problem is about the recipient's state, not yours.
  • An account restriction is a decision, and retrying is not an appeal.

What to log when one of these arrives

Enough to diagnose it without reproducing it, which is the difference between a five-minute fix and a day of guessing.

  • The full error response, including the trace id, which is what Meta support asks for.
  • The request body as sent, not as intended. The gap between those two is usually the bug.
  • The phone number id, so a problem on one number is distinguishable from one across the account.
  • The timestamp, so the failure can be checked against the connection's state at that moment.

The codes that only exist on Coexistence

Two of them, and they confuse people because they look like ordinary send failures. 2593107 and 2593108 both concern chat history synchronisation, which is the step that copies recent conversations from the WhatsApp Business app when a number is first connected.

They are not messaging errors and they do not mean the connection failed. A sync that exceeds its limit or runs outside its window leaves the number connected and sending normally, with less history copied than expected. Reading them as a broken connection leads people to disconnect and start again, which loses more history rather than recovering it.

Frequently asked questions

Which errors should I retry?

131016 and 131000, with exponential backoff. 130429, 132015 and 133008 clear on their own if you wait. Everything else is deterministic.

Does an error code mean my number is disconnected?

Usually not. Most of these concern the request, the template or the recipient. Connection problems appear as account and quality webhooks rather than send errors.

What is a trace id?

An identifier in the error response that lets Meta support find the specific request. Log it on every failure; without it a ticket cannot be actioned.

Are these codes the same on every provider?

Yes. They come from Meta's Cloud API, so they are identical whichever provider connected the number. A provider can only change how clearly they reach you.

Ready to get started?

Set up WhatsApp Coexistence in minutes, not months. The app keeps working on the phone.

Start Free TrialNothing charged for 7 days. Cancel anytime.

Keep reading

WhatsApp Cloud API Error Codes