Create Field
airtable.create_field
ActionFiles & storageconnection required
Calls the Airtable API with the connection's credentials.
Add a column to an Airtable table, with its type and type-specific options.
Connection
- Required
- Yes — the node will not save without one
- Auth type
- Bearer token
- Providers
- Airtable
- Secret shape
- the Airtable access token
- Resolved by
- config.connection_id, else node.connection_id
Configuration
6 fields, 4 required. A dotted path is a nested object and name[] an array of objects — the editor renders the same tree.
| Field | Type | Required | Default | Constraints | Example |
|---|---|---|---|---|---|
base_id Airtable base id (app…), from the base's API docs URL or airtable.list_bases. | string | Yes | — | — | appAbCdEfGhIjKlMn |
table_id Table id (tbl…) — the metadata endpoints take the id, not the name. | string | Yes | — | — | tblAbCdEfGhIjKlMn |
name The new column's name; it must be unique within the table. | string | Yes | — | — | — |
type The Airtable field type to create. Computed and system types (formula, rollup, count, lookup, autoNumber, created/last-modified, aiText, button) are read-only and can only be added from the Airtable UI. | string | Yes | — | one of "singleLineText", "multilineText", "richText", "email", "url", "phoneNumber", "number", "percent", "currency", "duration", "rating", "checkbox", "date", "dateTime", "singleSelect", "multipleSelects", "singleCollaborator", "multipleCollaborators", "multipleRecordLinks", "multipleAttachments", "barcode" | — |
description An optional description for the column, up to 20,000 characters. | string | No | — | ≤ 20000 characters | — |
options Type-specific settings as a JSON object — a singleSelect needs its 'choices', a currency its 'precision' and 'symbol', a date its 'dateFormat'. | object | No | — | — | {"choices":[{"name":"Open"},{"name":"Done"}]} |
Example configuration
Every value below is the contract’s own example or default — nothing invented.
{
"base_id": "appAbCdEfGhIjKlMn",
"options": {
"choices": [
{
"name": "Open"
},
{
"name": "Done"
}
]
},
"table_id": "tblAbCdEfGhIjKlMn"
}Output
One shape.
result
| Field | Type | Example |
|---|---|---|
id The field id (fld…). | string | — |
name The field name. | string | — |
type The Airtable field type, e.g. singleSelect. | string | — |
description The field description, when it has one. | string | — |
options The type-specific options Airtable stored for the field. | object | — |
{
"description": "",
"id": "",
"name": "",
"options": {},
"type": ""
}Notes
- Needs the 'schema.bases:write' scope on the personal access token.
- Airtable has no delete-field endpoint: a column created here can only be removed from the Airtable UI.
- Airtable caps every batch write at 10 records per request. The batch nodes chunk for you and report how many calls they made in 'batches'; the calls are sequential and not a transaction, so a failure part-way leaves the earlier chunks committed and says how many got through.
- typecast is what lets a plain string be written into a single-select, date or number column. It is on by default, matching airtable.create_record.
- Reads page on an opaque 'offset' token, not a page number: feed the offset a call returns back into the next call while 'has_more' is true.
- The base/table/field nodes use Airtable's metadata API, which needs the 'schema.bases:read' (or ':write') scope on the personal access token. A token minted only for 'data.records:*' gets a 403 from them.
See Create Field run in a workflow.
In a technical demo we add the Airtable connection, drop the node on the canvas and let Workflow Health pre-flight it before the first real run.