Skip to main content
POST
Add a column to a vault

Authorizations

Authorization
string
header
required

API key for authentication. Format: gcai_xxxxxxxxx

Create API keys in the GC AI app under Settings → API.

Path Parameters

id
string<uuid>
required

The vault ID

Body

application/json
label
string
required

The column heading shown in the vault table.

Required string length: 1 - 200
Example:

"Renewal notice"

field_key
string

The key extracted values are stored under. Omit it and GC AI builds one from the label (Renewal notice becomes renewalNotice). Set it when you need the key to match something you already store, because the key is frozen once the column exists: renaming the column later never changes it. Any printable key up to 100 characters works, including one with an underscore or a hyphen; percent-encode it when you address a cell on this column.

Required string length: 1 - 100
Example:

"renewalNotice"

instructions
string
default:""

Required for an ai column: this text is the prompt extraction reads each document with, so say what to look for and what to return. Optional for a manual column, where it is only a note to whoever fills the column in.

Maximum string length: 4000
Example:

"Extract the number of days notice required to avoid automatic renewal. Return the number of days only."

field_type
enum<string>
default:text

The shape of the values in this column. enum and multi_enum need field_meta; every other type needs field_meta: null.

Available options:
text,
date,
date_range,
enum,
multi_enum,
boolean,
number,
currency,
percentage,
duration,
email,
url,
list,
rich_text
field_meta

The option list for an enum or multi_enum column. Send null, or omit it, for every other type.

extraction_mode
enum<string>
default:ai

How the column gets filled. ai (the default) has extraction read it out of each document. manual keeps it out of every scan so the values stay exactly what a person types.

Available options:
ai,
manual
sort_order
integer

Placement weight, 0 by default. The table orders columns by sort_order first and creation time second, so columns added without one keep the order you added them in.

Response

The created column

id
string<uuid> | null
required

Unique column identifier, or null for a built-in column. A built-in column has no row of its own in this vault, so it has no ID and cannot be changed or deleted.

field_key
string
required

The stable key extracted values are stored under. It is set once, when the column is created, and never changes, so renaming the column keeps every value already extracted for it.

Example:

"renewalNotice"

label
string
required

The column heading shown in the vault table

Example:

"Renewal notice"

instructions
string
required

For an ai column, the prompt extraction reads each document with. For a manual or import column, a note to whoever reads the column.

field_type
enum<string>
required

The shape of the values in this column. Built-in columns can report party_list and related_agreement_list, which you cannot set yourself.

Available options:
text,
date,
date_range,
enum,
multi_enum,
boolean,
number,
currency,
percentage,
duration,
email,
url,
list,
rich_text,
party_list,
related_agreement_list
field_meta
required

The option list for an enum or multi_enum column. Null for every other type.

extraction_mode
enum<string>
required

How the column gets filled. ai: extraction reads it out of each document. manual: a person types it and no scan ever touches it. import: values come from a connected spreadsheet, which owns the column. You can create ai and manual columns; an import column is created by connecting a spreadsheet in the app.

Available options:
ai,
manual,
import
kind
enum<string>
required

What this column is. built_in: merged into every vault by GC AI, with no ID and no way to change it. system: owned by this vault but managed by GC AI (Document Name, Document Status, Document Title), so it has an ID but rejects every change and every delete. custom: yours, and the only kind PATCH and DELETE accept.

Available options:
built_in,
system,
custom
editable
boolean
required

True when this column can be changed with PATCH /vaults/{id}/columns/{columnId}. Built-in and system columns report false: GC AI owns their name, type, options, and prompt. One exception, on both surfaces: sort_order is list position rather than identity, so it can be set on any column that has an ID.

sort_order
number | null
required

Placement weight for this column, or null for a built-in one. The table orders columns by sort_order first and creation time second.

created_at
string | null
required

ISO 8601 creation timestamp, or null for a built-in column

updated_at
string | null
required

ISO 8601 last-update timestamp, or null for a built-in column

Last modified on September 25, 2026