Get table change status
A table’s active runs plus change watermarks for rows, columns, display preferences, and the definition, in one response.
NOT A POLLING TARGET. The grid now receives changes over the change feed (GET /tables/{table_id}/events/) and fetches this once on load for its initial active-run state. It remains useful to any client that wants a cheap point-in-time snapshot without opening a stream.
Preferences are watermarked separately from columns so a hide, pin, resize, or recolour refreshes the column list alone. A client comparing two responses must compare for inequality — never ordering: max timestamps can move backward when the newest row or column is hard-deleted (the counts catch deletes). All timestamps are server-generated; never compare them to the client clock. There is deliberately no table-existence 404: an unknown or foreign table returns empty runs and null/zero watermarks, which leaks nothing (same no-leak contract as the active-runs endpoint). The org-scoped definition read gates the row aggregate, so a foreign table ID never reaches the (potentially large) row index.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Response
Successful Response
A point-in-time snapshot: active runs plus the four change watermarks.
Every active (pending/running/cancelling) run, newest first.
The columns change watermark: column count plus newest column write.
The rows watermark: the authoritative row counter.
There is no cell-write watermark here. Freshness is a per-cell fact now, and every cell write is already announced on the change feed as a delta the client applies directly — so a polled max(updated_at) over 100M cell rows would buy an index on the hottest table in the schema to answer a question nothing asks.
The definition's updated_at. Moves on rename/description edits AND on row-count maintenance (the counter lives on the definition row) — not a rename-only signal. Null only for an unknown table (the no-leak empty status).
Display-preferences watermark. Deliberately separate from columns: a hide, pin, resize, or recolour must refresh the column list alone, never the rows page and stats that a definition change refreshes.
The newest run that has finished, whatever its outcome. Present so a client can distinguish a table whose last run FAILED from one that is simply idle — before this, both answered with no runs at all and the footer reported the table up to date moments after a run failed.
Runs most recently stopped because the credit balance ran out mid-run — terminal, but the grid's most important fact until a fresh run supersedes them. Empty when nothing is paused.