Health Status
Pre-flight readiness check before a big send. Returns a structured
list of every component (WABA, each phone number, each message
template) with OK / LIMITED / BLOCKED state and the reason
when not OK.
GET /api/v25.0/{WABA_ID}?fields=health_status
Authorization: Bearer pk_live_<your-key>Response — 200
{
"health_status": {
"can_send_message": "AVAILABLE",
"entities": [
{
"entity_type": "BUSINESS",
"id": "1144556677889900",
"can_send_message": "AVAILABLE"
},
{
"entity_type": "WABA",
"id": "115344761664057",
"can_send_message": "AVAILABLE"
},
{
"entity_type": "PHONE_NUMBER",
"id": "112269058640637",
"can_send_message": "LIMITED",
"errors": [
{
"error_code": 130472,
"error_description": "Quality rating is LOW",
"possible_solution": "Improve message quality. Reduce marketing volume until quality returns to GREEN."
}
]
},
{
"entity_type": "MESSAGE_TEMPLATE",
"id": "964823735155832",
"can_send_message": "BLOCKED",
"errors": [
{
"error_code": 135000,
"error_description": "Template paused due to low quality",
"possible_solution": "Edit the template and resubmit for review."
}
]
}
]
},
"id": "115344761664057"
}can_send_message values
| Value | Meaning |
|---|---|
AVAILABLE | Component is healthy — sends will go through |
LIMITED | Component is partially throttled — sends work but may be slow or capped |
BLOCKED | Component cannot send — surface the errors list to your support team |
Top-level vs entity-level
The top-level can_send_message is the worst state across all
entities. If any phone number or template is BLOCKED, the top-level
goes BLOCKED even if everything else is fine.
Common error codes
error_code | What it means |
|---|---|
130472 | Phone-number quality rating is LOW or below |
131045 | Phone-number not registered (call Register) |
133010 | WABA suspended due to policy violation |
135000 | Template paused for low quality — re-edit + re-submit |
135003 | Template rejected at re-submission — review template guidelines |
131008 | Required parameter missing in template body |
131056 | Per-recipient marketing cap hit |
Use cases
- Before a big broadcast — check health on the WABA. If any phone
number is
LIMITED, route the send through a healthy one. - Template scheduling — run health every 30 minutes for templates
you depend on. Pause your scheduler when a template flips to
BLOCKED. - Quality dashboards — surface this directly in your customer’s
panel; the
possible_solutionfield is end-user-friendly.
cURL
curl -X GET \
"https://api.splashifypro.com/api/v25.0/$WABA_ID?fields=health_status" \
-H "Authorization: Bearer $SPLASHIFY_API_KEY"Notes
- Eventually consistent. Health updates ~15 minutes after a state change — don’t expect real-time signals here.
- Cheap to call. Health is a read-side index Meta keeps warm; polling every 30s costs no quota.
- Pair with webhooks. Meta also sends
messaging_handoversandaccount_alertswebhooks for critical state changes — health is the snapshot, webhooks are the deltas.