WhatsApp Error 100: Invalid Parameter

WhatsApp error 100 means Meta rejected a value or field in your request. Read error_data.details, fix the recipient format, message type, or template component, and resend.

TL;DR: WhatsApp error 100 ("Invalid parameter") means Meta understood your request but rejected one of its values or fields. Check the endpoint, parameter names, values, and any error subcode before retrying. Read message and error_data.details when present for the specific cause. If you got error 100 while subscribing a webhook, that is a different situation covered on Webhook Error 100.

What Error 100 Means

Meta's Graph API uses code 100 for any parameter-level validation failure: a field Meta does not accept, a value in the wrong format, a value that refers to something that does not exist, or a field that does not fit the message type. The HTTP status is 400. The code alone does not rule out object-access problems: an unsupported-object response can mean the ID is wrong, the object was deleted, or the caller cannot access it.

Because code 100 covers so many cases, the useful information is in the accompanying text:

{
  "error": {
    "message": "(#100) Invalid parameter",
    "type": "OAuthException",
    "code": 100,
    "error_data": {
      "messaging_product": "whatsapp",
      "details": "Parameter 'to' is not a valid phone number"
    },
    "fbtrace_id": "..."
  }
}

This is an illustrative response. Log the full error object, including error_data.details when present; it is not included in every error 100 response.

Where You See It

An immediate API error on the send or management call. On the Dualhook Runtime API it is relayed unchanged, with Meta's code, error_data, and fbtrace_id intact and an X-Dualhook-Request-Id added. Also monitor failure statuses in webhooks: an accepted send response does not guarantee delivery. Runtime health reports cover HTTP request failures, not later delivery failures.

Common Causes

  • Recipient format. An incomplete or incorrect international phone number. Using country code plus digits avoids formatting ambiguity; a leading + alone does not establish the cause of error 100.
  • Message type mismatch. "type":"text" with a template object, or "type":"template" without one.
  • Unsupported or misspelled field. A field from an older API version, a typo such as messaging_prodcut, or a component key Meta does not recognise.
  • Template component shape. A parameters array with the wrong item type for the component, or a named parameter that does not match the template variable name.
  • Media reference. An inaccessible or expired media ID. Code 100 with subcode 33 is an unsupported-object response; verify the ID, object type, and access.
  • Interactive payload. More buttons than allowed, a button id over 256 characters, or a list with an empty section.
  • Template creation rules. On POST /message_templates, a 2388xxx subcode names the specific content or format rule that failed.

How to Fix It

  1. Read error_data.details and, if present, error_subcode. These can identify the parameter or explain why an object is inaccessible.
  2. Compare the request body against the Cloud API reference for that message or object type. Field names are case-sensitive and version-specific.
  3. For to, send only digits in international format: country code followed by the number, no +, no spaces.
  4. For templates, confirm the component types and parameter counts match the approved template exactly; a mismatch on count is reported as 132000 rather than 100, but a wrong parameter type inside a component often comes back as 100.
  5. Fix the request and resend. Error 100 is not retryable by itself; the same request will fail the same way.

Subcodes That Change the Meaning

SubcodeContextMeaning
nonemessagesGeneric invalid parameter; read details
33GET /{MEDIA_ID}Unsupported object request: verify the ID, object type, deletion/expiry, and caller access
2388xxxPOST /message_templatesA template content or format rule; each value maps to one rule such as header sample mismatch or invalid button configuration
see linked guidewebhook subscriptionFor the exact "Before override the current callback uri" message, see Webhook Error 100

How to Prevent It

  • Validate to as E.164 digits before the request leaves your system.
  • Build message payloads from a typed schema per message type so a template object cannot end up on a text message.
  • Pin the Graph API version you develop against and re-check field names when you move versions.
  • Download inbound media promptly and treat a 403 or 100/33 on a media ID as final rather than retrying.

FAQ

Is error 100 a permissions problem? Usually it concerns a request parameter, but code 100 with an unsupported-object subcode can also mean the caller cannot access that object. Read the full error and verify the object ID and access.

Can I retry error 100? First correct the parameter or resolve the object-access problem. Blindly retrying an unchanged request is unlikely to help.

Why do I get error 100 on a media download? With subcode 33, verify the media ID, object type, expiry, and account access. Meta documents 7-day expiry for webhook media IDs and 30 days for uploaded media IDs; the code alone does not prove expiry.

Is error 100 the same as 131009? They overlap. 100 is the general invalid-parameter code; 131009 is WhatsApp's more specific "parameter value is not valid" code. Read the error details when provided.

How Dualhook Helps

Dualhook validates the request shape before forwarding it, so many malformed payloads are rejected with a named field in Dualhook's own 400 before they reach Meta; see Runtime API Errors. When Meta returns 100, Dualhook relays it unchanged with the fbtrace_id, including error_data.details when Meta provides it. Definitive media-access denials can be converted to a Dualhook 403; see Media Rejected. If a connection keeps receiving error 100 on sends, the organization's admins receive a runtime health email pointing here.

Sources: Meta error codes, Graph API error handling, and media ID expiry. Checked September 6, 2026.

Related

Browse more docsStart Free Trial