Everything an AI agent can do with the Airtable API.

A reference guide for building AI agents: every method, how to authenticate, and the permissions each one needs.

Endpoints24
API versionv0
Last updated23 June 2026
Orientation

How the Airtable API works.

The Airtable API is how an app or AI agent works with an Airtable base: listing and creating records, updating cell values, reading or editing a base's tables and fields, and leaving comments on a record. Access is granted through a bearer token, a personal access token or an OAuth token, which carries scopes like data.records:read or schema.bases:write and is limited to specific bases, so a call needs both the right scope and access to the base. Airtable can push a notification when records, fields, or tables change, so an integration learns about activity without polling.

24Endpoints
5Capability groups
8Read
16Write
7Permissions
Authentication
Airtable authenticates with a bearer token, either a personal access token created in the developer hub or an OAuth 2.0 access token for acting on behalf of other users. OAuth uses the authorization-code flow with PKCE; its access tokens last 60 minutes and refresh tokens last 60 days. The original account-wide API key was deprecated and shut off on 1 February 2024, so new integrations use a personal access token or OAuth.
Permissions
A token is scoped two ways at once: it holds a set of OAuth scopes (like data.records:read, data.records:write, schema.bases:read, schema.bases:write, data.recordComments:read or :write, webhook:manage, user.email:read) and is limited to specific workspaces or bases. A call needs both the right scope and access to the target base, and a token can never exceed its owner's own permissions. Enterprise admin scopes cover audit logs, SCIM provisioning, and account management.
Versioning
The Web API is unversioned in practice: it lives under a single /v0 path with no dated version header to pin. Changes are additive and announced in a dated changelog rather than minted as new versions, so an integration tracks the changelog for new endpoints and deprecations instead of upgrading a version string.
Data model
Airtable is organized as workspaces that hold bases, each base holding tables of records (rows) with typed fields (columns). Record methods live at /v0/{baseId}/{tableIdOrName}; a base's structure is read and edited under /v0/meta. Records carry an id, a createdTime, and a fields object. Comments attach to a record, and webhooks watch a base for record, field, and table changes.
Connect & authenticate

Connection & authentication methods.

How an app or AI agent connects to Airtable determines what it can reach. There is a route for making calls, a route for receiving change notifications, and a hosted server that exposes Airtable to agents, and each is governed by the token behind it and the scopes and bases that token carries.

Ways to connect

REST API

The Web API answers at https://api.airtable.com/v0. It follows REST semantics, takes and returns JSON, and signals outcomes with standard HTTP status codes. A call authenticates with a bearer token, either a personal access token or an OAuth access token. Record paths are /v0/{baseId}/{tableIdOrName}, and structure (schema) paths sit under /v0/meta.

Best forConnecting an app or AI agent to Airtable.
Governed byThe token and the scopes and bases it carries.
Docs ↗

Webhooks

Airtable can watch a base and send a short notification ping to a registered URL when subscribed changes occur. The ping carries no change detail; the app then calls the list-payloads endpoint with a cursor to collect the actual changes. A webhook is scoped to dataTypes (tableData, tableFields, tableMetadata) and expires after 7 days unless refreshed.

Best forReceiving change notifications at an app or AI agent.
Governed byThe webhook:manage scope, plus the scope for each subscribed dataType.
Docs ↗

MCP server

Airtable runs a hosted Model Context Protocol server at https://mcp.airtable.com/mcp that exposes Airtable to AI assistants like Claude and ChatGPT. It connects with OAuth or a personal access token, and its access mirrors the permissions the connecting user already has in Airtable. It can search and read records, create and update records, create bases, and create tables and fields. It is included on all plans at no extra cost.

Best forConnecting an AI agent to Airtable through MCP.
Governed byThe OAuth grant or personal access token, and the user's own Airtable permissions.
Docs ↗
Authentication

Personal access token

A personal access token is the standard way to connect to Airtable. It is created in the developer hub and is doubly scoped: it carries a chosen set of OAuth scopes (like data.records:read) and is limited to chosen workspaces or bases, so it reaches only what it was granted. It is sent as a bearer token and never exceeds its owner's own permissions.

TokenBearer personal access token (pat...)
Best forServer-side access for a single account or service account.
Docs ↗

OAuth 2.0

OAuth lets a third-party integration act on behalf of any Airtable user who grants it. It uses the authorization-code flow with PKCE (S256) at https://airtable.com/oauth2/v1/authorize, exchanging the code at /oauth2/v1/token. The user picks which scopes and which bases to grant. Access tokens last 60 minutes; refresh tokens last 60 days and are rotated on use.

TokenBearer OAuth access token (+ refresh token)
Best forMulti-user integrations acting on behalf of many accounts.
Docs ↗

API key (deprecated)

The original account-wide API key gave one secret full access to everything the account could reach, with no scoping. Airtable deprecated it in favor of personal access tokens and OAuth, and shut it off on 1 February 2024. New integrations must use a personal access token or OAuth.

TokenLegacy API key (key...), removed
Best forNot for new use; replaced by personal access tokens.
Docs ↗
Endpoint reference

Every Airtable API method.

Filter by method, access, or permission, or search any path. Select a row for version detail, rate limits, the related webhook event, and the source.

MethodEndpointWhat it doesAccessPermissionVersion

Records

List, read, create, update, and delete the records inside a table.7

Returns records with id, createdTime, and fields. Pages with an offset token; supports filterByFormula, sort, view, and fields parameters.

Acts onrecord
Permission (capability)data.records:read
VersionAvailable since the API’s base version
Webhook eventtableData
Rate limitCounts against the 5 req/s per-base limit.

Read-only.

Acts onrecord
Permission (capability)data.records:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitCounts against the 5 req/s per-base limit.

Up to 10 records per request. typecast can coerce string values into the right cell type.

Acts onrecord
Permission (capability)data.records:write
VersionAvailable since the API’s base version
Webhook eventtableData
Rate limitCounts against the 5 req/s per-base limit.

PATCH leaves omitted fields unchanged. The PUT form on the same path is destructive and clears any cell value not included.

Acts onrecord
Permission (capability)data.records:write
VersionAvailable since the API’s base version
Webhook eventtableData
Rate limitCounts against the 5 req/s per-base limit.

Up to 10 records per request. The PUT form is destructive. performUpsert with fieldsToMergeOn (up to three fields) can match and update existing records instead of creating duplicates.

Acts onrecord
Permission (capability)data.records:write
VersionAvailable since the API’s base version
Webhook eventtableData
Rate limitCounts against the 5 req/s per-base limit.

Irreversible.

Acts onrecord
Permission (capability)data.records:write
VersionAvailable since the API’s base version
Webhook eventtableData
Rate limitCounts against the 5 req/s per-base limit.

Up to 10 record ids per request. Irreversible.

Acts onrecord
Permission (capability)data.records:write
VersionAvailable since the API’s base version
Webhook eventtableData
Rate limitCounts against the 5 req/s per-base limit.

Bases, tables & fields

List the bases a token can reach, read a base's structure, and create or edit its tables and fields.7

Returns up to 1,000 bases per page with id, name, and permissionLevel (none to create); pages with an offset.

Acts onbase
Permission (capability)schema.bases:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only structure, not the rows. Returns each table's fields and views.

Acts onbase
Permission (capability)schema.bases:read
VersionAvailable since the API’s base version
Webhook eventtableMetadata
Rate limitStandard limits apply

Also needs workspace access; the token owner must be able to create bases in the target workspace.

Acts onbase
Permission (capability)schema.bases:write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Changes base structure. Requires base-creator permission.

Acts ontable
Permission (capability)schema.bases:write
VersionAvailable since the API’s base version
Webhook eventtableMetadata
Rate limitStandard limits apply

The API cannot delete a table. Requires base-creator permission.

Acts ontable
Permission (capability)schema.bases:write
VersionAvailable since the API’s base version
Webhook eventtableMetadata
Rate limitStandard limits apply

Some field types, like formula, cannot be created via the API. Requires base-creator permission.

Acts onfield
Permission (capability)schema.bases:write
VersionAvailable since the API’s base version
Webhook eventtableFields
Rate limitStandard limits apply

The API cannot delete a field. Requires base-creator permission.

Acts onfield
Permission (capability)schema.bases:write
VersionAvailable since the API’s base version
Webhook eventtableFields
Rate limitStandard limits apply

Record comments

List, create, update, and delete the comments on a record.4

Read-only.

Acts oncomment
Permission (capability)data.recordComments:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitCounts against the 5 req/s per-base limit.

Supports @mentions of collaborators in the text.

Acts oncomment
Permission (capability)data.recordComments:write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitCounts against the 5 req/s per-base limit.

Only the comment's author can edit it.

Acts oncomment
Permission (capability)data.recordComments:write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitCounts against the 5 req/s per-base limit.

Irreversible.

Acts oncomment
Permission (capability)data.recordComments:write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitCounts against the 5 req/s per-base limit.

Webhooks

Create, list, refresh, and delete webhooks, and collect the change payloads they queue.5

Reading the changes also needs the scope for the subscribed dataTypes, like data.records:read for tableData. A webhook expires after 7 days unless refreshed.

Acts onwebhook
Permission (capability)webhook:manage
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Returns each webhook's id, expiry, and last notification result.

Acts onwebhook
Permission (capability)webhook:manage
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Called after a notification ping arrives. Also needs the scope for the subscribed dataTypes to read the change detail. Payloads are retained for 7 days.

Acts onwebhook
Permission (capability)webhook:manage
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

A webhook stops sending notifications once it expires, so a long-lived integration refreshes it.

Acts onwebhook
Permission (capability)webhook:manage
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Requires base-creator permission.

Acts onwebhook
Permission (capability)webhook:manage
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

User & metadata

Read the identity and scopes behind the current token.1

Needs no scope. The email address is returned only when the token also holds user.email:read.

Acts onuser
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply
No endpoints match those filters.
Webhooks

Webhook events.

Airtable can notify an app when something changes in a base, like a record being created or a field being edited. It sends a short notification ping to a registered URL, and the app then calls back to collect the list of changes since it last looked.

EventWhat it signalsTriggered by
tableDataFires when record or cell values change in the base, like a record being created, edited, or deleted. The optional changeTypes filter narrows to add, remove, or update./v0/{baseId}/{tableIdOrName}
/v0/{baseId}/{tableIdOrName}/{recordId}
/v0/{baseId}/{tableIdOrName}
/v0/{baseId}/{tableIdOrName}/{recordId}
/v0/{baseId}/{tableIdOrName}
/v0/{baseId}/{tableIdOrName}
/v0/{baseId}/{tableIdOrName}/{recordId}
tableFieldsFires when a field (column) changes, like one being added or edited./v0/meta/bases/{baseId}/tables/{tableId}/fields
/v0/meta/bases/{baseId}/tables/{tableId}/fields/{fieldId}
tableMetadataFires when a table's metadata changes, like its name or description./v0/meta/bases/{baseId}/tables
/v0/meta/bases/{baseId}/tables/{tableIdOrName}
/v0/meta/bases/{baseId}/tables
No events match that search.
Rate limits & pagination

Rate limits, pagination & request size.

Airtable limits how fast an app can call, by a request rate measured per second against each base and a separate ceiling across everything one token does.

Request rate

Airtable meters requests by rate, not by a per-method cost. Each base allows 5 requests per second, and a single user or service account is capped at 50 requests per second across all its traffic. Going over returns HTTP 429, after which Airtable expects a 30-second wait before requests succeed again. The official JavaScript client retries on 429 automatically; a high-volume integration is advised to add a caching proxy. Write methods that take a batch (create, update, delete) are limited to 10 records per request, which keeps row volume off the request count.

Pagination

List endpoints page with an opaque offset token rather than page numbers. A response includes an offset only when more records remain, and that value is passed back on the next request to fetch the following page. The record list defaults to 100 records per page (pageSize, up to 100), and maxRecords can cap the total returned. The list-bases endpoint pages the same way, returning up to 1,000 bases at a time.

Request size

A batched record write (create, update, or delete) handles at most 10 records per request. filterByFormula and similar parameters are sent in the query string, so an overlong formula can hit URL length limits and is better sent as a POST-style list. Webhook payloads are retained for 7 days, and a webhook itself expires 7 days after creation or its last refresh.

Errors

Status codes & error handling.

The status codes an agent should handle, and what to do about each.

StatusCodeMeaningWhat to do
401AUTHENTICATION_REQUIREDNo valid token was provided, or it has expired (an OAuth access token lasts 60 minutes).Send a valid personal access token, or refresh the OAuth access token using the refresh token.
403INVALID_PERMISSIONS / NOT_AUTHORIZEDThe token is valid but lacks the scope, the base, or the collaborator-level permission the request needs.Add the missing scope to the token, grant it access to the base, or use an account with the right permission level.
404NOT_FOUND / MODEL_ID_NOT_FOUNDThe base, table, or record does not exist, or the token cannot see it.Check the baseId, table, and record id, and confirm the token has access to that base.
422INVALID_REQUEST / UNPROCESSABLE_ENTITYThe request was malformed: a field name or type is wrong, a value does not fit the cell, or more than 10 records were sent in one write.Fix the named field or value, keep batch writes to 10 records, and resend.
429TOO_MANY_REQUESTSThe rate limit was exceeded: more than 5 requests per second to one base, or more than 50 per second across one token.Back off and wait 30 seconds before retrying, then smooth the request rate or add a caching layer.
500INTERNAL_SERVER_ERRORAn error on Airtable's side, which can also appear as 502 or 503. It is rare.Retry with backoff, and contact Airtable support if it persists.
Versioning & freshness

Version history.

Airtable runs a single, unversioned Web API under the /v0 path, with no dated version to pin. Changes are additive and announced in a dated changelog.

Version history

What changed, and when

Latest versionv0
v0Current version
Single unversioned Web API (current)

Airtable runs one Web API under the /v0 path with no dated version to pin. New endpoints and changes are additive and announced in a dated changelog rather than minted as a new version string. Recent additions include enterprise endpoints for retrieving and revoking personal access tokens, base creation from packages, and broader collaborator-retrieval access.

What changed
  • 2026-06-08: Beta endpoint to revoke up to 100 personal access tokens for enterprise-administered users.
  • 2026-05-20: Beta endpoint to retrieve personal access tokens for enterprise-administered users.
  • 2026-04-06: Collaborator-retrieval endpoint extended to all subscription tiers.
2025-08-05Feature update
Enterprise admin scopes generally available

Enterprise admin scopes became available for OAuth integrations without special approval, alongside new enterprise hub and workspace-creation endpoints earlier in the year.

What changed
  • 2025-11-10: Package listing and base-creation-from-package endpoints for enterprise.
  • 2025-08-27: Workspace-creation endpoint for enterprise accounts.
  • 2025-08-05: Enterprise admin scopes generally available for OAuth, no special approval needed.
2024-07-31Feature update
Attachment upload and enterprise hub endpoints

An endpoint to upload an attachment to a cell by sending the file bytes directly was added, along with enterprise hub support and improved OAuth refresh handling.

What changed
  • 2024-11-25: OAuth refresh handling improved to avoid invalidation under load.
  • 2024-11-11: Enterprise hub endpoints for descendant enterprises and workspace/group moves.
  • 2024-07-31: Upload an attachment to a cell via file bytes directly.
  • 2024-04-10: Bulk admin access grant and revoke endpoints.
2024-02-01Requires migration
Legacy API keys shut off

The deprecation period for the original account-wide API key ended and the key was switched off, leaving personal access tokens and OAuth as the only authentication methods.

What changed
  • 2024-02-01: Account-wide API keys removed; personal access tokens and OAuth required.
2023-01-18Feature update
Personal access tokens and OAuth GA

Personal access tokens and OAuth reached general availability, the CSV-sync endpoint shipped, and the deprecation of account-wide API keys began, with shutdown set for 1 February 2024.

What changed
  • 2023-01-18: Personal access tokens and OAuth generally available.
  • 2023-01-18: CSV sync endpoint added.
  • 2023-01-18: API key deprecation period started (shutdown scheduled 2024-02-01).
2022-11-15Feature update
Tokens, webhooks, metadata and comments beta

Airtable launched the beta of personal access tokens, OAuth, service accounts, webhooks, and the metadata and record-comments APIs, the foundation of today's Web API.

What changed
  • 2022-11-15: Beta of personal access tokens, OAuth, and service accounts.
  • 2022-11-15: Beta of webhooks, the metadata (schema) API, and record comments.

There is no version header to set; track the changelog for new endpoints and deprecations.

Airtable Web API changelog ↗
Questions

Airtable API, answered.

Personal access token or OAuth, which should I use?+
A personal access token is the simpler choice when an integration acts as one account or a service account: it is created in the developer hub, given the scopes and bases it needs, and sent as a bearer token. OAuth is for integrations that act on behalf of many different Airtable users, where each user grants access through the authorization-code flow and picks which bases to share. Both are scoped and both stay within the granting user's own permissions; neither can do more than that user can.
What happened to the Airtable API key?+
The original account-wide API key gave a single secret full access to everything the account could reach, with no scoping. Airtable deprecated it and shut it off on 1 February 2024. Every integration now authenticates with a personal access token or OAuth, both of which can be limited to specific scopes and specific bases, so a leaked token reaches far less than an old API key did.
What are the rate limits?+
Each base allows 5 requests per second, and a single user or service account is capped at 50 requests per second across all of its traffic. Exceeding either returns HTTP 429, and Airtable expects a 30-second wait before requests succeed again. Batched writes help here: create, update, and delete each take up to 10 records in one request, so 10 rows cost one request rather than ten.
How do Airtable webhooks work?+
A webhook is created on a base with a specification naming the dataTypes to watch (tableData, tableFields, tableMetadata) and optional change types (add, remove, update). When a matching change happens, Airtable sends a short notification ping to the registered URL. The ping carries no detail; the app then calls the list-payloads endpoint with a cursor to collect the actual changes since it last looked. A webhook expires 7 days after creation or its last refresh, and payloads are kept for 7 days.
Can the API change a base's structure, like adding tables and fields?+
Yes, within limits. The metadata endpoints under /v0/meta can create a base, create a table, update a table's name and description, and create or rename fields, all needing the schema.bases:write scope and base-creator permission. The API cannot delete a table or a field, and some field types such as formula cannot be created through it; those are done in the Airtable interface.
How does pagination work?+
List endpoints use an opaque offset token, not page numbers. A response includes an offset only when more records remain, and that value is sent back on the next request to fetch the following page. The record list returns up to 100 per page (pageSize), and maxRecords can cap the total. Listing bases works the same way, returning up to 1,000 bases at a time.
Does Airtable have an MCP server for AI agents?+
Yes. Airtable runs a hosted Model Context Protocol server at https://mcp.airtable.com/mcp for AI assistants like Claude and ChatGPT. It connects with OAuth or a personal access token, and its access mirrors the permissions the connecting user already has in Airtable. It can search and read records, create and update records, create bases, and create tables and fields. It is included on all plans at no extra cost.
Related

More productivity API guides for agents

What is Bollard AI?

Control what every AI agent can do in Airtable.

Bollard AI sits between a team's AI agents and Airtable. Grant each agent exactly the access it needs, read or write, base by base, and every call is checked and logged.

  • Set read, write, or full access per agent, never a shared Airtable token.
  • Denied by default, so an agent reaches only what has been explicitly allowed.
  • Every call recorded in plain English: who, what, where, and the decision.
Airtable
Ops Agent
Read records ResourceOffReadFull use
Update records ActionOffReadFull use
Edit base structure ResourceOffReadFull use
Per-agent access, set in Bollard AI, not in Airtable