One call: to + title + body. to is exactly one of { phone }, { email }, { contactId }, { deviceId } or { testDevices: true }; every device the person has registered receives it. Optional: image (https), url (deep link opened on tap), up to 3 buttons, countdownEndAt (a live countdown on Android, "Ends 8:00 pm" on iOS), data your app reads, kind (promotional needs the device's marketing opt-in and respects quiet hours and the daily cap — default transactional), sendAt, collapseKey, ttlSeconds, dryRun.
Answers 202 at once: status is queued / scheduled, or no_recipients when the person has no eligible device (a state, not an error — recipients.excluded says why). Sending happens within a few seconds; follow it with Get push message (a push is not a chat message and raises no message.* webhook). Lists and segments are campaigns: create one on the push channel with the Campaigns API.
Authenticate with your organisation API token (Bearer). Roles: CRM_ADMIN, ACCOUNT_OWNER or CRM_BOT.
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
200Replayed — the answer this Idempotency-Key already got (replayed: true)
400Invalid message or recipient (error.code says what), or a malformed Idempotency-Key
401Token missing, invalid or for another organisation
403The token holder lacks the required role
404Contact, device or push channel not found
409A request with this Idempotency-Key is still being processed — retry in a few seconds
422Idempotency-Key reused with a different body
429Rate limited — retry after the Retry-After header
503Push notifications are not available on this server yet
