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.

Airtable developer documentation can be found here.

Connections

[Legacy] Airtable API Key and Base ID

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

Airtable 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 Prismatic's config wizard designer.

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.

Triggers

Webhook

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

Output Example Payload

{
"payload": {
"headers": {
"Accept": "*/*",
"Content-Type": "application/json",
"Host": "hooks.prismatic.io",
"User-Agent": "Airtable (https://api.airtable.com)"
},
"queryParameters": null,
"rawBody": {
"data": "<data (547 bytes)>"
},
"body": {
"data": [
{
"id": "rec12345",
"fields": {
"Field 1": "Value 1",
"Field 2": "Value 2"
},
"createdTime": "2023-01-01T00:00:00.000Z"
}
],
"contentType": "application/json"
},
"pathFragment": "",
"webhookUrls": {
"Flow 1": "https://hooks.example.prismatic.io/trigger/EXAMPLESW5zdGFuY2VGbG93Q29uZmlnOjJjNjkwY2VjLWMwODctNDMxZC05MjVjLTEzODQ2OTkzNzAyMw=="
},
"webhookApiKeys": {
"Flow 1": ["sample-api-key"],
"create record": ["sample-api-key"],
"Airtable trigger": ["sample-api-key"]
},
"invokeUrl": "https://hooks.example.prismatic.io/trigger/EXAMPLESW5zdGFuY2VGbG93Q29uZmlnOjJjNjkwY2VjLWMwODctNDMxZC05MjVjLTEzODQ2OTkzNzAyMw==",
"executionId": "SW5zdGFuY2VFeGVjdXRpb25SZXN1bHQ6NTgwMzdhOTAtMWZkZi00NjFiLTgwOTUtNWY4Njg1YzUxMzY3",
"customer": {
"id": "testCustomerId",
"name": "Test Customer",
"externalId": "testCustomerExternalId"
},
"instance": {
"id": "testInstanceId",
"name": "Test Instance"
},
"user": {
"id": "testUserId",
"email": "testUserEmail@example.com",
"name": "Test User",
"externalId": "testUserExternalId"
}
}
}

Data Sources

Select Base

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


Select Table

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


Actions

Create Record

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

Output Example Payload

{
"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


Delete Record

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

Output Example Payload

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

Delete Webhook

Delete a webhook | key: deleteWebhook


Get Base Schema

Get all tables schema within a base | key: getBaseSchema

Output Example Payload

{
"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


Get Record

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

Output Example Payload

{
"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

Output Example Payload

{
"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

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.

Output Example Payload

{
"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


Raw Request

Send raw HTTP request to Airtable | key: rawRequest


Refresh Webhook

Extend the life of a webhook | key: refreshWebhook


Update Record

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

Output Example Payload

{
"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
}
}
}