Skip to content

Errors

Errors return a JSON body with a stable code and a human-readable message. Branch on code, not on the message, which may change.

{ "error": { "code": "alert_too_long", "message": "…", "field": "alert.title", "limit": 100, "actual": 128 } }
Status Retry?
400, 413, 422 No. Fix the request first; sending it again gives the same error.
401, 404 No. The URL or token is wrong or no longer valid.
429, 503 Yes, after the number of seconds in the Retry-After header.
Other 5xx Yes, with backoff. Send an idempotency_key so a retry never creates a second alert.
Status Code Endpoint Meaning and fix
400 invalid_json Send The body is not valid JSON or not valid UTF-8.
401 invalid_send_url Send The send URL is wrong, regenerated, revoked, suspended, or its channel was deleted. Copy the current URL from the app.
401 unauthorized Receipts The Authorization header does not hold a send URL token.
404 not_found Receipts No receipt with this ID was sent by this send URL.
404 invalid_heartbeat_url Heartbeat The heartbeat URL is wrong, was regenerated or deleted, or its channel was deleted.
413 request_too_large Send The body is larger than 64 KB.
422 invalid_target Send alert.title is missing, or a field has an invalid value or forbidden characters. field names the field.
422 alert_too_long Send A field is over its limit. The error includes field, limit, and actual.
422 invalid_alert_level Send level is not urgent, high, normal, or silent.
422 invalid_emergency Send emergency.retry_seconds is under 30, or expire_seconds is under retry_seconds or over 10800.
422 invalid_callback Send callback was requested on an alert that cannot be acknowledged.
422 callback_not_configured Send callback was requested, but the channel has no enabled callback.
422 encryption_required Send The channel accepts only encrypted alerts.
422 invalid_encrypted_message Send The encrypted envelope is incomplete or malformed.
429 limit_exceeded Send The send URL’s rate limit was reached.
429 rate_limited All Too many requests from your network address.
500 create_failed Send The alert could not be stored. Retry with the same idempotency_key.
503 server_busy All The server is handling too many requests at once. Retry shortly.