Errors & rate limits

The error shape, every stable error code and the request rate limit.

Errors

Errors are {"error":{"message":"…","code":"…"}}; code is present when there is a stable one.

StatusCodeMeaning
400—Invalid input (message explains which field)
401—Missing, unknown or revoked API key
403approval_requiredApproval applies to the key, organization or account: ads writes are refused. Other agent actions are not refused: they answer 202 pending_approval (see Approval)
403missing_permissionThe account did not grant the permission; add it to the Meta app, then reconnect the account
404—Unknown id, or it belongs to another organization
409reconnect_requiredThe token is no longer valid; the account is needs_reconnect
409outside_messaging_windowDirect message outside Meta's window (24 hours after the person's last message, 7 days with HUMAN_AGENT); nothing was sent
409recipient_unavailableThe person cannot receive messages from this account right now
409sync_requiredPOST /inbox/conversations/{id}/sync before the account's conversations were synced
409phone_number_not_registeredWhatsApp: register the number (POST /whatsapp/accounts/{id}/register)
409APPROVAL_REQUIRED, ALREADY_PUBLISHED, NOT_EDITABLE, …Post state conflicts
410pending_expiredPending connection expired or already completed
429rate_limitedThe platform rate-limited the request (Postgale's own key limit answers 429 without a code)
400not_supportedThe platform does not offer this feature
400invalid_requestThe platform rejected the input
400template_errorWhatsApp: template name, language, parameters or status rejected by Meta
403recipient_not_allowed, account_restrictedWhatsApp: recipient not in the test number's allowed list; WABA restricted or payment issue
429marketing_limitWhatsApp: Meta limits marketing messages to this person; retry later
502platform_errorAny other platform failure

For missing_permission, GET /accounts/{id}/health lists the account's missingPermissions and the features they block. Platform-specific codes are listed in the WhatsApp, TikTok and Meta Ads guides.

Rate limits

  • 60 requests per minute per key by default; over the limit answers 429 (without a code). The MCP server shares the same limit.
  • A platform's own rate limits answer 429 with rate_limited.
  • Retrying POST /posts is safe with x-request-id (Idempotency).

On this page