Skip to content
API PlatformDevelopers
POST/v1/broadcasts/precheckbeta

Check broadcast readiness

Needs
Send WhatsApp messages; manage templates, quick messages and WhatsApp short links (messaging:write)
Plan
Any plan with API access
Limits
60 a minute per key
Dry run
Yes — every check runs with ?dry_run=true, nothing changes
Undo
Nothing to undo: nothing changes.

Runs the workspace's broadcast readiness check (channel connected, messaging limits, plan and quota, billing) and lists each check as PASS, WARNING or FAIL, with whether it blocks sending. It sends nothing and changes nothing; it is a POST because the check runs live.

With a test key or ?dry_run=true the check does not run: you get the example answer.

Try it

Test mode (dry run): nothing will change
Turns test mode off for this page only. It switches back when you leave the page.

Code and response

curl -X POST 'https://mcp.wa-api.cloud/v1/broadcasts/precheck?dry_run=true' \
  -H "Authorization: Bearer $API_KEY"

The code reads your key from $API_KEY.

Headers

Headers
FieldTypeWhat it is
AuthorizationrequiredheaderBearer $API_KEY — your API key.
Api-VersionheaderThe API version to use, e.g. 2026-10-01. Default: the version your key is pinned to.one of: 2026-10-01 · pattern ^\d{4}-\d{2}-\d{2}$

Response 200

Each check (`channel_connected`, `service_health`, `usage_limits`, `phone_quality`, `payment_method`, `system_error`, `other`) with its status and a sentence, and whether you can send. `errors` repeats the sentence of each failed blocking check, `warnings` that of each warning.

Response fields
FieldTypeWhat it is
can_sendrequiredboolean
checksrequiredarray of object
namerequiredstringStable check name.one of: channel_connected, service_health, usage_limits, phone_quality, payment_method, system_error, other
statusrequiredstring
messagerequiredstringA fixed sentence for the check and its status.
blockingrequiredboolean
errorsrequiredarray of stringThe sentence of each failed blocking check.
warningsrequiredarray of stringThe sentence of each check with a warning.
dry_runbooleantrue when this was a dry run: every check ran and nothing changed.

Errors

Errors are application/problem+json. Branch on code.

StatusCodeWhen
401unauthenticated

The Authorization header is missing, the key is unknown, expired or revoked.

403entitlement_required

The workspace's plan does not include API access (api_access).

403insufficient_scope

The key does not have the permission this operation needs.

429rate_limited

The key or workspace went over its rate limit. Wait for Retry-After seconds.

503upstream_unavailable

A service behind the API is briefly unavailable. Safe to retry with backoff.

504timeout

The change did not finish in time. Retry with the same Idempotency-Key: it never runs twice.

Examples

Ready to send

Response 200

{
  "can_send": true,
  "checks": [
    {
      "name": "channel_connected",
      "status": "PASS",
      "message": "Your WhatsApp channel is connected.",
      "blocking": true
    },
    {
      "name": "phone_quality",
      "status": "WARNING",
      "message": "Your WhatsApp number's quality rating is low; WhatsApp may limit how many customers you can message.",
      "blocking": false
    }
  ],
  "errors": [],
  "warnings": [
    "Your WhatsApp number's quality rating is low; WhatsApp may limit how many customers you can message."
  ]
}

Operation path

The same operation is also at POST /v1/ops/messaging_precheck_broadcast, with every field in the JSON body.