Airtable Component
Manage records, tables and bases in Airtable
Component key: airtableDescription
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
[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
{
"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
{
"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
{
"data": {
"deleted": true,
"id": "rec560UJdUtocSouk"
}
}
Delete Webhook
Delete a webhook | key: deleteWebhook
Get Base Schema
Get all tables schema within a base | key: getBaseSchema
{
"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
{
"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
{
"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.
{
"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
{
"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
}
}
}