Partner errors always use a nested error object with a stable code.
{
"error": {
"code": "WINDOW_CLOSED",
"message": "24h messaging window closed. Send a template message instead."
}
}
| Code | HTTP | When |
|---|---|---|
UNAUTHORIZED | 401 | Missing or invalid API key |
FORBIDDEN | 403 | Key lacks required scope |
VALIDATION_ERROR | 400 | Bad payload |
WINDOW_CLOSED | 400 | Session send outside 24h window |
TEMPLATE_NOT_FOUND | 404 | No approved template match |
OPT_OUT | 409 | Contact STOP’d; pass acknowledgeOptOut to override |
RATE_LIMITED | 429 | Over 60 requests / minute per key |
WHATSAPP_ERROR | 502 | Meta Cloud API rejected the send |
NOT_FOUND | 404 | Unknown message id |
Rate-limit headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.