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.
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
}
}
}