Notify API

Live

Shared notification intake. Products own trigger events; this plane owns in-app rows, preferences, and unread counts. Email copies go through Mailtaz when a channel includes email.

Base URL https://api.bolrach.devWrite notify:writeRead notify:readHealth public

Health

GET /v1/notify/health

Unauthenticated liveness (database reachability).

curl "https://api.bolrach.dev/v1/notify/health"

Events

POST /v1/notify/events

Scope notify:write. Create an event for a subject user. Supports dedupe_key and channel preferences.

curl -X POST "https://api.bolrach.dev/v1/notify/events" \
  -H "Authorization: Bearer bt_your_key_here" \
  -H "Content-Type: application/json"
  -d '{"product_key":"myapp","type":"invoice.paid","subject_user_id":"USER_UUID","title":"Invoice paid","dedupe_key":"inv-123-paid"}'

Inbox

GET /v1/notify/inbox

Scope notify:read. List in-app notifications for a user (query params depend on product key and user id).

curl "https://api.bolrach.dev/v1/notify/inbox?user_id=USER_UUID" \
  -H "Authorization: Bearer bt_your_key_here"
GET /v1/notify/unread-count

Unread badge count for a user.

curl "https://api.bolrach.dev/v1/notify/unread-count?user_id=USER_UUID" \
  -H "Authorization: Bearer bt_your_key_here"
POST /v1/notify/inbox/{id}/read

Mark one notification read.

curl -X POST "https://api.bolrach.dev/v1/notify/inbox/EVENT_ID/read" \
  -H "Authorization: Bearer bt_your_key_here" \
  -H "Content-Type: application/json"
  -d '{"user_id":"USER_UUID"}'
POST /v1/notify/inbox/read-all

Mark all notifications read for a user.

curl -X POST "https://api.bolrach.dev/v1/notify/inbox/read-all" \
  -H "Authorization: Bearer bt_your_key_here" \
  -H "Content-Type: application/json"
  -d '{"user_id":"USER_UUID"}'

Preferences

GET /v1/notify/preferences

Per-user channel preferences (in-app, email, etc.) honoured when events are created.

curl "https://api.bolrach.dev/v1/notify/preferences?user_id=USER_UUID&product_key=myapp" \
  -H "Authorization: Bearer bt_your_key_here"
PUT /v1/notify/preferences

Update channels for a product event type (e.g. drop in_app when the user opts out).

curl -X PUT "https://api.bolrach.dev/v1/notify/preferences" \
  -H "Authorization: Bearer bt_your_key_here" \
  -H "Content-Type: application/json"
  -d '{"user_id":"USER_UUID","product_key":"myapp","type":"invoice.paid","channels":["email"]}'

Private-build notes

Coordinated launch. Machine catalogue: api.bolrach.dev/v1 · openapi.json.