Skip to main content
Airtable logo

Overview

Add Airtable to any ModuleX agent or workflow. CRUD against the Airtable REST API (api.airtable.com/v0): base + table discovery via /meta/, record list/get/create/update/delete via /<base>/<table>.
Categories: Project & Task Management · Project Management · Workflow · Automation · Auth: Personal Access Token · Actions: 7

Authentication

Personal Access Token

Authenticate using your Airtable Personal Access Token. Create one at airtable.com/create/tokens

Required Credentials

FieldDescriptionRequiredFormat
Airtable Personal Access TokenYour Airtable Personal Access Token for API authenticationYespatXXXXXXXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Available Actions

Response

{
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "bases": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "title": "Bases",
      "type": "array"
    },
    "count": {
      "default": 0,
      "title": "Count",
      "type": "integer"
    }
  },
  "required": [
    "success"
  ],
  "title": "ListBasesOutput",
  "type": "object"
}

Parameters

base_id
string
required
The ID of the Airtable base (starts with ‘app’)

Response

{
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "tables": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "title": "Tables",
      "type": "array"
    },
    "count": {
      "default": 0,
      "title": "Count",
      "type": "integer"
    },
    "base_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Base Id"
    }
  },
  "required": [
    "success"
  ],
  "title": "ListTablesOutput",
  "type": "object"
}

Parameters

base_id
string
required
The ID of the Airtable base
table_name
string
required
Name or ID of the table
max_records
integer
Maximum number of records to return (1-100) (Default: 100)
filter_formula
string
Airtable formula to filter records
sort_field
string
Field name to sort by
sort_direction
string
Sort direction (‘asc’ or ‘desc’) (Default: asc)
view
string
Name or ID of a view to use for filtering/sorting

Response

{
  "$defs": {
    "AirtableRecord": {
      "additionalProperties": false,
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "fields": {
          "additionalProperties": true,
          "title": "Fields",
          "type": "object"
        },
        "createdTime": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Createdtime"
        }
      },
      "title": "AirtableRecord",
      "type": "object"
    }
  },
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "records": {
      "items": {
        "$ref": "#/$defs/AirtableRecord"
      },
      "title": "Records",
      "type": "array"
    },
    "count": {
      "default": 0,
      "title": "Count",
      "type": "integer"
    },
    "table": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Table"
    },
    "base_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Base Id"
    }
  },
  "required": [
    "success"
  ],
  "title": "ListRecordsOutput",
  "type": "object"
}

Parameters

base_id
string
required
The ID of the Airtable base
table_name
string
required
Name or ID of the table
record_id
string
required
The ID of the record (starts with ‘rec’)

Response

{
  "$defs": {
    "AirtableRecord": {
      "additionalProperties": false,
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "fields": {
          "additionalProperties": true,
          "title": "Fields",
          "type": "object"
        },
        "createdTime": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Createdtime"
        }
      },
      "title": "AirtableRecord",
      "type": "object"
    }
  },
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "record": {
      "anyOf": [
        {
          "$ref": "#/$defs/AirtableRecord"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "success"
  ],
  "title": "GetRecordOutput",
  "type": "object"
}

Parameters

base_id
string
required
The ID of the Airtable base
table_name
string
required
Name or ID of the table
records
array
required
List of {field: value} record objects
typecast
boolean
If true, Airtable converts string values to the appropriate cell types (Default: false)

Response

{
  "$defs": {
    "AirtableRecord": {
      "additionalProperties": false,
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "fields": {
          "additionalProperties": true,
          "title": "Fields",
          "type": "object"
        },
        "createdTime": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Createdtime"
        }
      },
      "title": "AirtableRecord",
      "type": "object"
    }
  },
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "records": {
      "items": {
        "$ref": "#/$defs/AirtableRecord"
      },
      "title": "Records",
      "type": "array"
    },
    "count": {
      "default": 0,
      "title": "Count",
      "type": "integer"
    },
    "table": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Table"
    },
    "base_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Base Id"
    }
  },
  "required": [
    "success"
  ],
  "title": "CreateRecordsOutput",
  "type": "object"
}

Parameters

base_id
string
required
The ID of the Airtable base
table_name
string
required
Name or ID of the table
records
array
required
Records to update; each is {‘id’: ‘rec…’, ‘fields’: {…}} or {‘id’: ‘rec…’, ‘field_a’: value, …}
typecast
boolean
If true, Airtable converts string values to the appropriate cell types (Default: false)

Response

{
  "$defs": {
    "AirtableRecord": {
      "additionalProperties": false,
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Id"
        },
        "fields": {
          "additionalProperties": true,
          "title": "Fields",
          "type": "object"
        },
        "createdTime": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Createdtime"
        }
      },
      "title": "AirtableRecord",
      "type": "object"
    }
  },
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "records": {
      "items": {
        "$ref": "#/$defs/AirtableRecord"
      },
      "title": "Records",
      "type": "array"
    },
    "count": {
      "default": 0,
      "title": "Count",
      "type": "integer"
    },
    "table": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Table"
    },
    "base_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Base Id"
    },
    "updated_count": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Updated Count"
    }
  },
  "required": [
    "success"
  ],
  "title": "UpdateRecordsOutput",
  "type": "object"
}

Parameters

base_id
string
required
The ID of the Airtable base
table_name
string
required
Name or ID of the table
record_ids
array
required
List of record IDs to delete (each starts with ‘rec’)

Response

{
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "deleted_ids": {
      "items": {
        "type": "string"
      },
      "title": "Deleted Ids",
      "type": "array"
    },
    "count": {
      "default": 0,
      "title": "Count",
      "type": "integer"
    },
    "table": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Table"
    },
    "base_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Base Id"
    },
    "deleted_count": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Deleted Count"
    }
  },
  "required": [
    "success"
  ],
  "title": "DeleteRecordsOutput",
  "type": "object"
}

Limits & Quotas

  • Airtable caps batch record operations at 10 records per request; create/update/delete_records split larger inputs automatically.
  • update_records accepts both shapes per record: {"id": "rec…", "fields": {"X": 1}} (canonical) and {"id": "rec…", "X": 1, "Y": 2} (flat top-level fields). Both normalize to the canonical wire shape internally.
  • delete_records uses ?records[]=rec1&records[]=rec2 query parameters (Airtable’s documented batch-delete contract).
  • Partial-batch failures surface as success=False + the count of records that completed before the error (via updated_count / deleted_count).

AgentMail

Apify

Browserbase