Skip to main content

Airtable Component

Manage records, tables and bases in Airtable

Component key: airtable

Description

Airtable is a spreadsheet-database hybrid, with the features of a database but applied to a spreadsheet. This component allows you to list, create, delete, and update records in an Airtable Base.

API Documentation

This component was built using the Airtable Web API.

Airtable developer documentation can be found here.

Connections

API Key and Base ID (Deprecated)

Airtable API keys will be deprecated on Feb 1, 2024. Please elect to use OAuth 2.0 or personal access tokens instead.

InputNotesExample
API Key

You can generate an API key from https://airtable.com/account.

keyvTlNCTqEXAMPLE
Airtable Base ID

Visit https://airtable.com/api and select your workspace. The ID of your base will be printed for you in green.

appGJJCPlhEXAMPLE

OAuth 2.0

To create an OAuth 2.0 app in Airtable, first log in to Airtable and then visit airtable.com/create/oauth.

Register a new OAuth integration, and enter https://oauth2.prismatic.io/callback as the OAuth redirect URL.

Under Scopes, select all scopes that you'll need. Note which scopes you selected, along with the Client ID and Client secret that Airtable provides you. Enter scopes, client ID and client secret into the config wizard designer.

InputNotesExample
Authorize URL

The OAuth 2.0 Authorization URL for Airtable

https://airtable.com/oauth2/v1/authorize
Client ID

Provide the Client ID you received from https://airtable.com/create/oauth.

Client Secret

Provide the Client Secret you received from https://airtable.com/create/oauth.

Scopes

A space-delimited set of one or more scopes to get the user's permission to access.

data.records:read data.records:write data.recordComments:read data.recordComments:write schema.bases:read schema.bases:write webhook:manage
Token URL

The OAuth 2.0 Token URL for Airtable

https://airtable.com/oauth2/v1/token

Personal Access Token

A personal access token can be used for testing an Airtable integration. You can create a personal access token at airtable.com/create/tokens.

InputNotesExample
API Key

You can generate an API key from https://airtable.com/create/tokens

pat0000.ffffffff

Triggers

Webhook

Receive and validate webhook requests from Airtable for webhooks you configure. | key: webhook

{
"payload": {
"headers": {
"Accept": "*/*",
"Content-Type": "application/json",
"Host": "hooks.example.com",
"User-Agent": "ExampleClient (https://api.example.com)"
},
"queryParameters": null,
"rawBody": {
"data": "<data (547 bytes)>"
},
"body": {
"data": [
{
"id": "recExample123",
"fields": {
"Field 1": "Example Value 1",
"Field 2": "Example Value 2"
},
"createdTime": "2023-01-01T00:00:00.000Z"
}
],
"contentType": "application/json"
},
"pathFragment": "",
"webhookUrls": {
"Flow 1": "https://hooks.example.com/trigger/EXAMPLE_TRIGGER_ID_1"
},
"webhookApiKeys": {
"Flow 1": [
"example-api-key-1"
],
"create record": [
"example-api-key-2"
],
"Airtable trigger": [
"example-api-key-3"
]
},
"invokeUrl": "https://hooks.example.com/trigger/EXAMPLE_TRIGGER_ID_1",
"executionId": "ExecutionResult:example-execution-id-1234",
"customer": {
"id": "exampleCustomerId",
"name": "Example Customer",
"externalId": "exampleCustomerExternalId"
},
"instance": {
"id": "exampleInstanceId",
"name": "Example Instance"
},
"user": {
"id": "exampleUserId",
"email": "user@example.com",
"name": "Example User",
"externalId": "exampleUserExternalId"
},
"startedAt": "2023-01-01T00:00:00.000Z",
"globalDebug": false
}
}

Data Sources

Select Base

Select an Airtable base | key: selectBase | type: picklist

InputNotesExample
Connection
Include ID in dropdown menu?

When enabled, the base or table ID will be included next to the dropdown menu options.

false

Select Record

Select a record from a table | key: selectRecord | type: picklist

InputNotesExample
Connection
Base ID

The ID of the base to interact with. Required if you use an OAuth connection, and optional if you specify base ID with a legacy API Key connection.

appLkNDICXNqxSDhG
Include ID in dropdown menu?

When enabled, the base or table ID will be included next to the dropdown menu options.

false
Table Name

Provide the name of the table you would like to access.

myExampleTable

Select Table

Select a table from a base | key: selectTable | type: picklist

InputNotesExample
Connection
Base ID

The ID of the base to interact with. Required if you use an OAuth connection, and optional if you specify base ID with a legacy API Key connection.

appLkNDICXNqxSDhG
Include ID in dropdown menu?

When enabled, the base or table ID will be included next to the dropdown menu options.

false

Select Webhook

Select a webhook from a base | key: selectWebhook | type: picklist

InputNotesExample
Connection
Base ID

The ID of the base to interact with. Required if you use an OAuth connection, and optional if you specify base ID with a legacy API Key connection.

appLkNDICXNqxSDhG
Include ID in dropdown menu?

When enabled, the base or table ID will be included next to the dropdown menu options.

false

Actions

Create Record

Create a new record in the given table | key: createRecord

InputNotesExample
Connection
Base ID

The ID of the base to interact with. Required if you use an OAuth connection, and optional if you specify base ID with a legacy API Key connection.

appLkNDICXNqxSDhG
Dynamic Fields

A field for dynamic inputs that can be configured at deploy time with the use of a key value config variable. Please note that if this input is used, then the default 'Record Fields' inputwill be ignored.

Record Fields

A record is the base equivalent of a row in a spreadsheet.

Table Name

Provide the name of the table you would like to access.

myExampleTable

{
"data": {
"id": "recZ6jmpj3EXAMPLE",
"createdTime": "2022-06-01T17:50:40.000Z",
"fields": {
"Notes": "We finished this and we're ready to move on to our backlog",
"Status": "Complete",
"Start date": "2022-05-31",
"Projects": "Updated sales process",
"Another": 0
}
}
}

Create Webhook

Create a new webhook for a base | key: createWebhook

InputNotesExample
Connection
Base ID

The ID of the base to interact with. Required if you use an OAuth connection, and optional if you specify base ID with a legacy API Key connection.

appLkNDICXNqxSDhG
Notification URL

An optional URL that can receive notification pings.

Specification

A JSON object that describe the types of changes the webhook is interested in.


Delete Record

Delete a record inside of the given table | key: deleteRecord

InputNotesExample
Connection
Base ID

The ID of the base to interact with. Required if you use an OAuth connection, and optional if you specify base ID with a legacy API Key connection.

appLkNDICXNqxSDhG
Record ID

Within Airtable, each record has a unique identifier known as a Record ID. If you are familiar with Entity-Relationship Diagrams or ERDs, then the record id would be the primary key.

rec6r4kNmGDk5D52F
Table Name

Provide the name of the table you would like to access.

myExampleTable

{
"data": {
"deleted": true,
"id": "rec560UJdUtocSouk"
}
}

Delete Webhook

Delete a webhook | key: deleteWebhook

InputNotesExample
Connection
Base ID

The ID of the base to interact with. Required if you use an OAuth connection, and optional if you specify base ID with a legacy API Key connection.

appLkNDICXNqxSDhG
Webhook ID

The ID of the webhook to be deleted.


Get Base Schema

Get all tables schema within a base | key: getBaseSchema

InputNotesExample
Connection
Base ID

The ID of the base to interact with. Required if you use an OAuth connection, and optional if you specify base ID with a legacy API Key connection.

appLkNDICXNqxSDhG

{
"data": {
"tables": [
{
"description": "Apartments to track.",
"fields": [
{
"description": "Name of the apartment",
"id": "fld1VnoyuotSTyxW1",
"name": "Name",
"type": "singleLineText"
},
{
"id": "fldoaIqdn5szURHpw",
"name": "Pictures",
"type": "multipleAttachments"
},
{
"id": "fldumZe00w09RYTW6",
"name": "District",
"options": {
"inverseLinkFieldId": "fldWnCJlo2z6ttT8Y",
"isReversed": false,
"linkedTableId": "tblK6MZHez0ZvBChZ",
"prefersSingleRecordLink": true
},
"type": "multipleRecordLinks"
}
],
"id": "tbltp8DGLhqbUmjK1",
"name": "Apartments",
"primaryFieldId": "fld1VnoyuotSTyxW1",
"views": [
{
"id": "viwQpsuEDqHFqegkp",
"name": "Grid view",
"type": "grid"
}
]
},
{
"fields": [
{
"id": "fldEVzvQOoULO38yl",
"name": "Name",
"type": "singleLineText"
},
{
"description": "Apartments that belong to this district",
"id": "fldWnCJlo2z6ttT8Y",
"name": "Apartments",
"options": {
"inverseLinkFieldId": "fldumZe00w09RYTW6",
"isReversed": false,
"linkedTableId": "tbltp8DGLhqbUmjK1",
"prefersSingleRecordLink": false
},
"type": "multipleRecordLinks"
}
],
"id": "tblK6MZHez0ZvBChZ",
"name": "Districts",
"primaryFieldId": "fldEVzvQOoULO38yl",
"views": [
{
"id": "viwi3KXvrKug2mIBS",
"name": "Grid view",
"type": "grid"
}
]
}
]
}
}

Get Current User

Get user ID and OAuth scopes for the current user | key: getCurrentUser

InputNotesExample
Connection

Get Record

Retrieve a record by ID from the given table | key: getRecord

InputNotesExample
Connection
Base ID

The ID of the base to interact with. Required if you use an OAuth connection, and optional if you specify base ID with a legacy API Key connection.

appLkNDICXNqxSDhG
Record ID

Within Airtable, each record has a unique identifier known as a Record ID. If you are familiar with Entity-Relationship Diagrams or ERDs, then the record id would be the primary key.

rec6r4kNmGDk5D52F
Table Name

Provide the name of the table you would like to access.

myExampleTable

{
"data": {
"id": "recZ6jmpj3EXAMPLE",
"createdTime": "2022-06-01T17:50:40.000Z",
"fields": {
"Notes": "We finished this and we're ready to move on to our backlog",
"Status": "Complete",
"Start date": "2022-05-31",
"Projects": "Updated sales process",
"Another": 0
}
}
}

List Bases

List all bases within the Airtable account | key: listBases

InputNotesExample
Connection

{
"data": [
{
"id": "appLkNDICXNqxSDhG",
"name": "Apartment Hunting",
"permissionLevel": "create"
},
{
"id": "appSW9R5uCNmRmfl6",
"name": "Project Tracker",
"permissionLevel": "edit"
}
]
}

List Records

List all records inside of the given table | key: listRecords

InputNotesExample
Connection
Base ID

The ID of the base to interact with. Required if you use an OAuth connection, and optional if you specify base ID with a legacy API Key connection.

appLkNDICXNqxSDhG
Fields

Enter the names (or IDs) of the fields you would like returned. If you omit this list, all fields will be returned.

Notes
Filter By Formula

Filter results to only records that meet some particular criteria.

AND({Quantity} * {Price} > 100, NOT({Shipped?}))
Table Name

Provide the name of the table you would like to access.

myExampleTable
View

The name or ID of a view in your table. If set, only records in that view will be returned, sorted in the way that the view is sorted.

Grid view

Filtering Records

You can filter for specific records using the Filter By Formula input. For example, if you want only records where the product of the Quantity and Price fields is greater than 100, and the record's Shipped? field is not checked, you can use a formula like this:

AND({Quantity} * {Price} > 100, NOT({Shipped?}))

Full documentation on Airtable formula is available on their support site.

{
"data": [
{
"id": "recZ6jmpj3EXAMPLE",
"createdTime": "2022-06-01T17:50:40.000Z",
"fields": {
"Notes": "We finished this and we're ready to move on to our backlog",
"Status": "Complete",
"Start date": "2022-05-31",
"Projects": "Updated sales process",
"Another": 0
}
}
]
}

List Webhooks

List all webhooks registered for a base | key: listWebhooks

InputNotesExample
Connection
Base ID

The ID of the base to interact with. Required if you use an OAuth connection, and optional if you specify base ID with a legacy API Key connection.

appLkNDICXNqxSDhG

Raw Request

Send raw HTTP request to Airtable | key: rawRequest

InputNotesExample
Connection
Data

The HTTP body payload to send to the URL.

{"exampleKey": "Example Data"}
File Data

File Data to be sent as a multipart form upload.

[{key: "example.txt", value: "My File Contents"}]
File Data File Names

File names to apply to the file data inputs. Keys must match the file data keys above.

Form Data

The Form Data to be sent as a multipart form upload.

[{"key": "Example Key", "value": new Buffer("Hello World")}]
Header

A list of headers to send with the request.

User-Agent: curl/7.64.1
Max Retry Count

The maximum number of retries to attempt. Specify 0 for no retries.

0
Method

The HTTP method to use.

Query Parameter

A list of query parameters to send with the request. This is the portion at the end of the URL similar to ?key1=value1&key2=value2.

Response Type

The type of data you expect in the response. You can request json, text, or binary data.

json
Retry On All Errors

If true, retries on all erroneous responses regardless of type. This is helpful when retrying after HTTP 429 or other 3xx or 4xx errors. Otherwise, only retries on HTTP 5xx and network errors.

false
Retry Delay (ms)

The delay in milliseconds between retries. This is used when 'Use Exponential Backoff' is disabled.

0
Timeout

The maximum time that a client will await a response to its request

2000
URL

Input the path only (/v0/meta/bases/{BASE_ID}/tables), The base URL is already included (https://api.airtable.com). For example, to connect to https://api.airtable.com/v0/meta/bases/{BASE_ID}/tables, only /v0/meta/bases/{BASE_ID}/tables is entered in this field.

/v0/meta/bases/{BASE_ID}/tables
Use Exponential Backoff

Specifies whether to use a pre-defined exponential backoff strategy for retries. When enabled, 'Retry Delay (ms)' is ignored.

false

Refresh Webhook

Extend the life of a webhook | key: refreshWebhook

InputNotesExample
Connection
Base ID

The ID of the base to interact with. Required if you use an OAuth connection, and optional if you specify base ID with a legacy API Key connection.

appLkNDICXNqxSDhG
Webhook ID

The ID of the webhook to be deleted.


Update Record

Update a record's content inside a given table | key: updateRecord

InputNotesExample
Connection
Base ID

The ID of the base to interact with. Required if you use an OAuth connection, and optional if you specify base ID with a legacy API Key connection.

appLkNDICXNqxSDhG
Dynamic Fields

A field for dynamic inputs that can be configured at deploy time with the use of a key value config variable. Please note that if this input is used, then the default 'Record Fields' inputwill be ignored.

Record ID

Within Airtable, each record has a unique identifier known as a Record ID. If you are familiar with Entity-Relationship Diagrams or ERDs, then the record id would be the primary key.

rec6r4kNmGDk5D52F
Record Fields

A record is the base equivalent of a row in a spreadsheet.

Table Name

Provide the name of the table you would like to access.

myExampleTable

{
"data": {
"id": "recZ6jmpj3EXAMPLE",
"createdTime": "2022-06-01T17:50:40.000Z",
"fields": {
"Notes": "We finished this and we're ready to move on to our backlog",
"Status": "Complete",
"Start date": "2022-05-31",
"Projects": "Updated sales process",
"Another": 0
}
}
}