Use Airtable to list bases and table schemas, read or write records, and start workflows from record changes. For token setup, see Personal Access Tokens .
Trigger mode handles record creation, updates, and deletion. Inspect payloads or latestPayload for Airtable's raw changes; deleted record IDs are under changedTablesById[tableId].destroyedRecordIds. The airtableChanges array currently consolidates created and updated records and returns changed cell values in changedFields.
Connection guides: Personal access tokens .
Sim requests these scopes when someone connects an Airtable account. For a self-hosted deployment, register your own app with the provider using the settings below. See Integrations and OAuth for setup.
Setting Value Redirect URI <NEXT_PUBLIC_APP_URL>/api/auth/oauth2/callback/airtableEnvironment variables AIRTABLE_CLIENT_ID, AIRTABLE_CLIENT_SECRET
Scope Description data.records:readRead records data.records:writeCreate, edit, and delete records schema.bases:readView bases and tables user.email:readRead email address webhook:manageCreate, view, and delete base webhooks and read their payloads
List bases, list tables (with schema), and create, get, list, update, upsert, or delete records. Use trigger mode to start a workflow when a record is created, updated, or deleted in an Airtable table.
List all bases the authenticated user has access to
Inputs and outputsParameter Type Required Description offsetstring No Pagination offset for retrieving additional bases
Parameter Type Description basesarray Array of Airtable bases with id, name, and permissionLevel ↳ id string Base ID (starts with "app") ↳ name string Base name ↳ permissionLevel string Permission level (none, read, comment, edit, create) metadatajson Pagination and count metadata ↳ offset string Offset for next page of results ↳ totalBases number Number of bases returned
List all tables and their schema in an Airtable base
Inputs and outputsParameter Type Required Description baseIdstring Yes Airtable base ID (starts with "app", e.g., "appXXXXXXXXXXXXXX")
Parameter Type Description tablesarray List of tables in the base with their schema ↳ id string Table ID (starts with "tbl") ↳ name string Table name ↳ description string Table description ↳ primaryFieldId string ID of the primary field ↳ fields array List of fields in the table ↳ id string Field ID (starts with "fld") ↳ name string Field name ↳ type string Field type (singleLineText, multilineText, number, checkbox, singleSelect, multipleSelects, date, dateTime, attachment, linkedRecord, etc.) ↳ description string Field description ↳ options json Field-specific options (choices, etc.) metadatajson Base info and count metadata ↳ baseId string The base ID queried ↳ totalTables number Number of tables in the base
Read records from an Airtable table
Inputs and outputsParameter Type Required Description baseIdstring Yes Airtable base ID (starts with "app", e.g., "appXXXXXXXXXXXXXX") tableIdstring Yes Table ID (starts with "tbl") or table name maxRecordsnumber No Maximum number of records to return (default: all records) filterFormulastring No Formula to filter records (e.g., "({Field Name} = 'Value')")
Parameter Type Description recordsarray Array of retrieved Airtable records ↳ id string Record ID ↳ createdTime string Record creation timestamp ↳ fields json Record field values metadatajson Operation metadata including pagination offset and total records count ↳ offset string Pagination offset for next page ↳ totalRecords number Number of records returned
Retrieve a single record from an Airtable table by its ID
Inputs and outputsParameter Type Required Description baseIdstring Yes Airtable base ID (starts with "app", e.g., "appXXXXXXXXXXXXXX") tableIdstring Yes Table ID (starts with "tbl") or table name recordIdstring Yes Record ID to retrieve (starts with "rec", e.g., "recXXXXXXXXXXXXXX")
Parameter Type Description recordjson Retrieved Airtable record ↳ id string Record ID ↳ createdTime string Record creation timestamp ↳ fields json Record field values metadatajson Operation metadata ↳ recordCount number Number of records returned (always 1)
Write new records to an Airtable table
Inputs and outputsParameter Type Required Description baseIdstring Yes Airtable base ID (starts with "app", e.g., "appXXXXXXXXXXXXXX") tableIdstring Yes Table ID (starts with "tbl") or table name recordsjson Yes Array of records to create, each with a fields object typecastboolean No When true, Airtable automatically converts string values to the field type
Parameter Type Description recordsarray Array of created Airtable records ↳ id string Record ID ↳ createdTime string Record creation timestamp ↳ fields json Record field values metadatajson Operation metadata ↳ recordCount number Number of records created
Update an existing record in an Airtable table by ID
Inputs and outputsParameter Type Required Description baseIdstring Yes Airtable base ID (starts with "app", e.g., "appXXXXXXXXXXXXXX") tableIdstring Yes Table ID (starts with "tbl") or table name recordIdstring Yes Record ID to update (starts with "rec", e.g., "recXXXXXXXXXXXXXX") fieldsjson Yes An object containing the field names and their new values typecastboolean No When true, Airtable automatically converts string values to the field type
Parameter Type Description recordjson Updated Airtable record ↳ id string Record ID ↳ createdTime string Record creation timestamp ↳ fields json Record field values metadatajson Operation metadata ↳ recordCount number Number of records updated (always 1) ↳ updatedFields array List of field names that were updated
Update multiple existing records in an Airtable table
Inputs and outputsParameter Type Required Description baseIdstring Yes Airtable base ID (starts with "app", e.g., "appXXXXXXXXXXXXXX") tableIdstring Yes Table ID (starts with "tbl") or table name recordsjson Yes Array of records to update, each with an id and a fields object typecastboolean No When true, Airtable automatically converts string values to the field type
Parameter Type Description recordsarray Array of updated Airtable records ↳ id string Record ID ↳ createdTime string Record creation timestamp ↳ fields json Record field values metadatajson Operation metadata ↳ recordCount number Number of records updated ↳ updatedRecordIds array List of updated record IDs
Update existing records or create new ones in an Airtable table, matching on the specified merge fields
Inputs and outputsParameter Type Required Description baseIdstring Yes Airtable base ID (starts with "app", e.g., "appXXXXXXXXXXXXXX") tableIdstring Yes Table ID (starts with "tbl") or table name recordsjson Yes Array of records to upsert, each with a fields object fieldsToMergeOnjson Yes Array of field names used to match existing records (max 3). A record is updated when all merge fields match, otherwise it is created. Example: ["Name"] typecastboolean No When true, Airtable automatically converts string values to the field type
Parameter Type Description recordsarray Array of upserted Airtable records ↳ id string Record ID ↳ createdTime string Record creation timestamp ↳ fields json Record field values createdRecordsarray IDs of records that were created updatedRecordsarray IDs of records that were updated metadatajson Operation metadata ↳ recordCount number Total number of records returned ↳ createdCount number Number of records created ↳ updatedCount number Number of records updated
Delete one or more records from an Airtable table by ID
Inputs and outputsParameter Type Required Description baseIdstring Yes Airtable base ID (starts with "app", e.g., "appXXXXXXXXXXXXXX") tableIdstring Yes Table ID (starts with "tbl") or table name recordIdsjson Yes Array of record IDs to delete (each starts with "rec", e.g., ["recXXXXXXXXXXXXXX"]). Pass a single-element array to delete one record.
Parameter Type Description recordsarray Array of deleted Airtable records ↳ id string Record ID ↳ deleted boolean Whether the record was deleted metadatajson Operation metadata ↳ recordCount number Number of records deleted ↳ deletedRecordIds array List of deleted record IDs
Get the schema of all tables, fields, and views in an Airtable base
Inputs and outputsParameter Type Required Description baseIdstring Yes Airtable base ID (starts with "app", e.g., "appXXXXXXXXXXXXXX")
Parameter Type Description tablesjson Array of table schemas with fields and views metadatajson Operation metadata including total tables count
A trigger starts a workflow when a supported event occurs in this service.
Trigger workflow from Airtable record changes like create, update, and delete events (requires Airtable credentials)
Configuration and outputsParameter Type Required Description triggerCredentialsstring Yes This trigger requires airtable credentials to access your account. baseIdstring Yes The ID of the Airtable Base this webhook will monitor. tableIdstring Yes The ID of the table within the Base that the webhook will monitor. includeCellValuesboolean No Enable to receive the complete record data in the payload, not just changes.
Parameter Type Description payloadsarray The payloads of the Airtable changes ↳ timestamp string Timestamp of the change ↳ baseTransactionNumber number Transaction number latestPayloadobject The most recent payload from Airtable ↳ timestamp string ISO 8601 timestamp of the change ↳ baseTransactionNumber number Transaction number ↳ payloadFormat string Payload format version (e.g., v0) ↳ actionMetadata object Metadata about who made the change ↳ source string Source of the change (e.g., client, publicApi) ↳ sourceMetadata object Source metadata including user info ↳ user object User who made the change ↳ id string User ID ↳ email string User email ↳ name string User name ↳ permissionLevel string User permission level ↳ changedTablesById object Tables that were changed (keyed by table ID) ↳ changedRecordsById object Changed records keyed by record ID ↳ current object Current state of the record ↳ cellValuesByFieldId object Cell values keyed by field ID ↳ createdRecordsById object Created records by ID ↳ destroyedRecordIds array Array of destroyed record IDs airtableChangesarray Consolidated record creations and updates. Deleted record IDs remain in raw payloads. ↳ tableId string Table ID ↳ recordId string Record ID ↳ changeType string Type of consolidated change: created or updated ↳ cellValuesByFieldId object Cell values by field ID