Skip to main content
POST
Send Push Notification
Fans a push notification out to every registered device belonging to the listed users. The server dispatches to APNs (iOS), FCM (Android), and the Web Push protocol in parallel, using whichever platform credentials are configured for this project. Requires a service or master key (Authorization: Bearer <serviceKey>). End-user tokens are rejected — this endpoint is intended for your backend, not for end users calling it directly. Requires the push bundle.

Body Parameters

string[]
required
Array of Sublay user IDs to notify. Between 1 and 100 IDs per request.
string
required
Notification title. Displayed as the bold heading on the device.
string
required
Notification body text.
object
Optional key-value data payload forwarded to the app alongside the notification. Values must be strings or serializable primitives. Use this to pass deep-link targets, IDs, or any context your app needs when the user taps the notification.

Rich payload fields

All optional. Each is mapped to whichever platform(s) support it at dispatch time and silently ignored on platforms that have no equivalent. See the Push Notifications guide for the client-side setup some of these require (Android channels, the iOS Notification Service Extension, your web service worker).
string
Sound file to play. iOS: APNs sound. Android: governed by the channel on 8+ — pair with channelId. Web: forwarded to the service worker.
number
iOS app-icon badge count (APNs badge). No Android equivalent. The caller supplies the number; Sublay tracks no unread state.
string
Android notification channel id (FCM android.notification.channel_id). The channel must be created client-side; on Android 8+ it owns sound/importance/vibration.
string
"high" or "normal". iOS: APNs apns-priority (10/5). Android: FCM android.priority. high wakes the device for time-sensitive pushes.
string
iOS subtitle line under the title (APNs alert.subtitle).
string
Rich/big-picture image URL. Android (FCM image) and Web work out of the box. iOS additionally requires a Notification Service Extension in the app — the URL is forwarded in the payload and mutable-content is set automatically.
string
Display-replace key so notifications collapse in the UI (FCM android.notification.tag, Web tag).
string
Transport-level collapse identifier (APNs apns-collapse-id, FCM collapse_key) — supersedes an undelivered push with the same id.
string
iOS notification grouping (APNs thread-id).
number
Time-to-live in seconds for offline devices (APNs apns-expiration computed from now, FCM android.ttl).
boolean
iOS mutable-content flag, enabling the app’s Notification Service Extension to modify the payload (e.g. attach imageUrl). Set implicitly when imageUrl is provided.

Response

Returns 200 with a results map keyed by user ID. Every requested userId is present in the response — users with no registered devices get an empty array rather than being omitted.
object
Map from user ID to an array of per-device delivery results.
Devices whose tokens or subscriptions are reported as permanently invalid by the upstream provider (e.g. APNs BadDeviceToken, FCM UNREGISTERED, Web Push HTTP 410) are automatically deleted during the send — no separate cleanup step is needed.

Error Responses

Returned when userIds is empty, exceeds 100 entries, or required fields are missing.
Returned when called with an end-user access token instead of a service/master key.

See Also