Adding a column scans nothing. Documents already in the vault keep an empty cell for the new column until a re-scan fills it, which you start from the vault in the app. Add the columns you want before you upload, and every document that arrives afterwards is read against all of them.
The new column starts hidden in every saved view of this vault. A saved view is a sharing boundary, so a column created after the view was saved never joins it on its own; a member of the view reveals it there when they want it.
field_key is frozen at creation. Omit it and GC AI builds one from the label. Renaming the column later leaves the key alone, so the values already extracted stay attached to it.
A vault holds at most 500 columns. Column 501 returns 403 with the message the app shows, and you have to delete a column before adding another.
Requires the editor or owner role in the vault and the organization-level permission to manage vaults.
Requires a user-scoped API key (u:gcai_...). A vault is shared with named people, so an organization-scoped key has no identity to resolve vault access with.
POST
/
vaults
/
{id}
/
columns
Add a column to a vault
curl --request POST \ --url https://app.gc.ai/api/external/v1/vaults/{id}/columns \ --header 'Authorization: <api-key>' \ --header 'Content-Type: application/json' \ --data '{ "label": "Renewal notice", "field_key": "renewalNotice", "instructions": "Extract the number of days notice required to avoid automatic renewal. Return the number of days only.", "field_type": "text", "field_meta": { "type": "enum", "options": [ "Renewal", "New business", "Amendment" ] }, "extraction_mode": "ai", "sort_order": 123}'
import requests
url = "https://app.gc.ai/api/external/v1/vaults/{id}/columns"
payload = {
"label": "Renewal notice",
"field_key": "renewalNotice",
"instructions": "Extract the number of days notice required to avoid automatic renewal. Return the number of days only.",
"field_type": "text",
"field_meta": {
"type": "enum",
"options": ["Renewal", "New business", "Amendment"]
},
"extraction_mode": "ai",
"sort_order": 123
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)
const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
label: 'Renewal notice',
field_key: 'renewalNotice',
instructions: 'Extract the number of days notice required to avoid automatic renewal. Return the number of days only.',
field_type: 'text',
field_meta: {type: 'enum', options: ['Renewal', 'New business', 'Amendment']},
extraction_mode: 'ai',
sort_order: 123
})
};
fetch('https://app.gc.ai/api/external/v1/vaults/{id}/columns', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
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 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."
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.
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.
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.
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.
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. connector: values come from a connected document source, which owns the column. You can create ai and manual columns. An import column is created by connecting a spreadsheet in the app. A connector column is created when a source such as Ironclad fills it.
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.
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.
ISO 8601 last-update timestamp, or null for a built-in column
Last modified on September 25, 2026
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"GC AI","description":"The GC AI API reference (REST API, MCP server and CLI), plus support, account and troubleshooting help. Product docs for signed-in users are in the GC AI app.","colors":{"primary":"#003047","light":"#50abda"},"logo":{"light":"https://mintcdn.com/gcai/0BlqBDRwAhV-CbPw/logo/light.svg?fit=max\u0026auto=format\u0026n=0BlqBDRwAhV-CbPw\u0026q=85\u0026s=d11c2834d42373b30d3f9dc6d3138367","dark":"https://mintcdn.com/gcai/0BlqBDRwAhV-CbPw/logo/dark.svg?fit=max\u0026auto=format\u0026n=0BlqBDRwAhV-CbPw\u0026q=85\u0026s=32c5457a1bac33bb819c590260c1cbc9"},"favicon":"https://mintcdn.com/gcai/0BlqBDRwAhV-CbPw/favicon.svg?fit=max\u0026auto=format\u0026n=0BlqBDRwAhV-CbPw\u0026q=85\u0026s=7b86bbec08c30a471c9cd2d8a6b20504","navbar":{"links":[{"href":"mailto:support@gc.ai","label":"support@gc.ai"}],"primary":{"type":"button","label":"Go to GC AI","href":"https://app.gc.ai"}},"footer":{"socials":{"x":"https://x.com/gcai_co","linkedin":"https://linkedin.com/company/gc-ai"}},"seo":{"organization":{"url":"https://gc.ai","sameAs":["https://x.com/gcai_co","https://linkedin.com/company/gc-ai"]},"indexing":"navigable"},"integrations":{"posthog":{"apiKey":"phc_EhQwXWGMSQx1y3M9f5uLqZUgeFqpagTuYPXGw1QYztC","apiHost":"https://app.posthog.com"}},"interaction":{"drilldown":false},"metadata":{"timestamp":true},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Community","icon":"slack","href":"https://gc.ai/slack"},{"anchor":"Blog","icon":"newspaper","href":"https://gc.ai/blog"},{"anchor":"Classes","icon":"graduation-cap","href":"https://gc.ai/classes"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"gcai","hasAudioNarration":false,"actualSubdomain":"gcai","customDomains":["docs.gc.ai"],"gitSource":{"type":"github","owner":"gc-ai-inc","repo":"app-gc-ai","deployBranch":"main","contentDirectory":"apps/product-docs","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af15f2516d3fc7a335ae1a7","clientVersion":"0.0.4094","searchFilterCounts":[{"language":"default","tag":"API Reference","count":165},{"language":"default","tag":"REST","count":113},{"language":"default","tag":"Endpoints","count":100},{"language":"default","tag":"Contract Intelligence","count":34},{"language":"default","tag":"MCP","count":33},{"language":"default","tag":"Tools","count":28},{"language":"default","tag":"Projects","count":22},{"language":"default","tag":"CLI","count":20},{"language":"default","tag":"Playbooks","count":18},{"language":"default","tag":"Commands","count":15}]},"assistantConfig":{"deflection":{"enabled":true,"email":"support@gc.ai","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".surface-map table{width:100%;table-layout:fixed}.surface-map--method th:last-child,.surface-map--method td:last-child{width:6rem}.surface-map--behavior th:last-child,.surface-map--behavior td:last-child{width:8rem}.surface-map .method,.surface-map .behavior{display:inline-block;padding:1px 6px;border-radius:6px;font-family:ui-monospace, SFMono-Regular, Menlo, monospace;font-size:0.72rem;font-weight:600;letter-spacing:0.02em}.surface-map .method-get{color:#10b981;background:rgba(16, 185, 129, 0.13)}.surface-map .method-post{color:#3b82f6;background:rgba(59, 130, 246, 0.13)}.surface-map .method-put{color:#f59e0b;background:rgba(245, 158, 11, 0.13)}.surface-map .method-patch{color:#f97316;background:rgba(249, 115, 22, 0.13)}.surface-map .method-delete{color:#ef4444;background:rgba(239, 68, 68, 0.13)}.surface-map .behavior-read-only{color:#10b981;background:rgba(16, 185, 129, 0.13)}.surface-map .behavior-additive{color:#3b82f6;background:rgba(59, 130, 246, 0.13)}.surface-map .behavior-destructive{color:#ef4444;background:rgba(239, 68, 68, 0.13)}.surface-map .behavior-open-world{color:#8b5cf6;background:rgba(139, 92, 246, 0.13)}"}],"page":{"pagePath":"api-reference/create-vault-column","slug":"/api-reference/create-vault-column","pageMetadata":{"title":"Add a Column to a Vault","openapi":"POST /vaults/{id}/columns","description":"Add a column to a vault's table.\n\nAdding a column scans nothing. Documents already in the vault keep an empty cell for the new column until a re-scan fills it, which you start from the vault in the app. Add the columns you want before you upload, and every document that arrives afterwards is read against all of them.\n\nThe new column starts hidden in every saved view of this vault. A saved view is a sharing boundary, so a column created after the view was saved never joins it on its own; a member of the view reveals it there when they want it.\n\n`field_key` is frozen at creation. Omit it and GC AI builds one from the label. Renaming the column later leaves the key alone, so the values already extracted stay attached to it.\n\nA vault holds at most 500 columns. Column 501 returns `403` with the message the app shows, and you have to delete a column before adding another.\n\nRequires the `editor` or `owner` role in the vault and the organization-level permission to manage vaults.\n\nRequires a user-scoped API key (`u:gcai_...`). A vault is shared with named people, so an organization-scoped key has no identity to resolve vault access with.","href":"/api-reference/create-vault-column"},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Add a column to a vault’s table.\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"Adding a column scans nothing. Documents already in the vault keep an empty cell for the new column until a re-scan fills it, which you start from the vault in the app. Add the columns you want before you upload, and every document that arrives afterwards is read against all of them.\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"The new column starts hidden in every saved view of this vault. A saved view is a sharing boundary, so a column created after the view was saved never joins it on its own; a member of the view reveals it there when they want it.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.code, {\n children: \"field_key\"\n }), \" is frozen at creation. Omit it and GC AI builds one from the label. Renaming the column later leaves the key alone, so the values already extracted stay attached to it.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"A vault holds at most 500 columns. Column 501 returns \", _jsx(_components.code, {\n children: \"403\"\n }), \" with the message the app shows, and you have to delete a column before adding another.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Requires the \", _jsx(_components.code, {\n children: \"editor\"\n }), \" or \", _jsx(_components.code, {\n children: \"owner\"\n }), \" role in the vault and the organization-level permission to manage vaults.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Requires a user-scoped API key (\", _jsx(_components.code, {\n children: \"u:gcai_...\"\n }), \"). A vault is shared with named people, so an organization-scoped key has no identity to resolve vault access with.\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Add a Column to a Vault","openapi":"POST /vaults/{id}/columns","description":"Add a column to a vault's table.\n\nAdding a column scans nothing. Documents already in the vault keep an empty cell for the new column until a re-scan fills it, which you start from the vault in the app. Add the columns you want before you upload, and every document that arrives afterwards is read against all of them.\n\nThe new column starts hidden in every saved view of this vault. A saved view is a sharing boundary, so a column created after the view was saved never joins it on its own; a member of the view reveals it there when they want it.\n\n`field_key` is frozen at creation. Omit it and GC AI builds one from the label. Renaming the column later leaves the key alone, so the values already extracted stay attached to it.\n\nA vault holds at most 500 columns. Column 501 returns `403` with the message the app shows, and you have to delete a column before adding another.\n\nRequires the `editor` or `owner` role in the vault and the organization-level permission to manage vaults.\n\nRequires a user-scoped API key (`u:gcai_...`). A vault is shared with named people, so an organization-scoped key has no identity to resolve vault access with.","href":"/api-reference/create-vault-column"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Add a column to a vault","description":"Add a column to a vault's table.\n\nAdding a column scans nothing. Documents already in the vault keep an empty cell for the new column until a re-scan fills it, which you start from the vault in the app. Add the columns you want before you upload, and every document that arrives afterwards is read against all of them.\n\nThe new column starts hidden in every saved view of this vault. A saved view is a sharing boundary, so a column created after the view was saved never joins it on its own; a member of the view reveals it there when they want it.\n\n`field_key` is frozen at creation. Omit it and GC AI builds one from the label. Renaming the column later leaves the key alone, so the values already extracted stay attached to it.\n\nA vault holds at most 500 columns. Column 501 returns `403` with the message the app shows, and you have to delete a column before adding another.\n\nRequires the `editor` or `owner` role in the vault and the organization-level permission to manage vaults.\n\nRequires a user-scoped API key (`u:gcai_...`). A vault is shared with named people, so an organization-scoped key has no identity to resolve vault access with.","operationId":"createVaultColumn","tags":["Contract Intelligence"],"security":["1b7eab2e-c883-415e-99ce-d701c60ff017"],"parameters":["01447f22-db0b-43e5-8b90-72b1b42e550b"],"requestBody":"5e4379fb-239d-4a58-9dbb-5ea22ba277d7","responses":{"201":"3b3276fe-daad-4235-871c-5154cc1992cc","400":"c009e1d2-3af9-4433-8f48-52fc40cfed42","401":"715c6b07-d161-4741-a545-031a6a0a4f82","403":"609a5c68-901c-4456-9379-4e5a74b1dab2","404":"1a146417-5d68-4b81-95c1-1dc4b0734109","409":"d593b322-a5dd-47ac-b06d-07cc314cdf21","422":"746c74e6-2ee9-42a1-9193-479b8e279293","429":"20d44392-0d44-444d-b58b-1ae9f3d1a647","500":"ceefe766-3f2c-470c-8c59-9bd85bebdb10","503":"5d8e6ec7-1407-42c7-85b2-f384d0cb7834"},"method":"post","type":"path","servers":["2c21f627-fcca-46ae-8404-7077fb0598ec"],"path":"/vaults/{id}/columns","baseUrlOptions":["https://app.gc.ai/api/external/v1"],"title":"Add a column to a vault","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"01447f22-db0b-43e5-8b90-72b1b42e550b":{"schema":{"type":"string","format":"uuid","description":"The vault ID","isRequired":true,"uniqueKey":"","typeLabel":"string\u003cuuid>"},"required":true,"description":"The vault ID","name":"id","in":"path"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":200,"description":"The column heading shown in the vault table.","example":"Renewal notice","isRequired":true,"uniqueKey":"label","typeLabel":"string"},"field_key":{"type":"string","minLength":1,"maxLength":100,"description":"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.","example":"renewalNotice","uniqueKey":"field_key","typeLabel":"string"},"instructions":{"type":"string","maxLength":4000,"default":"","description":"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.","example":"Extract the number of days notice required to avoid automatic renewal. Return the number of days only.","uniqueKey":"instructions","typeLabel":"string"},"field_type":{"type":"string","enum":["text","date","date_range","enum","multi_enum","boolean","number","currency","percentage","duration","email","url","list","rich_text"],"default":"text","description":"The shape of the values in this column. `enum` and `multi_enum` need `field_meta`; every other type needs `field_meta: null`.","uniqueKey":"field_type","typeLabel":"enum\u003cstring>"},"field_meta":{"oneOf":[{"type":"object","description":"The option list for an `enum` or `multi_enum` column. Send `null`, or omit it, for every other type.","required":["type","options"],"properties":{"type":{"type":"string","enum":["enum"],"isRequired":true,"uniqueKey":"field_meta.oneOf.0.type","typeLabel":"enum\u003cstring>"},"options":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"uniqueKey":"field_meta.oneOf.0.options.items.[INDEX]","typeLabel":"string"},"description":"The values this column can hold. Between 2 and 12, all different.","example":["Renewal","New business","Amendment"],"isRequired":true,"uniqueKey":"field_meta.oneOf.0.options","typeLabel":"string[]"}},"uniqueKey":"field_meta.oneOf.0","typeLabel":"object"},{"type":"object","description":"The option list for an `enum` or `multi_enum` column. Send `null`, or omit it, for every other type.","required":["type","options"],"properties":{"type":{"type":"string","enum":["multi_enum"],"isRequired":true,"uniqueKey":"field_meta.oneOf.1.type","typeLabel":"enum\u003cstring>"},"options":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"uniqueKey":"field_meta.oneOf.1.options.items.[INDEX]","typeLabel":"string"},"description":"The values this column can hold. Between 2 and 12, all different. A document can carry more than one.","isRequired":true,"uniqueKey":"field_meta.oneOf.1.options","typeLabel":"string[]"}},"uniqueKey":"field_meta.oneOf.1","typeLabel":"object"},{"description":"The option list for an `enum` or `multi_enum` column. Send `null`, or omit it, for every other type.","uniqueKey":"field_meta.oneOf.2","typeLabel":"any"},{"type":"null","description":"The option list for an `enum` or `multi_enum` column. Send `null`, or omit it, for every other type.","uniqueKey":"field_meta.oneOf.3","typeLabel":"null"}],"uniqueKey":"field_meta","typeLabel":"object · object · any · null"},"extraction_mode":{"type":"string","enum":["ai","manual"],"default":"ai","description":"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.","uniqueKey":"extraction_mode","typeLabel":"enum\u003cstring>"},"sort_order":{"type":"integer","description":"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.","uniqueKey":"sort_order","typeLabel":"integer"}},"required":["label"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"label":"Renewal notice","field_key":"renewalNotice","instructions":"Extract the number of days notice required to avoid automatic renewal. Return the number of days only.","field_type":"text","field_meta":{"type":"enum","options":["Renewal","New business","Amendment"]},"extraction_mode":"ai","sort_order":123}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"3b3276fe-daad-4235-871c-5154cc1992cc":{"description":"The created column","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"oneOf":[{"type":"string","format":"uuid","description":"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.","isRequired":true,"uniqueKey":"id.oneOf.0","typeLabel":"string\u003cuuid>"},{"type":"null","format":"uuid","description":"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.","isRequired":true,"uniqueKey":"id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"id","typeLabel":"string\u003cuuid> | null"},"field_key":{"type":"string","description":"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","isRequired":true,"uniqueKey":"field_key","typeLabel":"string"},"label":{"type":"string","description":"The column heading shown in the vault table","example":"Renewal notice","isRequired":true,"uniqueKey":"label","typeLabel":"string"},"instructions":{"type":"string","description":"For an `ai` column, the prompt extraction reads each document with. For a `manual`, `import`, or `connector` column, a note to whoever reads the column.","isRequired":true,"uniqueKey":"instructions","typeLabel":"string"},"field_type":{"type":"string","enum":["text","date","date_range","enum","multi_enum","boolean","number","currency","percentage","duration","email","url","list","rich_text","party_list","related_agreement_list"],"description":"The shape of the values in this column. Built-in columns can report `party_list` and `related_agreement_list`, which you cannot set yourself.","isRequired":true,"uniqueKey":"field_type","typeLabel":"enum\u003cstring>"},"field_meta":{"oneOf":[{"type":"object","description":"The option list for an `enum` or `multi_enum` column. Null for every other type.","required":["type","options"],"properties":{"type":{"type":"string","enum":["enum"],"isRequired":true,"uniqueKey":"field_meta.oneOf.0.type","typeLabel":"enum\u003cstring>"},"options":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"uniqueKey":"field_meta.oneOf.0.options.items.[INDEX]","typeLabel":"string"},"description":"The values extraction can assign to this column.","isRequired":true,"uniqueKey":"field_meta.oneOf.0.options","typeLabel":"string[]"},"legacy_options":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"uniqueKey":"field_meta.oneOf.0.legacy_options.items.[INDEX]","typeLabel":"string"},"description":"Values that documents extracted under an older version of this option list still hold. They stay readable and filterable, and extraction never assigns them again.","uniqueKey":"field_meta.oneOf.0.legacy_options","typeLabel":"string[]"}},"isRequired":true,"uniqueKey":"field_meta.oneOf.0","typeLabel":"object"},{"type":"object","description":"The option list for an `enum` or `multi_enum` column. Null for every other type.","required":["type","options"],"properties":{"type":{"type":"string","enum":["multi_enum"],"isRequired":true,"uniqueKey":"field_meta.oneOf.1.type","typeLabel":"enum\u003cstring>"},"options":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200,"uniqueKey":"field_meta.oneOf.1.options.items.[INDEX]","typeLabel":"string"},"description":"The values extraction can assign to this column.","isRequired":true,"uniqueKey":"field_meta.oneOf.1.options","typeLabel":"string[]"}},"isRequired":true,"uniqueKey":"field_meta.oneOf.1","typeLabel":"object"},{"description":"The option list for an `enum` or `multi_enum` column. Null for every other type.","isRequired":true,"uniqueKey":"field_meta.oneOf.2","typeLabel":"any"},{"type":"null","description":"The option list for an `enum` or `multi_enum` column. Null for every other type.","isRequired":true,"uniqueKey":"field_meta.oneOf.3","typeLabel":"null"}],"isRequired":true,"uniqueKey":"field_meta","typeLabel":"object · object · any · null"},"extraction_mode":{"type":"string","enum":["ai","manual","import","connector"],"description":"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. `connector`: values come from a connected document source, which owns the column. You can create `ai` and `manual` columns. An `import` column is created by connecting a spreadsheet in the app. A `connector` column is created when a source such as Ironclad fills it.","isRequired":true,"uniqueKey":"extraction_mode","typeLabel":"enum\u003cstring>"},"kind":{"type":"string","enum":["built_in","system","custom"],"description":"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.","isRequired":true,"uniqueKey":"kind","typeLabel":"enum\u003cstring>"},"editable":{"type":"boolean","description":"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.","isRequired":true,"uniqueKey":"editable","typeLabel":"boolean"},"sort_order":{"oneOf":[{"type":"number","description":"Placement weight for this column, or null for a built-in one. The table orders columns by `sort_order` first and creation time second.","isRequired":true,"uniqueKey":"sort_order.oneOf.0","typeLabel":"number"},{"type":"null","description":"Placement weight for this column, or null for a built-in one. The table orders columns by `sort_order` first and creation time second.","isRequired":true,"uniqueKey":"sort_order.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"sort_order","typeLabel":"number | null"},"created_at":{"oneOf":[{"type":"string","description":"ISO 8601 creation timestamp, or null for a built-in column","isRequired":true,"uniqueKey":"created_at.oneOf.0","typeLabel":"string"},{"type":"null","description":"ISO 8601 creation timestamp, or null for a built-in column","isRequired":true,"uniqueKey":"created_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"created_at","typeLabel":"string | null"},"updated_at":{"oneOf":[{"type":"string","description":"ISO 8601 last-update timestamp, or null for a built-in column","isRequired":true,"uniqueKey":"updated_at.oneOf.0","typeLabel":"string"},{"type":"null","description":"ISO 8601 last-update timestamp, or null for a built-in column","isRequired":true,"uniqueKey":"updated_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"updated_at","typeLabel":"string | null"}},"required":["id","field_key","label","instructions","field_type","field_meta","extraction_mode","kind","editable","sort_order","created_at","updated_at"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","field_key":"renewalNotice","label":"Renewal notice","instructions":"\u003cstring>","field_type":"text","field_meta":{"type":"enum","options":["\u003cstring>"],"legacy_options":["\u003cstring>"]},"extraction_mode":"ai","kind":"built_in","editable":true,"sort_order":123,"created_at":"\u003cstring>","updated_at":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"c009e1d2-3af9-4433-8f48-52fc40cfed42":{"description":"Invalid request body, a `field_key` that is reserved, underivable, or holds a control character, an option list that is not 2 to 12 unique values, or an `ai` column with no instructions","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Error message","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable error code present on some errors (e.g. `RATE_LIMITED`, `PLAN_REQUIRED`, `INSUFFICIENT_CREDITS`, `TRIAL_NOT_STARTED`, `BILLING_NOT_CONFIGURED`). Branch on this rather than the human-readable `error` string.","uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","description":"Additional error details","uniqueKey":"message","typeLabel":"string"},"details":{"type":"object","additionalProperties":{"oneOf":[{},{"type":"null","uniqueKey":"details.additionalProperties.oneOf.1","typeLabel":"null"}],"uniqueKey":"details.additionalProperties","typeLabel":"null"},"description":"Validation error details (for 400 errors)","uniqueKey":"details","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>","details":{}}}},"exampleType":"generated"}},"exampleType":"generated"},"715c6b07-d161-4741-a545-031a6a0a4f82":{"description":"Missing or malformed API key","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Error message","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable error code present on some errors (e.g. `RATE_LIMITED`, `PLAN_REQUIRED`, `INSUFFICIENT_CREDITS`, `TRIAL_NOT_STARTED`, `BILLING_NOT_CONFIGURED`). Branch on this rather than the human-readable `error` string.","uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","description":"Additional error details","uniqueKey":"message","typeLabel":"string"},"details":{"type":"object","additionalProperties":{"oneOf":[{},{"type":"null","uniqueKey":"details.additionalProperties.oneOf.1","typeLabel":"null"}],"uniqueKey":"details.additionalProperties","typeLabel":"null"},"description":"Validation error details (for 400 errors)","uniqueKey":"details","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>","details":{}}}},"exampleType":"generated"}},"exampleType":"generated"},"609a5c68-901c-4456-9379-4e5a74b1dab2":{"description":"Contract Intelligence is not enabled for this account. Contact support to request access., the caller cannot manage this vault's columns, or the vault has reached its 500 column limit","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Error message","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable error code present on some errors (e.g. `RATE_LIMITED`, `PLAN_REQUIRED`, `INSUFFICIENT_CREDITS`, `TRIAL_NOT_STARTED`, `BILLING_NOT_CONFIGURED`). Branch on this rather than the human-readable `error` string.","uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","description":"Additional error details","uniqueKey":"message","typeLabel":"string"},"details":{"type":"object","additionalProperties":{"oneOf":[{},{"type":"null","uniqueKey":"details.additionalProperties.oneOf.1","typeLabel":"null"}],"uniqueKey":"details.additionalProperties","typeLabel":"null"},"description":"Validation error details (for 400 errors)","uniqueKey":"details","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>","details":{}}}},"exampleType":"generated"}},"exampleType":"generated"},"1a146417-5d68-4b81-95c1-1dc4b0734109":{"description":"Vault not found or access denied","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Error message","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable error code present on some errors (e.g. `RATE_LIMITED`, `PLAN_REQUIRED`, `INSUFFICIENT_CREDITS`, `TRIAL_NOT_STARTED`, `BILLING_NOT_CONFIGURED`). Branch on this rather than the human-readable `error` string.","uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","description":"Additional error details","uniqueKey":"message","typeLabel":"string"},"details":{"type":"object","additionalProperties":{"oneOf":[{},{"type":"null","uniqueKey":"details.additionalProperties.oneOf.1","typeLabel":"null"}],"uniqueKey":"details.additionalProperties","typeLabel":"null"},"description":"Validation error details (for 400 errors)","uniqueKey":"details","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>","details":{}}}},"exampleType":"generated"}},"exampleType":"generated"},"d593b322-a5dd-47ac-b06d-07cc314cdf21":{"description":"The vault is archived, or a column with that `field_key` already exists","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Error message","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable error code present on some errors (e.g. `RATE_LIMITED`, `PLAN_REQUIRED`, `INSUFFICIENT_CREDITS`, `TRIAL_NOT_STARTED`, `BILLING_NOT_CONFIGURED`). Branch on this rather than the human-readable `error` string.","uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","description":"Additional error details","uniqueKey":"message","typeLabel":"string"},"details":{"type":"object","additionalProperties":{"oneOf":[{},{"type":"null","uniqueKey":"details.additionalProperties.oneOf.1","typeLabel":"null"}],"uniqueKey":"details.additionalProperties","typeLabel":"null"},"description":"Validation error details (for 400 errors)","uniqueKey":"details","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>","details":{}}}},"exampleType":"generated"}},"exampleType":"generated"},"746c74e6-2ee9-42a1-9193-479b8e279293":{"description":"Vault access is per-user and requires a user-scoped API key (u:gcai_...).","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Error message","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable error code present on some errors (e.g. `RATE_LIMITED`, `PLAN_REQUIRED`, `INSUFFICIENT_CREDITS`, `TRIAL_NOT_STARTED`, `BILLING_NOT_CONFIGURED`). Branch on this rather than the human-readable `error` string.","uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","description":"Additional error details","uniqueKey":"message","typeLabel":"string"},"details":{"type":"object","additionalProperties":{"oneOf":[{},{"type":"null","uniqueKey":"details.additionalProperties.oneOf.1","typeLabel":"null"}],"uniqueKey":"details.additionalProperties","typeLabel":"null"},"description":"Validation error details (for 400 errors)","uniqueKey":"details","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>","details":{}}}},"exampleType":"generated"}},"exampleType":"generated"},"20d44392-0d44-444d-b58b-1ae9f3d1a647":{"description":"Rate limit exceeded. See [Rate Limits](/api-reference/concepts/rate-limits) for the tiers, limits, and how to back off.","headers":{"Retry-After":{"schema":{"type":"string","description":"Seconds to wait before retrying after a rate-limit block.","example":"60"},"required":true,"description":"Seconds to wait before retrying after a rate-limit block."},"RateLimit-Limit":{"schema":{"type":"string","description":"Request quota for the applicable window.","example":"3"},"required":true,"description":"Request quota for the applicable window."},"RateLimit-Remaining":{"schema":{"type":"string","description":"Requests remaining in the current window.","example":"0"},"required":true,"description":"Requests remaining in the current window."},"RateLimit-Reset":{"schema":{"type":"string","description":"Seconds until the quota resets.","example":"60"},"required":true,"description":"Seconds until the quota resets."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Error message","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable error code present on some errors (e.g. `RATE_LIMITED`, `PLAN_REQUIRED`, `INSUFFICIENT_CREDITS`, `TRIAL_NOT_STARTED`, `BILLING_NOT_CONFIGURED`). Branch on this rather than the human-readable `error` string.","uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","description":"Additional error details","uniqueKey":"message","typeLabel":"string"},"details":{"type":"object","additionalProperties":{"oneOf":[{},{"type":"null","uniqueKey":"details.additionalProperties.oneOf.1","typeLabel":"null"}],"uniqueKey":"details.additionalProperties","typeLabel":"null"},"description":"Validation error details (for 400 errors)","uniqueKey":"details","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>","details":{}}}},"exampleType":"generated"}},"exampleType":"generated"},"ceefe766-3f2c-470c-8c59-9bd85bebdb10":{"description":"Internal server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Error message","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable error code present on some errors (e.g. `RATE_LIMITED`, `PLAN_REQUIRED`, `INSUFFICIENT_CREDITS`, `TRIAL_NOT_STARTED`, `BILLING_NOT_CONFIGURED`). Branch on this rather than the human-readable `error` string.","uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","description":"Additional error details","uniqueKey":"message","typeLabel":"string"},"details":{"type":"object","additionalProperties":{"oneOf":[{},{"type":"null","uniqueKey":"details.additionalProperties.oneOf.1","typeLabel":"null"}],"uniqueKey":"details.additionalProperties","typeLabel":"null"},"description":"Validation error details (for 400 errors)","uniqueKey":"details","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>","details":{}}}},"exampleType":"generated"}},"exampleType":"generated"},"5d8e6ec7-1407-42c7-85b2-f384d0cb7834":{"description":"Service temporarily unavailable","headers":{"Retry-After":{"schema":{"type":"string","description":"Seconds to wait before retrying after a transient service outage.","example":"5"},"required":true,"description":"Seconds to wait before retrying after a transient service outage."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Error message","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable error code present on some errors (e.g. `RATE_LIMITED`, `PLAN_REQUIRED`, `INSUFFICIENT_CREDITS`, `TRIAL_NOT_STARTED`, `BILLING_NOT_CONFIGURED`). Branch on this rather than the human-readable `error` string.","uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","description":"Additional error details","uniqueKey":"message","typeLabel":"string"},"details":{"type":"object","additionalProperties":{"oneOf":[{},{"type":"null","uniqueKey":"details.additionalProperties.oneOf.1","typeLabel":"null"}],"uniqueKey":"details.additionalProperties","typeLabel":"null"},"description":"Validation error details (for 400 errors)","uniqueKey":"details","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","code":"\u003cstring>","message":"\u003cstring>","details":{}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"1b7eab2e-c883-415e-99ce-d701c60ff017":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"API key for authentication. Format: `gcai_xxxxxxxxx`\n\nCreate API keys in the GC AI app under Settings → API.","scopes":[],"schemeName":"ApiKeyAuth"}}},"servers":{"2c21f627-fcca-46ae-8404-7077fb0598ec":{"url":"https://app.gc.ai/api/external/v1","description":"Production server"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"Authorization","description":"API key for authentication. Format: `gcai_xxxxxxxxx`\n\nCreate API keys in the GC AI app under Settings → API.","scopes":[],"schemeName":"ApiKeyAuth"},"schema":{"title":"Authorization","type":"string","description":"API key for authentication. Format: `gcai_xxxxxxxxx`\n\nCreate API keys in the GC AI app under Settings → API.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKeyAuth","name":"Authorization"}],"title":"ApiKeyAuth"}]},"originalFileLocation":"api-reference/openapi.yaml"},"subdomain":"gcai","siteName":"GC AI","title":"Add a Column to a Vault - GC AI","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-25T12:20:08.760Z","gitLastModified":"2026-09-25T12:19:50.000Z","originalFileLocation":"api-reference/create-vault-column.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Add a column to a vault\u0026#x27;s table. Adding a column scans nothing. Documents already in the vault keep an empty cell for the new column until a re-scan fills it, which you start from the vault in the app. Add the columns you want before you upload, and every document that arrives afterwards is read against all of them. The new column starts hidden in every saved view of this vault. A saved view is a sharing boundary, so a column created after the view was saved never joins it on its own; a member of the view reveals it there when they want it. field_key is frozen at creation. Omit it and GC AI builds one from the label. Renaming the column later leaves the key alone, so the values already extracted stay attached to it. A vault holds at most 500 columns. Column 501 returns 403 with the message the app shows, and you have to delete a column before adding another. Requires the editor or owner role in the vault and the organization-level permission to manage vaults. Requires a user-scoped API key (u:gcai_...). A vault is shared with named people, so an organization-scoped key has no identity to resolve vault access with.\">\u003cmeta data-mint-head name=\"application-name\" content=\"GC AI\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/gcai/XpTjQtvSBPYuCpWI/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/gcai/XpTjQtvSBPYuCpWI/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/gcai/XpTjQtvSBPYuCpWI/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/gcai/XpTjQtvSBPYuCpWI/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/gcai/XpTjQtvSBPYuCpWI/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/gcai/XpTjQtvSBPYuCpWI/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/gcai/XpTjQtvSBPYuCpWI/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/gcai/XpTjQtvSBPYuCpWI/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/gcai/XpTjQtvSBPYuCpWI/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Add a Column to a Vault - GC AI\">\u003cmeta data-mint-head property=\"og:description\" content=\"Add a column to a vault\u0026#x27;s table. Adding a column scans nothing. Documents already in the vault keep an empty cell for the new column until a re-scan fills it, which you start from the vault in the app. Add the columns you want before you upload, and every document that arrives afterwards is read against all of them. The new column starts hidden in every saved view of this vault. A saved view is a sharing boundary, so a column created after the view was saved never joins it on its own; a member of the view reveals it there when they want it. field_key is frozen at creation. Omit it and GC AI builds one from the label. Renaming the column later leaves the key alone, so the values already extracted stay attached to it. A vault holds at most 500 columns. Column 501 returns 403 with the message the app shows, and you have to delete a column before adding another. Requires the editor or owner role in the vault and the organization-level permission to manage vaults. Requires a user-scoped API key (u:gcai_...). A vault is shared with named people, so an organization-scoped key has no identity to resolve vault access with.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"GC AI\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.gc.ai/api-reference/create-vault-column\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://gcai.mintlify.site/_mintlify/api/og/v2?division=Contract+Intelligence\u0026amp;title=Add+a+Column+to+a+Vault\u0026amp;description=Add+a+column+to+a+vault%27s+table.%0A%0AAdding+a+column+scans+nothing.+Documents+already+in+the+vault+keep+an+empty+cell+for+the+new+column+until+a+re-scan+fills+it%2C+\u0026amp;theme=0fe006a5f9e0d576e50fc869\u0026amp;signature=1c61cdbafbd193b06701fee6470297a980a1e2c60a53c7754163d4026455ee86\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Add a Column to a Vault - GC AI\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Add a column to a vault\u0026#x27;s table. Adding a column scans nothing. Documents already in the vault keep an empty cell for the new column until a re-scan fills it, which you start from the vault in the app. Add the columns you want before you upload, and every document that arrives afterwards is read against all of them. The new column starts hidden in every saved view of this vault. A saved view is a sharing boundary, so a column created after the view was saved never joins it on its own; a member of the view reveals it there when they want it. field_key is frozen at creation. Omit it and GC AI builds one from the label. Renaming the column later leaves the key alone, so the values already extracted stay attached to it. A vault holds at most 500 columns. Column 501 returns 403 with the message the app shows, and you have to delete a column before adding another. Requires the editor or owner role in the vault and the organization-level permission to manage vaults. Requires a user-scoped API key (u:gcai_...). A vault is shared with named people, so an organization-scoped key has no identity to resolve vault access with.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://gcai.mintlify.site/_mintlify/api/og/v2?division=Contract+Intelligence\u0026amp;title=Add+a+Column+to+a+Vault\u0026amp;description=Add+a+column+to+a+vault%27s+table.%0A%0AAdding+a+column+scans+nothing.+Documents+already+in+the+vault+keep+an+empty+cell+for+the+new+column+until+a+re-scan+fills+it%2C+\u0026amp;theme=0fe006a5f9e0d576e50fc869\u0026amp;signature=1c61cdbafbd193b06701fee6470297a980a1e2c60a53c7754163d4026455ee86\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/gcai/XpTjQtvSBPYuCpWI/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"GC AI\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#003047\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.gc.ai/api-reference/create-vault-column\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/create-vault-column.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://gc.ai/#organization\",\"name\":\"GC AI\",\"url\":\"https://gc.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/gcai/0BlqBDRwAhV-CbPw/logo/light.svg?fit=max\u0026auto=format\u0026n=0BlqBDRwAhV-CbPw\u0026q=85\u0026s=d11c2834d42373b30d3f9dc6d3138367\"},\"sameAs\":[\"https://x.com/gcai_co\",\"https://linkedin.com/company/gc-ai\"]},{\"@type\":\"WebSite\",\"@id\":\"https://docs.gc.ai#website\",\"name\":\"GC AI\",\"url\":\"https://docs.gc.ai\",\"publisher\":{\"@id\":\"https://gc.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.gc.ai/api-reference/create-vault-column#webpage\",\"url\":\"https://docs.gc.ai/api-reference/create-vault-column\",\"name\":\"Add a Column to a Vault\",\"description\":\"Add a column to a vault's table. Adding a column scans nothing. Documents already in the vault keep an empty cell for the new column until a re-scan fills it, which you start from the vault in the app. Add the columns you want before you upload, and every document that arrives afterwards is read against all of them. The new column starts hidden in every saved view of this vault. A saved view is a sharing boundary, so a column created after the view was saved never joins it on its own; a member of the view reveals it there when they want it. field_key is frozen at creation. Omit it and GC AI builds one from the label. Renaming the column later leaves the key alone, so the values already extracted stay attached to it. A vault holds at most 500 columns. Column 501 returns 403 with the message the app shows, and you have to delete a column before adding another. Requires the editor or owner role in the vault and the organization-level permission to manage vaults. Requires a user-scoped API key (u:gcai_...). A vault is shared with named people, so an organization-scoped key has no identity to resolve vault access with.\",\"dateModified\":\"2026-09-25T12:19:50.000Z\",\"isPartOf\":{\"@id\":\"https://docs.gc.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.gc.ai/api-reference/create-vault-column#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.gc.ai/api-reference/create-vault-column#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"REST\",\"item\":\"https://docs.gc.ai/api-reference/introduction\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Endpoints\",\"item\":\"https://docs.gc.ai/api-reference/get-async-job\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Contract Intelligence\",\"item\":\"https://docs.gc.ai/api-reference/add-vault-member\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Add a Column to a Vault\",\"item\":\"https://docs.gc.ai/api-reference/create-vault-column\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.gc.ai/api-reference/create-vault-column#apireference\",\"headline\":\"Add a Column to a Vault\",\"name\":\"Add a Column to a Vault\",\"description\":\"Add a column to a vault's table. Adding a column scans nothing. Documents already in the vault keep an empty cell for the new column until a re-scan fills it, which you start from the vault in the app. Add the columns you want before you upload, and every document that arrives afterwards is read against all of them. The new column starts hidden in every saved view of this vault. A saved view is a sharing boundary, so a column created after the view was saved never joins it on its own; a member of the view reveals it there when they want it. field_key is frozen at creation. Omit it and GC AI builds one from the label. Renaming the column later leaves the key alone, so the values already extracted stay attached to it. A vault holds at most 500 columns. Column 501 returns 403 with the message the app shows, and you have to delete a column before adding another. Requires the editor or owner role in the vault and the organization-level permission to manage vaults. Requires a user-scoped API key (u:gcai_...). A vault is shared with named people, so an organization-scoped key has no identity to resolve vault access with.\",\"url\":\"https://docs.gc.ai/api-reference/create-vault-column\",\"mainEntityOfPage\":{\"@id\":\"https://docs.gc.ai/api-reference/create-vault-column#webpage\"},\"dateModified\":\"2026-09-25T12:19:50.000Z\",\"publisher\":{\"@id\":\"https://gc.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.gc.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"GC AI\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"GC AI","nav":{"global":{"anchors":[{"anchor":"Community","icon":"slack","href":"https://gc.ai/slack"},{"anchor":"Blog","icon":"newspaper","href":"https://gc.ai/blog"},{"anchor":"Classes","icon":"graduation-cap","href":"https://gc.ai/classes"}]},"tabs":[{"tab":"Help","pages":[{"title":"Help","href":"/support"}]},{"tab":"API Reference","groups":[{"group":"REST","pages":[{"title":"API Introduction","href":"/api-reference/introduction"},{"title":"REST API surface map","sidebarTitle":"Surface map","href":"/api-reference/rest-surface-map"},{"group":"Concepts","pages":[{"title":"How to Enable","href":"/api-reference/how-to-enable"},{"title":"API Keys","href":"/api-reference/concepts/api-keys"},{"title":"Asynchronous Requests","href":"/api-reference/concepts/async-jobs"},{"title":"Chat Visibility","href":"/api-reference/concepts/chat-visibility"},{"title":"Multi-turn Conversations","href":"/api-reference/concepts/multi-turn"},{"title":"Tool permissions","href":"/api-reference/concepts/tool-permissions"},{"title":"Rate Limits","href":"/api-reference/concepts/rate-limits"},{"title":"Running an example on Replit","href":"/api-reference/concepts/running-on-replit"}]},{"group":"Examples","pages":[{"title":"Contract Risk Heatmap","href":"/api-reference/examples/contract-risk-heatmap"},{"title":"Triage \u0026 Route","href":"/api-reference/examples/triage-and-route"},{"title":"Slack Triage Bot","href":"/api-reference/examples/slack-triage-bot"}]},{"group":"Endpoints","expanded":true,"pages":[{"group":"Async Jobs","pages":[{"title":"Get Async Job Status","openapi":"GET /jobs/{id}","href":"/api-reference/get-async-job"}]},{"group":"Chat","pages":[{"title":"Create Chat Completion","openapi":"POST /chat/completions","href":"/api-reference/create-chat-completion"},{"title":"Materialize an API Chat","openapi":"POST /chat/{id}/materialize","href":"/api-reference/materialize-chat"},{"title":"Search Chats","openapi":"GET /chat/search","href":"/api-reference/search-chats"}]},{"group":"Chats","pages":[{"title":"Create a Public Share Link","openapi":"POST /chats/{id}/share","href":"/api-reference/create-chat-share-link"},{"title":"Delete a Chat","openapi":"DELETE /chats/{id}","href":"/api-reference/delete-chat"},{"title":"Detach a File From a Chat","openapi":"DELETE /chats/{id}/files/{fileId}","href":"/api-reference/detach-file-from-chat"},{"title":"Duplicate a Chat","openapi":"POST /chats/{id}/duplicate","href":"/api-reference/duplicate-chat"},{"title":"Get a Chat","openapi":"GET /chats/{id}","href":"/api-reference/get-chat"},{"title":"List Messages in a Chat","openapi":"GET /chats/{id}/messages","href":"/api-reference/list-chat-messages"},{"title":"List Chats","openapi":"GET /chats","href":"/api-reference/list-chats"},{"title":"Revoke a Public Share Link","openapi":"DELETE /chats/{id}/share","href":"/api-reference/revoke-chat-share-link"},{"title":"Update a Chat","openapi":"PATCH /chats/{id}","href":"/api-reference/update-chat"}]},{"group":"Contract Intelligence","pages":[{"title":"Add a Member to a Vault","openapi":"POST /vaults/{id}/members","href":"/api-reference/add-vault-member"},{"title":"Archive a Vault","openapi":"POST /vaults/{id}/archive","href":"/api-reference/archive-vault"},{"title":"Create a Vault","openapi":"POST /vaults","description":"Create a Contract Intelligence vault. The caller becomes its `owner`, and the vault starts access-controlled, so nobody else can see it until you add members or turn access control off.\n\nA vault created here skips guided setup and is ready for documents right away: upload with `POST /vaults/{id}/documents`, add columns with `POST /vaults/{id}/columns`, and read the extracted table from `GET /vaults/{id}/documents`. In the app a vault waits in guided setup, and documents added meanwhile are stored but not scanned. There is no guided setup over the API, so this endpoint finishes setup as it creates the vault and every upload is scanned as it arrives.\n\nCreating a vault needs the organization-level permission to create vaults, which an organization admin grants. Vault names do not have to be unique.\n\nRequires a user-scoped API key (`u:gcai_...`). A vault is shared with named people, so an organization-scoped key has no identity to resolve vault access with.","href":"/api-reference/create-vault"},{"title":"Add a Column to a Vault","openapi":"POST /vaults/{id}/columns","href":"/api-reference/create-vault-column"},{"title":"Create a Saved View","openapi":"POST /vaults/{id}/views","description":"Create a saved view in a vault. The view is shared with the whole vault the moment it exists: anyone who can read the vault can open it, and anyone with the Manage Views permission can change or delete it.\n\nColumn visibility is stored as a hide list. `hidden_field_keys` names the columns a view hides, so an empty list means the view shows every column the vault has. A column added to the vault later appears in the view until you hide it.\n\nEvery field key has to exist in the vault. Keys in `hidden_field_keys` and `field_order` can also name a system column (`actions`, `fileName`, `relationships`, `extractedAt`, `sourceName`). `sort.field` takes a vault column or one of `fileName`, `extractedAt`, `sourceName`, because those are the only system columns the table can sort by. A filter `field_key` takes a vault column or `__notes__`, the any-column notes filter. Anything else returns `400` naming the keys it could not place, rather than being dropped on the way in and leaving you with a view that ignores half of what you sent.\n\nView names are unique within a vault once trimmed, and the comparison is case sensitive, so `Renewals` and `renewals` can both exist. A name already taken returns `409`.\n\nRequires the `editor` or `owner` role in the vault, the organization-level permission to manage vaults, and the organization-level Manage Views permission. A caller who holds the vault role but not both permissions gets `403`.\n\nRequires a user-scoped API key (`u:gcai_...`). A vault is shared with named people, so an organization-scoped key has no identity to resolve vault access with.","href":"/api-reference/create-vault-view"},{"title":"Delete a Vault","openapi":"DELETE /vaults/{id}","href":"/api-reference/delete-vault"},{"title":"Remove a Column From a Vault","openapi":"DELETE /vaults/{id}/columns/{columnId}","href":"/api-reference/delete-vault-column"},{"title":"Remove a Document From a Vault","openapi":"DELETE /vaults/{id}/documents/{documentId}","href":"/api-reference/delete-vault-document"},{"title":"Delete a Saved View","openapi":"DELETE /vaults/{id}/views/{viewId}","href":"/api-reference/delete-vault-view"},{"title":"Get a Vault","openapi":"GET /vaults/{id}","href":"/api-reference/get-vault"},{"title":"Get One Document Row","openapi":"GET /vaults/{id}/documents/{documentId}","href":"/api-reference/get-vault-document"},{"title":"List a Vault's Columns","openapi":"GET /vaults/{id}/columns","href":"/api-reference/list-vault-columns"},{"title":"Read a Vault's Document Table","openapi":"GET /vaults/{id}/documents","href":"/api-reference/list-vault-documents"},{"title":"List a Vault's Members","openapi":"GET /vaults/{id}/members","href":"/api-reference/list-vault-members"},{"title":"List a Vault's Saved Views","openapi":"GET /vaults/{id}/views","href":"/api-reference/list-vault-views"},{"title":"List Vaults","openapi":"GET /vaults","href":"/api-reference/list-vaults"},{"title":"Remove a Member From a Vault","openapi":"DELETE /vaults/{id}/members/{userId}","href":"/api-reference/remove-vault-member"},{"title":"Restore an Archived Vault","openapi":"POST /vaults/{id}/restore","href":"/api-reference/restore-vault"},{"title":"Restore a Removed Document","openapi":"POST /vaults/{id}/documents/{documentId}/restore","href":"/api-reference/restore-vault-document"},{"title":"Restore the Extracted Value of a Cell","openapi":"POST /vaults/{id}/documents/{documentId}/cells/{fieldKey}/revert","href":"/api-reference/revert-vault-document-cell"},{"title":"Update a Vault","openapi":"PATCH /vaults/{id}","href":"/api-reference/update-vault"},{"title":"Update a Vault Column","openapi":"PATCH /vaults/{id}/columns/{columnId}","href":"/api-reference/update-vault-column"},{"title":"Set a Cell Value by Hand","openapi":"PATCH /vaults/{id}/documents/{documentId}/cells/{fieldKey}","href":"/api-reference/update-vault-document-cell"},{"title":"Change a Member's Role","openapi":"PATCH /vaults/{id}/members/{userId}","href":"/api-reference/update-vault-member-role"},{"title":"Update a Saved View","openapi":"PATCH /vaults/{id}/views/{viewId}","href":"/api-reference/update-vault-view"},{"title":"Add a Document to a Vault","openapi":"POST /vaults/{id}/documents","href":"/api-reference/upload-vault-document"}]},{"group":"Files","pages":[{"title":"Abort a Chunked Upload","openapi":"DELETE /files/uploads/{upload_id}","href":"/api-reference/abort-upload"},{"title":"Complete a Chunked Upload","openapi":"POST /files/uploads/{upload_id}/complete","href":"/api-reference/complete-upload"},{"title":"Get File Status","openapi":"GET /files/{id}","href":"/api-reference/get-file-status"},{"title":"Initiate a Chunked Upload","openapi":"POST /files/uploads","href":"/api-reference/initiate-upload"},{"title":"Search Files","openapi":"GET /files","href":"/api-reference/search-files"},{"title":"Move a File","openapi":"PATCH /files/{id}","href":"/api-reference/update-file"},{"title":"Upload a File","openapi":"POST /files","href":"/api-reference/upload-file"},{"title":"Upload a File Part","openapi":"PUT /files/uploads/{upload_id}/parts/{part_number}","href":"/api-reference/upload-part"}]},{"group":"Folders","pages":[{"title":"Create a Folder","openapi":"POST /folders","href":"/api-reference/create-folder"},{"title":"Delete a Folder","openapi":"DELETE /folders/{id}","href":"/api-reference/delete-folder"},{"title":"Get a Folder","openapi":"GET /folders/{id}","href":"/api-reference/get-folder"},{"title":"List a Folder's Children","openapi":"GET /folders/{id}/children","href":"/api-reference/list-folder-children"},{"title":"List Folders","openapi":"GET /folders","href":"/api-reference/list-folders"},{"title":"Update a Folder","openapi":"PATCH /folders/{id}","href":"/api-reference/update-folder"}]},{"group":"MCP","pages":[{"title":"Provision MCP Client-credentials","openapi":"POST /mcp/credentials","href":"/api-reference/provision-mcp-credentials"}]},{"group":"Playbooks","pages":[{"title":"Create a Playbook","openapi":"POST /playbooks","href":"/api-reference/create-playbook"},{"title":"Add a Check to a Playbook","openapi":"POST /playbooks/{id}/checks","href":"/api-reference/create-playbook-check"},{"title":"Delete a Playbook","openapi":"DELETE /playbooks/{id}","href":"/api-reference/delete-playbook"},{"title":"Remove a Check From a Playbook","openapi":"DELETE /playbooks/{id}/checks/{checkId}","href":"/api-reference/delete-playbook-check"},{"title":"Duplicate a Playbook","openapi":"POST /playbooks/{id}/duplicate","href":"/api-reference/duplicate-playbook"},{"title":"Get a Playbook","openapi":"GET /playbooks/{id}","href":"/api-reference/get-playbook"},{"title":"Get a Check","openapi":"GET /playbooks/{id}/checks/{checkId}","href":"/api-reference/get-playbook-check"},{"title":"List a Playbook's Checks","openapi":"GET /playbooks/{id}/checks","href":"/api-reference/list-playbook-checks"},{"title":"List Playbooks","openapi":"GET /playbooks","href":"/api-reference/list-playbooks"},{"title":"Reorder a Playbook's Checks","openapi":"POST /playbooks/{id}/checks/reorder","href":"/api-reference/reorder-playbook-checks"},{"title":"Run a Playbook Against Uploaded Files","openapi":"POST /playbooks/{id}/run","href":"/api-reference/run-playbook"},{"title":"Update a Playbook","openapi":"PATCH /playbooks/{id}","href":"/api-reference/update-playbook"},{"title":"Update a Check","openapi":"PATCH /playbooks/{id}/checks/{checkId}","href":"/api-reference/update-playbook-check"}]},{"group":"Profiles","pages":[{"title":"Get a Company Profile","openapi":"GET /company-profiles/{id}","href":"/api-reference/get-company-profile"},{"title":"Get the Company Profile","openapi":"GET /company-profile","href":"/api-reference/get-default-company-profile"},{"title":"Identify the Caller","openapi":"GET /me","href":"/api-reference/get-me"},{"title":"Get Your Personal Profile","openapi":"GET /me/profile","href":"/api-reference/get-my-profile"},{"title":"List Company Profiles","openapi":"GET /company-profiles","href":"/api-reference/list-company-profiles"},{"title":"Update a Company Profile","openapi":"PATCH /company-profiles/{id}","href":"/api-reference/update-company-profile"},{"title":"Update the Company Profile","openapi":"PATCH /company-profile","href":"/api-reference/update-default-company-profile"},{"title":"Update Your Personal Profile","openapi":"PATCH /me/profile","href":"/api-reference/update-my-profile"}]},{"group":"Projects","pages":[{"title":"File a Chat Into a Project","openapi":"POST /projects/{id}/chats","href":"/api-reference/attach-chat-to-project"},{"title":"Attach a File to a Project","openapi":"POST /projects/{id}/files","href":"/api-reference/attach-file-to-project"},{"title":"Attach a Folder to a Project","openapi":"POST /projects/{id}/folders","href":"/api-reference/attach-folder-to-project"},{"title":"Create a Project","openapi":"POST /projects","href":"/api-reference/create-project"},{"title":"Delete a Project","openapi":"DELETE /projects/{id}","href":"/api-reference/delete-project"},{"title":"Detach a File From a Project","openapi":"DELETE /projects/{id}/files/{fileId}","href":"/api-reference/detach-file-from-project"},{"title":"Detach a Folder From a Project","openapi":"DELETE /projects/{id}/folders/{folderId}","href":"/api-reference/detach-folder-from-project"},{"title":"Get a Project","openapi":"GET /projects/{id}","href":"/api-reference/get-project"},{"title":"List Chats in a Project","openapi":"GET /projects/{id}/chats","href":"/api-reference/list-project-chats"},{"title":"List Files on a Project","openapi":"GET /projects/{id}/files","href":"/api-reference/list-project-files"},{"title":"List Folders Linked to a Project","openapi":"GET /projects/{id}/folders","href":"/api-reference/list-project-folders"},{"title":"List Projects","openapi":"GET /projects","href":"/api-reference/list-projects"},{"title":"Pin a Project","openapi":"POST /projects/{id}/pin","href":"/api-reference/pin-project"},{"title":"Pin a Project (legacy Star Alias)","openapi":"POST /projects/{id}/star","href":"/api-reference/star-project"},{"title":"Unpin a Project","openapi":"DELETE /projects/{id}/pin","href":"/api-reference/unpin-project"},{"title":"Unpin a Project (legacy Star Alias)","openapi":"DELETE /projects/{id}/star","href":"/api-reference/unstar-project"},{"title":"Update a Project","openapi":"PATCH /projects/{id}","href":"/api-reference/update-project"}]},{"group":"Skills","pages":[{"title":"Create a Skill","openapi":"POST /skills","href":"/api-reference/create-skill"},{"title":"Delete a Skill","openapi":"DELETE /skills/{id}","href":"/api-reference/delete-skill"},{"title":"Get a Skill","openapi":"GET /skills/{id}","href":"/api-reference/get-skill"},{"title":"List Skills","openapi":"GET /skills","href":"/api-reference/list-skills"},{"title":"Update a Skill","openapi":"PATCH /skills/{id}","href":"/api-reference/update-skill"}]},{"group":"Usage","pages":[{"title":"Get Credit Usage","openapi":"GET /credit-usage","href":"/api-reference/get-credit-usage"},{"title":"Get Usage Summary","openapi":"GET /usage","href":"/api-reference/get-usage"}]},{"group":"Utility","pages":[{"title":"Health Check","openapi":"GET /ping","href":"/api-reference/ping"}]}]}]},{"group":"MCP","pages":[{"title":"MCP Introduction","href":"/api-reference/mcp/overview"},{"title":"MCP tools surface map","sidebarTitle":"Surface map","href":"/api-reference/mcp/surface-map"},{"group":"Concepts","pages":[{"title":"Connecting","href":"/api-reference/mcp/connecting"},{"title":"Client credentials (M2M)","href":"/api-reference/mcp/machine-access"}]},{"group":"Tools","expanded":true,"pages":[{"group":"Ask GC AI","pages":[{"title":"Create chat completion","href":"/api-reference/mcp/tools/ask-gcai"},{"title":"Check chat completion status","href":"/api-reference/mcp/tools/ask-gcai-status"},{"title":"Save chat","href":"/api-reference/mcp/tools/ask-gcai-save-chat"}]},{"group":"Files","pages":[{"title":"Get files","href":"/api-reference/mcp/tools/get-files"},{"title":"Upload file","href":"/api-reference/mcp/tools/upload-file"},{"title":"Start file upload","href":"/api-reference/mcp/tools/start-file-upload"},{"title":"Finish file upload","href":"/api-reference/mcp/tools/finish-file-upload"}]},{"group":"Projects","pages":[{"title":"Get projects","href":"/api-reference/mcp/tools/get-projects"},{"title":"Create project","href":"/api-reference/mcp/tools/create-project"},{"title":"Update project","href":"/api-reference/mcp/tools/update-project"},{"title":"Attach files to project","href":"/api-reference/mcp/tools/attach-to-project"},{"title":"Detach files from project","href":"/api-reference/mcp/tools/detach-from-project"}]},{"group":"Playbooks","pages":[{"title":"Get playbooks","href":"/api-reference/mcp/tools/get-playbooks"},{"title":"Create playbook","href":"/api-reference/mcp/tools/create-playbook"},{"title":"Update playbook","href":"/api-reference/mcp/tools/update-playbook"},{"title":"Run a playbook against uploaded files","href":"/api-reference/mcp/tools/run-playbook"},{"title":"Check playbook run status","href":"/api-reference/mcp/tools/run-playbook-status"}]},{"group":"Skills","pages":[{"title":"Get skills","href":"/api-reference/mcp/tools/get-skills"},{"title":"Create skill","href":"/api-reference/mcp/tools/create-skill"},{"title":"Update skill","href":"/api-reference/mcp/tools/update-skill"}]},{"group":"Contract Intelligence","pages":[{"title":"Get vaults","href":"/api-reference/mcp/tools/get-vaults"},{"title":"Get vault documents","href":"/api-reference/mcp/tools/get-vault-documents"},{"title":"Get vault columns","href":"/api-reference/mcp/tools/get-vault-columns"},{"title":"Create vault","href":"/api-reference/mcp/tools/create-vault"},{"title":"Update vault","href":"/api-reference/mcp/tools/update-vault"},{"title":"Create vault column","href":"/api-reference/mcp/tools/create-vault-column"},{"title":"Update vault column","href":"/api-reference/mcp/tools/update-vault-column"},{"title":"Update vault document cell","href":"/api-reference/mcp/tools/update-vault-document-cell"}]}]}]},{"group":"CLI","pages":[{"title":"CLI Introduction","href":"/api-reference/cli/overview"},{"title":"CLI surface map","sidebarTitle":"Surface map","href":"/api-reference/cli/surface-map"},{"group":"Concepts","pages":[{"title":"Authentication","href":"/api-reference/cli/authentication"},{"title":"Output and scripting","href":"/api-reference/cli/output"},{"title":"Async and polling","href":"/api-reference/cli/async"}]},{"group":"Commands","expanded":true,"pages":[{"title":"gcai chat CLI commands","sidebarTitle":"Chat","href":"/api-reference/cli/commands/chat"},{"title":"gcai company CLI commands","sidebarTitle":"Company","href":"/api-reference/cli/commands/company"},{"title":"gcai company-profiles CLI commands","sidebarTitle":"Company-profiles","href":"/api-reference/cli/commands/company-profiles"},{"title":"gcai files CLI commands","sidebarTitle":"Files","href":"/api-reference/cli/commands/files"},{"title":"gcai folders CLI commands","sidebarTitle":"Folders","href":"/api-reference/cli/commands/folders"},{"title":"gcai jobs CLI commands","sidebarTitle":"Jobs","href":"/api-reference/cli/commands/jobs"},{"title":"gcai mcp CLI commands","sidebarTitle":"Mcp","href":"/api-reference/cli/commands/mcp"},{"title":"gcai me CLI commands","sidebarTitle":"Me","href":"/api-reference/cli/commands/me"},{"title":"gcai ping CLI commands","sidebarTitle":"Ping","href":"/api-reference/cli/commands/ping"},{"title":"gcai playbooks CLI commands","sidebarTitle":"Playbooks","href":"/api-reference/cli/commands/playbooks"},{"title":"gcai profile CLI commands","sidebarTitle":"Profile","href":"/api-reference/cli/commands/profile"},{"title":"gcai projects CLI commands","sidebarTitle":"Projects","href":"/api-reference/cli/commands/projects"},{"title":"gcai skills CLI commands","sidebarTitle":"Skills","href":"/api-reference/cli/commands/skills"},{"title":"gcai usage CLI commands","sidebarTitle":"Usage","href":"/api-reference/cli/commands/usage"},{"title":"gcai vaults CLI commands","sidebarTitle":"Vaults","href":"/api-reference/cli/commands/vaults"}]}]}]}]},"basePath":"","title":"Add a Column to a Vault - GC AI","buildId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","deploymentId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-C-hEh3I2.js","utils-CnF4QiUD.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-C7PVNbel.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-8ytevL2A.js","snippetPresets-BT1alx3v.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BLXC0i_W.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CyLIGI9_.js","shallow-DC0lGVIW.js","getApiPlaygroundDisplay-CgDQ85tN.js","CodeSnippet-6-I-Gpv9.js","CodeSnippets-BAk1kDdu.js","Page-C945cI-W.js","getPastedJson-B276RuWN.js","icon-BqP8etTm.js","MethodPill-DM6sbxG1.js","DuplicateIcon-PyJglOaE.js","createIcon-CMeOMAc_.js","DynamicMarkdown-BoyYAA8K.js","SectionHeading-DAYv3gvZ.js","axios-vUo_bRtp.js","Markdown-BhTTmazV.js","clsx-CR-RHrVC.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CBUH0-zX.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BmARFYNC.js"]}