Skip to main content
Backend-facing endpoint, authenticated with the app’s secret key (grv_sec_, sent as Authorization: Bearer or X-API-Key). Never ship the secret key in a client app.

Alert push

payload is merged at the APNs payload root as custom userInfo. Use channels: ["a", "b"] instead of channel to publish to several channels — a token subscribed to more than one still receives a single push.

Live Activity push

Grantiva sets apns-push-type: liveactivity, topic <bundleID>.push-type.liveactivity, priority 10, and the payload envelope (timestamp, event, content-state, plus attributes-type/attributes on start).

Response

  • pruned — subscriptions deleted because APNs returned 410 Unregistered or 400 BadDeviceToken.
  • Publishing to a channel with zero subscribers is a 200 with delivered: 0.
  • Publishing before the app’s APNs credentials are configured returns 409.
Fan-out is concurrent (capped at 16 in-flight APNs sends) and synchronous within the request.