HoneyNotify API
All API responses include X-Request-ID. Errors use { "error": { "code", "message", "details" }, "request_id" }. Requests are JSON, limited to MAX_REQUEST_BYTES, authenticated with Authorization: Bearer …, and rate limited by organisation.
Scopes
devices:write— register and disable devices.notifications:write— create notifications.notifications:read— read notification status and delivery totals.events:write— submit received, opened, clicked, dismissed or custom events.
Endpoints
POST /v1/devices/register
Required: platform (ios, android, or web) and push_token. Optional: external_user_id, app_version, device_model, os_version, locale, timezone, and string-keyed tags. Registering an existing token refreshes its metadata and re-enables it.
DELETE /v1/devices/{device_id}
Disables the device and marks its token invalidated.
POST /v1/notifications
Requires a unique Idempotency-Key header plus title, body, and target. Target types are all, device, user, and tag. Priorities are transactional, high, normal, and bulk. Optional ISO-8601 scheduled_at values are picked up by the scheduler.
GET /v1/notifications/{notification_id}
Returns status, timestamps, recipient count, accepted count, and failed count.
POST /v1/events
Requires event_type; accepts optional notification_id, device_id, event_name, metadata, and ISO-8601 occurred_at.
Public mobile keys
Mobile apps should receive a Public mobile client key with a ps_public_ prefix. The server fixes these keys to devices:write and events:write; notification scopes cannot be added. Never embed a ps_live_ server key in shipped client code.