Push Notifications API
Send push notifications to your end users’ iOS and Android devices through Apple Push Notification service (APNs) and Firebase Cloud Messaging (FCM). Orbit holds your provider credentials and exposes a single send endpoint that fans out to the right transport. Base path:/api/v1/push
Authentication: API key (X-API-Key) or session JWT.
Device tokens
Your mobile app registers each device’s push token after the user grants permission. Re-register on token rotation; APNs and FCM both rotate tokens periodically.Sending
Example — send to a user’s devices
Target a send with eitheruser_ids (every registered device for those users) or device_token_ids (specific device tokens). At least one of the two is required.
device_token_ids with the ids returned from /api/v1/push/device-tokens:
notifications[] array carries a transport field — apns, fcm, webpush, or hms — identifying which transport was used to reach that device, alongside its deviceTokenId and delivery status.
Scheduled pushes
To send later, add an ISO 8601send_at to POST /api/v1/push/send. When send_at is in the future the notification is stored instead of dispatched and the request returns 202 Accepted; a background worker replays it through the same fan-out and suppression logic when the time arrives. Omit send_at (or pass a past instant) to send immediately.
Cancelling a scheduled push
DELETE /api/v1/push/scheduled/{id} cancels a push that is still in the scheduled state. Cancel is a guarded status flip, not a hard delete — the row remains queryable with status: "cancelled".
sent / failed) or it was cancelled by an earlier request, the endpoint returns 409 Conflict with error code SCHEDULED_PUSH_NOT_CANCELLABLE — the push has already left and can no longer be recalled. Branch on this code rather than treating the cancel as a silent success. An unknown id returns 404 Not Found (NOT_FOUND).
See also
- Webhooks → push events —
push.delivered,push.opened - Messaging API → unified send — push as one channel in a flow