Skip to main content
POST
Promote an enrichment output field into its own column

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

table_id
string<uuid>
required
column_id
string<uuid>
required

Body

application/json

Promote one declared output field of an enrichment into its own column.

field_name
string
required

The declared output field to promote.

Required string length: 1 - 100
confirm_overwrite
boolean
default:false

Explicit acknowledgement that mapping to an existing column overwrites what that column holds. Required with target_column_id.

display_name
string | null

The child column's name; the field's name when omitted.

Required string length: 1 - 255
target_column_id
string<uuid> | null

Map onto this EXISTING manual column instead of creating one — the field's current values overwrite everything the column holds. Destructive; requires confirm_overwrite.

Response

Successful Response

A table column with its definition and dependency metadata.

column_type
enum<string>
required

The semantic type; what the cell renders and validates as.

Available options:
text,
paragraph,
url,
email,
image_url,
person,
select,
number,
decimal,
currency,
checkbox,
date,
multi_select,
list,
object
created_at
string<date-time>
required
data_type
enum<string>
required

The storage type column_type resolves to, and so which typed value slot the cells live in. Derived, never chosen.

Available options:
string,
integer,
float,
boolean,
datetime,
date,
list,
dict
definition
ManualColumnDefinition · object
required

Definition of a manual column: typed, user-editable cells.

definition_version
integer
required

Bumped on definition changes; cosmetic edits leave it untouched.

depends_on_column_ids
string<uuid>[]
required

Direct chain inputs; empty for manual columns.

description
string | null
required

Author-written note on what the column holds; null when unset.

display_name
string
required
group_id
string<uuid> | null
required

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.

id
string<uuid>
required
is_group_output
boolean
required

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
enum<string>
required

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.

Available options:
manual,
formula,
enrichment,
source,
export,
sequence
position
integer
required
supported_filter_operators
enum<string>[]
required

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.

Available options:
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
table_id
string<uuid>
required
type_options
SelectOptions · object
required

Per-type options; null means the type's defaults.

updated_at
string<date-time>
required
auto_run
boolean
default:true

Whether data changes recompute this column by themselves; explicit runs ignore it.

pending_recompute
boolean
default:false

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.

refresh_interval_hours
integer
default:0

Self re-run cadence in hours; 0 is off.

run_condition
ManualColumnDefinition · object

The per-row gate, verbatim; null runs every row.

run_delay_seconds
integer
default:0

Pre-run wait in seconds; 0 runs immediately.