Skip to main content
Backend-facing endpoint, authenticated with the app’s secret key (grv_sec_, sent as X-API-Key or Authorization: Bearer). Never ship the secret key in a client app — a public key on this route returns 403.
event is your own event name, 1–100 characters. Publish to one channel with channel or up to 100 with channels.

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.

Errors