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. Readmessageanderror_data.detailswhen 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 atemplateobject, 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
parametersarray 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
100with subcode33is an unsupported-object response; verify the ID, object type, and access. - Interactive payload. More buttons than allowed, a button
idover 256 characters, or a list with an empty section. - Template creation rules. On
POST /message_templates, a2388xxxsubcode names the specific content or format rule that failed.
How to Fix It
- Read
error_data.detailsand, if present,error_subcode. These can identify the parameter or explain why an object is inaccessible. - Compare the request body against the Cloud API reference for that message or object type. Field names are case-sensitive and version-specific.
- For
to, send only digits in international format: country code followed by the number, no+, no spaces. - For templates, confirm the component types and parameter counts match the approved template exactly; a mismatch on count is reported as
132000rather than100, but a wrong parameter type inside a component often comes back as100. - 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
| Subcode | Context | Meaning |
|---|---|---|
| none | messages | Generic invalid parameter; read details |
33 | GET /{MEDIA_ID} | Unsupported object request: verify the ID, object type, deletion/expiry, and caller access |
2388xxx | POST /message_templates | A template content or format rule; each value maps to one rule such as header sample mismatch or invalid button configuration |
| see linked guide | webhook subscription | For the exact "Before override the current callback uri" message, see Webhook Error 100 |
How to Prevent It
- Validate
toas E.164 digits before the request leaves your system. - Build message payloads from a typed schema per message type so a
templateobject cannot end up on atextmessage. - Pin the Graph API version you develop against and re-check field names when you move versions.
- Download inbound media promptly and treat a
403or100/33on a media ID as final rather than retrying.
Related Errors
/docs/whatsapp-error-131008: a required parameter is missing entirely./docs/whatsapp-error-131009: the parameter is present and named correctly but its value is not valid./docs/whatsapp-error-132000: template variable count mismatch./docs/whatsapp-error-100-webhook-override: error 100 during webhook subscription.- See the full error reference
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.