Check phone health
Health check via Meta APIs and Kapso services.
Results are cached for 3 minutes per phone number, so repeated calls can
return the same payload. Use timestamp to tell when the check actually
ran. The cache is invalidated early when the number’s configuration
changes.
If a fresh check is already running for the same number and does not
finish within 15 seconds, the response is status: error with an
error message asking you to retry shortly.
When a check keeps failing to read the phone number from Meta because of
an access or token error, the result is held for longer: 5, then 15, then
30, then 60 minutes. During that window the response repeats the last
payload and adds retry_after. Rate limits, payment errors and transport
failures do not trigger this. A successful check clears retry_after and
resets the delay, as does reconnecting the number or changing its
credentials.
When Meta reports the number as DISCONNECTED, the overall status is
unhealthy even if the other checks pass. Reconnect the number to
restore messaging. A missing or unrecognized connection status is
reported as UNKNOWN and does not affect the overall status.
Health checks are limited to 5 requests per second and 60 requests per
minute per project, shared across all API keys in the project. Over the
limit the request is rejected with 429 before Meta is called, and
Retry-After tells you how many seconds to wait. Every response carries
the current counters in the X-Health-RateLimit-* headers.
Authorizations
Path Parameters
Response
Health status
healthy, degraded, unhealthy, error Present only while the number is in access-error backoff. The earliest time a later request will re-check Meta. Requests made before this time return this same cached payload. It is not a scheduled re-check or a guarantee that the next check will succeed.
Individual check results. Typical checks:
- phone_number_access: Meta API connectivity
- phone_number_connection: Meta connection status (CONNECTED/DISCONNECTED/UNKNOWN).
passedisnullwhen the status is UNKNOWN - messaging_health: Send/receive capability (AVAILABLE/LIMITED/BLOCKED)
- webhook_subscription: WABA app subscription status
- webhook_verified: Webhook verification status
- token_validity: Access token validity (coexistence only)

