canonical: https://jentic.com/apis/airtable.com/airtable

# Airtable Web API

Jentic publishes the only available OpenAPI specification for Airtable Web API, keeping it validated and agent-ready. Airtable is a cloud database that combines spreadsheet familiarity with relational features such as linked records, formulas, and views. The 21 documented endpoints expose record-level CRUD inside a base/table, metadata for bases, tables, and fields, and webhook subscriptions for change notifications. Authentication uses bearer personal access tokens or OAuth 2.0 tokens with scoped permissions per base.

## For AI agents

Read, create, update, and delete records in Airtable bases, list tables and fields, and subscribe to webhook change events.

## Scope

Does not handle row-level RBAC beyond Airtable's built-in scopes, full-text indexing across bases, or running scripts inside an Airtable extension - use for record CRUD and schema operations only.

## Capabilities

- List records in a table with filterByFormula, sort, and view parameters via GET /{baseId}/{tableIdOrName}
- Create one or more records in a table via POST /{baseId}/{tableIdOrName}
- Update records partially with PATCH or fully with PUT on the table endpoint
- Delete one record by id or many records via the deleteRecords path
- List bases, tables, and fields a token can access through the /meta endpoints
- Subscribe to record changes via webhooks for near real-time syncs

## Use cases

### Spreadsheet-Style Record Sync

Sync rows between Airtable and an external system by listing records with GET /{baseId}/{tableIdOrName} (using filterByFormula and pagination via offset), then upserting changes back with PATCH /{baseId}/{tableIdOrName}/{recordId}. Suitable for keeping CRM, billing, or content data aligned with an Airtable working copy used by non-engineers.

Example prompt: List records in table 'Customers' under base 'appXYZ' with filter '{Status}="Active"' and update each matching record to set field 'LastSyncedAt' to today

### Lightweight Backend for Internal Tools

Use Airtable as the persistence layer for internal apps where non-engineers need to edit data directly. POST creates, PATCH updates, and DELETE removes records - all scoped to a base/table by ID. Schema introspection via /meta/bases and /meta/bases/{baseId}/tables lets the calling app render columns dynamically without hard-coding field names.

Example prompt: Create three new records in table 'Tasks' with fields { 'Name': 'Audit', 'Owner': 'Sam' } and verify all three IDs are returned

### Webhook-Driven Change Listener

Subscribe to Airtable webhooks to react to base, table, or record-level changes without polling. Webhook subscriptions report inserts, updates, and deletes so downstream systems can update caches, trigger notifications, or sync external sources. Manage subscriptions through the /meta/bases/{baseId}/webhooks endpoints.

Example prompt: Create a webhook subscription on base 'appXYZ' that fires when any record in table 'Orders' is created or updated, then verify the subscription is listed

### Schema-Aware Bulk Migrations

Migrate or normalise data inside an Airtable base by introspecting field types via /meta/bases/{baseId}/tables, then issuing PATCH or PUT calls in batches of up to 10 records per call. Useful when consolidating multiple bases, renaming fields, or back-filling new columns.

Example prompt: Read the schema of base 'appXYZ', identify the 'Email' field in table 'Contacts', and patch all records to lowercase the email value

### Agent CRUD via Jentic

Agents perform Airtable CRUD by searching Jentic for the right record-level operation, loading the schema, and executing under a personal access token managed by Jentic. Removes the need for the agent to remember field-specific endpoint paths or pagination semantics.

Example prompt: Search Jentic for 'list records in an airtable table', load the operation, and execute with baseId 'appXYZ' and tableIdOrName 'Customers'

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | /{baseId}/{tableIdOrName} | List records in a table |
| POST | /{baseId}/{tableIdOrName} | Create records |
| PATCH | /{baseId}/{tableIdOrName} | Update records (partial) |
| DELETE | /{baseId}/{tableIdOrName}/deleteRecords | Delete multiple records by IDs |
| GET | /{baseId}/{tableIdOrName}/{recordId} | Get a single record |
| PATCH | /{baseId}/{tableIdOrName}/{recordId} | Update a single record |
| GET | /meta/bases | List accessible bases |
| GET | /meta/bases/{baseId}/tables | List tables in a base |

## Key resources

- **Records** — List, create, update, and delete records in a base/table
- **Bases** — Discover bases the token has access to
- **Tables** — Inspect tables inside a base
- **Fields** — Inspect field metadata for dynamic UIs
- **Webhooks** — Subscribe to change events on a base or table
- **Users** — Authenticated user metadata

## Why Jentic

- **Setup:** Wiring Airtable by hand means handling personal access or OAuth bearer tokens, threading base, table, and record ids through the path, and writing your own retry logic. Through Jentic you install once, import Airtable from the API Directory, store the token once, and your agent calls it.
- **Permission scoping:** Airtable puts the base, table, and record ids in the URL path (/{baseId}/{tableIdOrName}/{recordId}), so a rule can pin your agent to one base or table. You choose the operations it may call, so record deletion is only included if you add it.
- **Credential handling:** Your Airtable token is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'list airtable records' or 'create an airtable record', and Jentic returns the matching operation with its baseId and tableIdOrName schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Notion API** — Database-and-pages model with richer document features but weaker spreadsheet semantics
- **Smartsheet** — Spreadsheet-based work management with stronger project planning features
- **monday.com** — Work management platform with board-style views and rich automations
- **Zapier** — Trigger Zaps from Airtable record changes to fan out into hundreds of other apps

## FAQ

### Why is there no official OpenAPI spec for Airtable Web API?

Airtable does not publish a public OpenAPI specification for the Web API. Jentic generates and maintains this spec so that AI agents and developers can call Airtable Web API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the Airtable Web API use?

Bearer tokens. Use either a personal access token from airtable.com/create/tokens or an OAuth 2.0 access token. Pass it as Authorization: Bearer <token>. Through Jentic the token is stored encrypted and injected at execution time.

### Can I list records with a filter formula?

Yes. GET /{baseId}/{tableIdOrName} accepts filterByFormula, sort, view, pageSize, and offset query parameters. The formula uses the same syntax as Airtable's UI, e.g. AND({Status}="Active", {Region}="EU").

### What are the rate limits for the Airtable Web API?

Airtable enforces 5 requests per second per base. Bursts beyond that return HTTP 429 with a 30-second penalty before further requests succeed. Batch up to 10 records per write call to stay efficient.

### How do I update an Airtable record through Jentic?

Install with pip install jentic, search for 'update an airtable record', load the PATCH /{baseId}/{tableIdOrName}/{recordId} operation, and execute with baseId, tableIdOrName, recordId, and the fields object. Jentic injects the bearer token at execution time.

### Can I subscribe to record changes via webhooks?

Yes. Use the /meta/bases/{baseId}/webhooks endpoints to register a notification URL and a specification of the change types you care about. Airtable will POST change payloads to the URL when matching records are inserted, updated, or deleted.

### Can I limit what my agent is allowed to do with the Airtable Web API?

Yes. Because your Jentic One instance is self-hosted, your own rules decide which operations and credentials the agent may use. Airtable puts the base, table, and record ids in the URL path (/{baseId}/{tableIdOrName}/{recordId}), so you can pin the agent to a single base or table. You also choose which operations it may call, so destructive actions like DELETE /{baseId}/{tableIdOrName}/deleteRecords are only available if you explicitly include them.
