Reference
Error Codes
The API uses standard HTTP status codes and returns JSON error responses.
HTTP Status Codes
| Code | Description |
|---|---|
400 | Bad Request - Validation error |
401 | Unauthorized - Invalid API key |
403 | Forbidden - Permission denied |
404 | Not Found - Resource not found |
429 | Too Many Requests - Rate limit exceeded |
500 | Internal Server Error |
Error Response Format
{
"error": {
"code": "ValidationError",
"message": "phone_number is required",
"details": [
{
"field": "phone_number",
"message": "phone_number is required"
}
]
}
}
Rate Limits
API rate limits based on Meta's official limits (2026). All licensed phone numbers have unlimited API access.
Channel-Specific Limits
| Channel | Limit | Window |
|---|---|---|
| 60 messages | per minute | |
| 180 messages | per hour | |
| Messenger | 180 messages | per hour |
API Access
API access is available for all users with an active phone number license. Each licensed number grants full API access with no daily request limits.
| Feature | Limit |
|---|---|
| API Keys | Unlimited |
| Requests/Day | Unlimited |
| License Model | Per phone number (Monthly / Lifetime) |
info
Rate limit headers are included in API responses:
X-RateLimit-Remaining,
X-RateLimit-Reset, and
X-RateLimit-Channel for channel-specific limits.
Was this page helpful?