Skip to content
Whats91

Every Direct Send validation code, the Meta restriction mapping, and the asynchronous failures that arrive by webhook.

Direct Send Errors

Summary

Every Direct Send validation code, the Meta restriction mapping, and the asynchronous failures that arrive by webhook.

Prerequisites

  • A Whats91 account
  • A generated public API token

Whats91 performs deterministic validation before calling Meta. Anything Whats91 can decide on its own is rejected immediately with a Whats91 error code; access, category enforcement, and restriction decisions are returned after Meta responds.

Validation Errors

ConditionWhats91-style resultMeta-compatible result
Category is not utility or authenticationINVALID_DIRECT_SEND_CATEGORYMeta-shaped code 100
ttlSeconds sent without categoryDIRECT_SEND_TTL_REQUIRES_CATEGORYMeta-shaped code 100
TTL outside the category boundsINVALID_DIRECT_SEND_TTLMeta-shaped code 100
Message type not allowed for the categoryDIRECT_SEND_TYPE_UNSUPPORTEDMeta-shaped code 100
Body longer than 1024 charactersDIRECT_SEND_BODY_TOO_LONGMeta-shaped code 100
Business template name on authenticationDIRECT_SEND_TEMPLATE_NAME_UTILITY_ONLYMeta-shaped code 100
Business template name fails the format rulesINVALID_DIRECT_SEND_TEMPLATE_NAMEMeta-shaped code 100
Direct Send fields sent to /api/v3/sendDIRECT_SEND_NOT_SUPPORTED_ON_TEMPLATE_SENDNot applicable

Note

directSendTemplateName sent without a category is rejected as INVALID_DIRECT_SEND_TEMPLATE_NAME, because the field only has meaning inside a utility Direct Send request.

Meta Restriction Mapping

Two Meta errors are mapped onto dedicated Whats91 codes on the chat route so integrations can react without parsing provider payloads. Meta-compatible routes keep the Meta-shaped error object instead.

Meta codeHTTPWhats91 error_codeMeaning
139200403DIRECT_SEND_RESTRICTEDDirect Send access is blocked for the WABA. Inspect Session Health and the recorded Meta restriction evidence.
131064429DIRECT_SEND_RATE_LIMITEDThe WABA hit the category-misclassification rate limit. Inspect the recorded expiry before retrying.
Restricted response
{
  "success": false,
  "message": "Direct Send is currently restricted for this WhatsApp Business Account.",
  "error_code": "DIRECT_SEND_RESTRICTED",
  "details": {
    "restrictionType": "restricted",
    "expiresAt": "2026-08-14T00:00:00.000Z",
    "meta": { "code": 139200, "subcode": null, "fbtrace_id": "trace-id" }
  },
  "metadata": {
    "apiVersion": "v3",
    "requestId": "request-uid"
  }
}

Warning

Both restriction errors are non-retryable at the request level. Retrying immediately will fail again and can extend the restriction. Wait for the recorded expiry.

Asynchronous Failures

Some Direct Send outcomes cannot be known when the request returns. They arrive later on a failed message-status webhook.

Meta codeMeaning and action
132015The matching generated template was paused for low quality. Review the message content against Meta utility guidelines.
132021The business template name collides with a non-Direct-Send template. Choose another name.
131000Generic asynchronous infrastructure failure, including exhausted business-name creation retries.
100An invalid or unsupported Direct Send parameter or limit reached Meta.

Tip

Subscribe to message.status.failed so asynchronous Direct Send failures reach your system. A successful send response is an acceptance receipt, not a delivery guarantee.

Category Integrity

Use utility only for content Meta allows in the utility category. Meta can detect a corrected category, pause a generated template, rate-limit the WABA, or revoke Direct Send access. Whats91 surfaces that evidence through All Messages, Template Manager, Session Health, exports, and customer webhook delivery.

If you believe a Meta categorisation is wrong, collect the WABA ID plus the affected Meta template names and IDs and contact Meta Direct Send support. Never include Whats91 or Meta access tokens in a support request.