Register Support Push Subscription
POST/api/support/push/subscriptions
Registers a device for push notifications.
support:writeGrant this scope to your token under Settings → Developer → Personal Access Tokens.
The body is the browser's own subscription object, handed over verbatim. Subscribe through the browser's Push API — registration.pushManager.subscribe(), passing the push.vapid_public_key from GET /api/support/meta as applicationServerKey — and send the endpoint and keys off the result. None of these values are yours to invent or to build by hand: the push service issues the endpoint and the browser generates the keys.
Re-registering the same endpoint is the normal case, not an error — a browser hands back the same endpoint every time it boots. The existing device is refreshed (keys replaced, failure streak cleared, ownership moved to the signed-in caller) and the answer is 200 instead of 201.
Request body
endpoint(string, required) — the push service URL the browser was issued. Must start withhttps://, max 2000 characterskeys(object, required) — the key material the notification payload is encrypted with. Both keys are required together: a subscription missing either one can never be delivered to, so it is refused rather than stored and silently skippedkeys.p256dh(string, required) — the browser's base64url public key, max 255 characterskeys.auth(string, required) — the browser's base64url auth secret, max 255 charactersuser_agent(string, optional) — a label for this device, shown when listing devices. Defaults to the request'sUser-Agentheader, max 255 characters
Responses
201— a new device was registered200— this endpoint was already registered and has been refreshed422— the subscription is incomplete or malformed
This endpoint does not require tenant context — a device is registered once and covers every tenant the caller works in.
Authentication: Bearer token with the support:write scope, or an authenticated session.
Request
Responses
- 200
- 201
- 401
- 403
- 422
- 429
OK
Response Headers
Created
Response Headers
Unauthenticated — the bearer token is missing, revoked, expired, or malformed. Never retry automatically; fix the credential. See the Errors guide.
Forbidden — the token lacks a required scope, the endpoint is not available to API tokens, or the user behind the token lacks the permission. A human must adjust the token scopes or user permissions; do not retry.
Unprocessable Entity
Response Headers
Rate limited — platform limit is 1,000 requests/min; individual tokens may carry lower limits. Honor the Retry-After header before retrying. See the Rate Limits guide.