Error Codes
All errors are returned as JSON with a descriptive message field.
HTTP status codes
| Status | Meaning |
|---|---|
200 / 201 | Success |
400 | Bad request — invalid body, missing required fields, or Meta API rejection |
401 | Unauthorized — missing or invalid API key |
403 | Forbidden — phone number does not belong to your organization |
404 | Not found — phone number or template not found |
429 | Rate limited — slow down your requests |
500 | Internal server error |
Error response shape
{
"statusCode": 400,
"message": "Template \"unknown_template\" not found or not approved for this phone number",
"error": "Bad Request"
}Common errors
401 Unauthorized
Your API key is missing or invalid. Make sure you are passing the key as:
Authorization: Bearer bh_live_xxxxxxxxxxxx403 Forbidden
The phone number ID you provided does not belong to your organization. Fetch your phone numbers from /v1/whatsapp/phone_numbers and use the id field.
404 Not Found
The template name or phone number ID was not found. Common causes:
- Using the phone number itself instead of the phone number
id - Template name typo — use the exact
namefield from the templates endpoint - Template is not yet approved in Meta Business Manager
400 Bad Request — both media_id and media_url provided
Only one of media_id or media_url can be provided per send request. Remove one of them.