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.