Update a table column
Partially update a column (omitted fields are left untouched). The kind is immutable. A formula definition change requests a column-edited recompute run — it appears on the next active-runs poll; the response carries only the requires_recompute flag, never a run ID. Cosmetic edits and manual default_value edits request nothing.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Request body for updating a table column (tri-state PATCH semantics).
Whether data changes recompute this column by themselves. Off, its cells go visibly stale and wait for an explicit run.
The type a user picks for a table column.
Ordered as the picker shows them, which is also the order the groups below run in: text-ish, then numeric, then choice, then structured.
text, paragraph, url, email, image_url, person, select, number, decimal, currency, checkbox, date, multi_select, list, object Type of a property. Used while creating/updating/deleting properties.
string, integer, float, boolean, datetime, date, list, dict Definition of a manual column: typed, user-editable cells.
New description. Set to null to clear.
1 - 20001 - 255For a multi-field enrichment, also create one child column per scalar output field this edit ADDS, reading that field out of this column's payload — the same fan-out a column of the same shape gets when it is created. A field the column already declared is left alone, and nothing already on the table is ever renamed or deleted: dropping a field from the output leaves its column in place, holding what it last read. Set false to change the output without fanning anything out.
x >= 0New self re-run cadence in hours; 0 turns it off.
Definition of a manual column: typed, user-editable cells.
New pre-run wait in seconds; 0 runs immediately. Capped at 600.
Save the change without recomputing. The column's cells keep their current values and pending_recompute is set, so the staleness is recorded rather than hidden; run the column when you are ready. A plain bool, not tri-state: it instructs THIS request and has no 'leave unchanged' meaning to carry over.
Options for a single-select column.
Response
Successful Response
A column update result; the recompute run (if due) appears on the next poll.
The semantic type; what the cell renders and validates as.
text, paragraph, url, email, image_url, person, select, number, decimal, currency, checkbox, date, multi_select, list, object The storage type column_type resolves to, and so which typed value slot the cells live in. Derived, never chosen.
string, integer, float, boolean, datetime, date, list, dict Definition of a manual column: typed, user-editable cells.
- ManualColumnDefinition
- FormulaColumnDefinition
- EnrichmentColumnDefinition
- SourceColumnDefinition
- ExportColumnDefinition
- SequenceColumnDefinition
Bumped on definition changes; cosmetic edits leave it untouched.
Direct chain inputs; empty for manual columns.
Author-written note on what the column holds; null when unset.
The column group this column belongs to, or null. Groups are user-managed entities delivered on the column list's groups; this field is the membership edge, and the members' order is simply the columns' position order.
Whether this member stays visible while its group is collapsed. Meaningful only while group_id is set. Every group keeps at least one output.
Kind of a table column.
MANUAL cells are user-editable; FORMULA cells are a pure computed
chain over other columns; ENRICHMENT cells are produced by an external
action (an AI model, a research agent) run once per row. Formula and
enrichment cells are both computed — read-only in the grid — but only
enrichment work leaves the process and costs credits.
SOURCE cells hold one imported record verbatim, written only by the
table's import source. Like MANUAL it is an externally-written leaf
rather than a computed node — it joins no run plan and derives from no
other column — but unlike MANUAL nobody may edit or retype it: the
whole point is that a refresh can overwrite it wholesale, and every
get_path column promoted off it reads paths that only survive while
its shape does.
EXPORT cells hold the RECEIPT of pushing the row to a connected
destination — status, the destination record id, when it happened — never
the row's own data. The mirror image of SOURCE: where a source column
is an externally-written leaf, an export column is an externally-READ
leaf. It joins the run plan like a computed column (its mappings are
dependencies, so a changed input re-pushes) but nothing may depend on it
in turn, nobody may edit it (a hand-edited receipt would silently pin the
row out of future pushes), and re-running it means "push again", not
"re-answer".
SEQUENCE cells hold a contact's live status in an email sequence,
written by the outreach send engine and nobody else: an externally-written
leaf — no run plan, no dependencies, no user edits, no retyping — and,
like EXPORT receipts, nothing may reference it in a formula: the
status only exists to be looked at, never derived from. The column is
created by the sequence that targets the table, not from the add-column
catalog.
manual, formula, enrichment, source, export, sequence Whether the update marked the column for recompute — the run itself arrives via the active-runs poll, never in this response.
Every filter operator this column admits, in display order. The server owns the list so a picker cannot offer a pairing the rows query will reject: value operators follow the storage slot, and a computed column additionally admits the execution-state family (has an error, has results, has not run, is stale, ...), which reads run metadata a manual column never writes.
A row filter predicate.
Which operators are legal depends on the column's data type; the service validates the pairing and rejects a mismatch, so an operator here is a vocabulary entry rather than a promise it applies everywhere.
Two families live here. The VALUE operators ask about what a cell holds and are keyed off the column's storage slot. The STATE operators ask about what the last run DID to the cell — errored, skipped, never ran, went stale — and are keyed off the column's kind instead: they read the compute metadata that only a computed column ever writes, and mean nothing on a hand-typed one.
eq, neq, gt, gte, lt, lte, contains, not_contains, contains_any_of, not_contains_any_of, starts_with, is_true, is_false, is_empty, is_not_empty, has_error, has_no_error, has_results, has_no_results, has_not_run, is_stale, is_not_stale, run_condition_not_met, run_stopped Per-type options; null means the type's defaults.
- SelectOptions
- MultiSelectOptions
- CurrencyOptions
- DecimalOptions
Whether data changes recompute this column by themselves; explicit runs ignore it.
The definition has changed since these cells were last computed, so they are stale. Set by a save made with suppress_run, cleared when the column next finishes a run.
Self re-run cadence in hours; 0 is off.
The per-row gate, verbatim; null runs every row.
- ManualColumnDefinition
- FormulaColumnDefinition
- EnrichmentColumnDefinition
- SourceColumnDefinition
- ExportColumnDefinition
- SequenceColumnDefinition
Pre-run wait in seconds; 0 runs immediately.