Skip to main content
PATCH
Update a vault column

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

columnId
string<uuid>
required

The column ID from GET /vaults/{id}/columns. Built-in columns report id: null and cannot be addressed here.

Body

application/json
label
string

New column heading. The field_key does not follow a rename, so every value already extracted stays attached.

Required string length: 1 - 200
instructions
string

New instructions.

Maximum string length: 4000
field_type
enum<string>

New value shape. Send field_meta in the same request when the new type needs a different option list.

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

New option list. Send null to clear it. Omit it to leave the current one in place.

extraction_mode
enum<string>

New fill mode. A column a spreadsheet owns cannot move in or out of import, so those columns reject this field.

Available options:
ai,
manual
sort_order
integer

New placement weight.

Response

The updated 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

auto_rescan
required

What happened to the re-scan a type change triggered, or null when the change needed none. A non-null value never means the update failed.

Last modified on September 25, 2026