Subscriptions

Subscribe or unsubscribe from tables and records to control which notifications you receive. Subscribing to a table sends you notifications for all activity on that table. Subscribing to a record sends you notifications for that specific record.

All endpoints require the caller to be a member of the table's workspace. Read-only members can subscribe.

Subscribe to a table

POST /api/subscriptions/<table_id>/subscribe
Field Type Notes
force bool If true, no-op when already subscribed instead of returning an error

Returns {"ok": true, "subscribed": true}.

Unsubscribe from a table

POST /api/subscriptions/<table_id>/unsubscribe
Field Type Notes
force bool If true, no-op when not subscribed instead of returning an error

Returns {"ok": true, "subscribed": false}.

Subscribe to a record

POST /api/subscriptions/<table_id>/<record_id>/subscribe
Field Type Notes
force bool If true, no-op when already subscribed instead of returning an error

Returns {"ok": true, "subscribed": true}.

Unsubscribe from a record

POST /api/subscriptions/<table_id>/<record_id>/unsubscribe
Field Type Notes
force bool If true, no-op when not subscribed instead of returning an error

Returns {"ok": true, "subscribed": false}.

Check subscription status

POST /api/subscriptions/<table_id>/status
Field Type Notes
record_id int Optional — also check record-level subscription

Returns:

{
  "table": true,
  "record": false
}

Force flag

By default, subscribing when already subscribed (or unsubscribing when not subscribed) returns an error. Pass "force": true to make the call idempotent — it succeeds silently when already in the target state. This is useful for integrations that want to ensure a subscription exists without tracking current state.

Read-only API keys can read subscription status but cannot change subscriptions.

Admin: manage table followers

Workspace admins can view and curate the table-level follower list for other members. These endpoints require the caller to be an admin of the table's workspace; non-admins receive an error.

List followers

POST /api/subscriptions/<table_id>/followers

Returns one entry per workspace member (pending invites excluded), with their current table-level follow state:

[
  {"user_id": 12, "displayName": "Alice", "emailAddress": "alice@example.com", "following": true, "is_self": true},
  {"user_id": 34, "displayName": "Bob", "emailAddress": "bob@example.com", "following": false, "is_self": false}
]

Set a follower

POST /api/subscriptions/<table_id>/setFollower
Field Type Notes
user_id int Must be a current member of the workspace
following bool true adds a table-level follow, false removes it

Returns {"user_id": 34, "following": true}. Idempotent - repeating the same call is a no-op. Removing also clears a follow the member added themselves. Read-only API keys are rejected. The member is not notified that they were added; they simply begin (or stop) receiving the table's notifications.