Airtable v2
Provides integration with Airtable to discover bases and table schemas, read records, and create, update, upsert, or delete records in batches.
Revision History
0.0.0.12 - Initial release.
Connection
Use an Airtable Connection with either a personal access token or OAuth authorization. The Connection selects the base and supplies settings shared by its record operations.
| Property | Type | Description |
|---|---|---|
AuthenticationType |
Enum | PersonalAccessToken or OAuth. Defaults to PersonalAccessToken. |
PersonalAccessToken |
Masked | Required when using personal access token authentication. |
ClientId |
String | OAuth integration client identifier. Required for OAuth. |
ClientSecret |
Masked | OAuth client secret. Leave empty only for a registered public integration. |
AccessToken |
Masked | OAuth access token populated during authorization and renewed during refresh. |
RefreshToken |
Masked | Rotating OAuth refresh token populated during authorization. Required for OAuth operations. |
Scope |
String | Space-separated OAuth scopes. Defaults to data.records:read data.records:write schema.bases:read. |
AccessTokenExpiresAtUtc |
String | Hidden, automatically maintained access-token expiry. |
RefreshTokenExpiresAtUtc |
String | Hidden, automatically maintained refresh-token expiry. |
GrantedScopes |
String | Hidden, automatically maintained record of scopes granted by Airtable. |
PkceCodeVerifiers |
Masked | Hidden, automatically maintained authorization verification values. |
BaseIdOrName |
String | Required Airtable base ID or exact, case-sensitive base name. Use the ID if multiple accessible bases have the same name. |
CellFormat |
String | json for native cell values or string for formatted cell values. Defaults to json. |
TimeZone |
String | Time zone for formatted cell values. Defaults to utc; required when CellFormat is string. |
UserLocale |
String | Locale for formatted cell values. Defaults to en; required when CellFormat is string. |
ReturnFieldsByFieldId |
Boolean | Return record fields keyed by Airtable field IDs instead of names. Defaults to false. |
IncludeDateDependencyMetadata |
Boolean | Include date dependency metadata in record reads. Defaults to false. |
IncludeVisibleFieldIds |
Boolean | Include visible field IDs in views returned by Get Base Schema. Defaults to false. |
IncludeCommentCount |
Boolean | Include comment counts when listing records. Defaults to false. |
Typecast |
Boolean | Allow Airtable to convert write values and create select options when permitted. Defaults to false. |
TimeoutSeconds |
Integer | Timeout for each API or token request, in seconds. Must be greater than zero. Defaults to 100. |
Setup Notes
- Run this Node on a Cloud Runtime.
- Grant the credential access to your target base. Use
schema.bases:readfor base and schema discovery, Connection testing, and table-specific templates;data.records:readfor reading records; anddata.records:writefor record writes. Create, update, and upsert operations also read the table schema. - For personal access token authentication, create an Airtable personal access token with the required scopes and base access, then enter it in
PersonalAccessToken. - For OAuth, register the Flowgear callback URI in your Airtable integration, enter its client credentials and scopes, and complete account authorization. The Node uses Authorization Code with PKCE and automatically persists rotated tokens. Reconnect the account if its refresh token expires.
- Set
BaseIdOrName, then test the Connection. The test reads the configured base's schema.
Methods
Select a template for the Method and table you need. Table-specific templates populate TableIdOrName and describe the table's fields. Record Methods use the base selected in the Connection.
List Bases
Lists bases accessible to the credential, following pagination automatically. BaseIdOrName must still be populated in the Connection, although this Method lists all accessible bases.
| Parameter | Type | Description |
|---|---|---|
Connection |
Connection | Airtable Connection used for discovery. |
| Return | Type | Description |
|---|---|---|
Content |
Array | One object per base, including id, name, and permissionLevel. |
Get Base Schema
Retrieves the configured base's tables, including their fields, field options, and views.
| Parameter | Type | Description |
|---|---|---|
Connection |
Connection | Airtable Connection identifying the base. |
| Return | Type | Description |
|---|---|---|
Content |
Array | One object per table, with its schema and views. |
List Records
Lists records from a table, with optional field selection, formula filtering, view filtering, sorting, and a total result limit. The Node retrieves pages automatically.
| Parameter | Type | Description |
|---|---|---|
Connection |
Connection | Airtable Connection identifying the base and response settings. |
Options |
Object | Required TableIdOrName and optional search controls described below. |
The following Properties belong inside Options:
| Property | Type | Description |
|---|---|---|
TableIdOrName |
String | Required table ID or exact table name. |
Fields |
String | Comma-separated field IDs or exact names to return. Leave empty or omit to return all fields. |
FilterByFormula |
String | Optional Airtable formula used to filter records. |
View |
String | Optional view ID or exact name used to filter records. |
Sort |
Array | Optional objects containing Field and Direction. Use a field ID or exact name and asc or desc. |
MaxRecords |
Integer | Optional maximum total number of records to return. Must be greater than zero. Omit to read all matching records. |
| Return | Type | Description |
|---|---|---|
Content |
Array | Airtable record objects, including id, createdTime, and fields. No matches produce zero rows. |
Get Record
Retrieves one record by its Airtable record ID.
| Parameter | Type | Description |
|---|---|---|
Connection |
Connection | Airtable Connection identifying the base and response settings. |
Options |
Object | Required TableIdOrName and RecordId strings. |
| Return | Type | Description |
|---|---|---|
Response |
Object | The Airtable record object, including id, createdTime, and fields. |
Create Records
Creates records in batches of up to ten. Each input row contains writable Airtable fields directly, using the field names or IDs for your table.
| Parameter | Type | Description |
|---|---|---|
Connection |
Connection | Airtable Connection identifying the base and write settings. |
Options |
Object | Required TableIdOrName string. |
Items |
Array | Record objects containing the field values to create. |
| Return | Type | Description |
|---|---|---|
Content |
Array | Created record objects with Flowgear.IsSuccess, Flowgear.Message, and Flowgear.Request. |
Update Records
Partially updates existing records in batches of up to ten. Supply RecordId and the fields to change on each row. Fields omitted from the update retain their values.
| Parameter | Type | Description |
|---|---|---|
Connection |
Connection | Airtable Connection identifying the base and write settings. |
Options |
Object | Required TableIdOrName string. |
Items |
Array | Record objects containing a required RecordId string and writable field values. |
| Return | Type | Description |
|---|---|---|
Content |
Array | Updated record objects with Flowgear.IsSuccess, Flowgear.Message, and Flowgear.Request. |
Upsert Records
Creates or updates records using Airtable's native upsert matching, in batches of up to ten. Choose one to three writable merge fields. Table-specific templates select a supported merge field where available.
| Parameter | Type | Description |
|---|---|---|
Connection |
Connection | Airtable Connection identifying the base and write settings. |
Options |
Object | Required TableIdOrName and FieldsToMergeOn strings. FieldsToMergeOn contains one to three comma-separated field IDs or exact names. |
Items |
Array | Record objects containing writable fields and their merge values. An optional RecordId can identify an existing record directly. |
| Return | Type | Description |
|---|---|---|
Content |
Array | Record objects with UpsertAction set to Created or Updated, plus Flowgear.IsSuccess, Flowgear.Message, and Flowgear.Request. |
Delete Records
Deletes records by ID in batches of up to ten.
| Parameter | Type | Description |
|---|---|---|
Connection |
Connection | Airtable Connection identifying the base. |
Options |
Object | Required TableIdOrName string. |
Items |
Array | Objects containing a required RecordId string. |
| Return | Type | Description |
|---|---|---|
Content |
Array | Deletion results containing id and deleted, plus Flowgear.IsSuccess, Flowgear.Message, and Flowgear.Request. |
Usage Notes
- Read Methods preserve Airtable response fields without adding a
Flowgearobject. Write Methods return one result per processed input row;Flowgear.Requestcontains the original row. - Record reads return cell values inside
fields. Create, update, and upsert inputs expose writable fields directly on each row. A nestedFieldsobject is also accepted; when present, it supplies the write fields instead of the direct properties. - Enter comma-separated lists without extra spaces unless those spaces belong to the value. For example,
Name,Statusselects two fields;Name, Statusincludes a leading space in the second field name. Table-specific templates also use comma-separated strings for supported list-valued fields, such as multiple-select choices and linked record IDs. - The first read or write batch completes before results are streamed to downstream Nodes. Setup, first-page, and first-batch failures stop the Method. Later invalid input rows and handled Airtable business errors produce failed
Flowgearresults and allow later items to continue. Authentication, exhausted throttling, and other unhandled failures can still stop processing. - Inspect
Flowgear.IsSuccessandFlowgear.Messageafter writes. Airtable attachment partial-success responses retain the returned record anddetailsbut setFlowgear.IsSuccesstofalse. - The Node handles pagination, batches writes, throttles request starts, and applies bounded retries. You do not need to supply page offsets or split
Itemsinto groups of ten.
Examples
These examples assume your base contains a Tasks table with writable Name and Status fields. Replace table names, field names, and record IDs with values from your base.
List open tasks
Use List Records with the following Options to return up to 100 open tasks, selecting two fields and sorting by name:
{
"TableIdOrName": "Tasks",
"Fields": "Name,Status",
"FilterByFormula": "{Status}='Open'",
"Sort": [
{ "Field": "Name", "Direction": "asc" }
],
"MaxRecords": 100
}
Create and update a task
Use Create Records with these Options:
{
"TableIdOrName": "Tasks"
}
Supply these Items. If Status is a select field, ensure Open is an available option or enable Typecast where your Airtable permissions allow creating options.
[
{ "Name": "Review order", "Status": "Open" }
]
To update that task, use Update Records with the same Options. Set RecordId to the id returned by the create operation and supply only the fields to change:
[
{ "RecordId": "recXXXXXXXXXXXXXX", "Status": "Closed" }
]
Ensure Closed is also an available value for your field. The omitted Name field retains its existing value.
Known Issues
- A table can appear in the template list for a write Method but not load a template when it has no usable writable fields or, for upserts, no supported merge field. Supported merge field types include text, long text, number, single select, multiple select, and date.