Flexible database-spreadsheet hybrid API for reading, writing, and managing structured records across bases and tables. Best for workflows that need to persist, query, or sync structured data without running a dedicated database. Unlike Google Sheets, Airtable exposes typed fields, linked records, and webhooks as first-class primitives.
11 example endpoints available through Lava’s AI Gateway. See the Airtable API docs for full documentation.
This provider requires your own credentials — connect your API key or OAuth account before use.
Endpoints
List records in a table. Supports filterByFormula, sort, view, and pagination.
GET https://api.airtable.com/v0/{base_id}/{table_id_or_name}?maxRecords=100 — Free
const data = await lava . gateway ( 'https://api.airtable.com/v0/{base_id}/{table_id_or_name}?maxRecords=100' , { method: 'GET' });
curl "https://api.lava.so/v1/forward?u=https%3A%2F%2Fapi.airtable.com%2Fv0%2F%7Bbase_id%7D%2F%7Btable_id_or_name%7D%3FmaxRecords%3D100" \
-H "Authorization: Bearer $LAVA_SECRET_KEY "
Retrieve a single record by ID.
GET https://api.airtable.com/v0/{base_id}/{table_id_or_name}/{record_id} — Free
const data = await lava . gateway ( 'https://api.airtable.com/v0/{base_id}/{table_id_or_name}/{record_id}' , { method: 'GET' });
curl "https://api.lava.so/v1/forward?u=https%3A%2F%2Fapi.airtable.com%2Fv0%2F%7Bbase_id%7D%2F%7Btable_id_or_name%7D%2F%7Brecord_id%7D" \
-H "Authorization: Bearer $LAVA_SECRET_KEY "
Create one or more records in a table (up to 10 per call).
POST https://api.airtable.com/v0/{base_id}/{table_id_or_name} — Free
const data = await lava . gateway ( 'https://api.airtable.com/v0/{base_id}/{table_id_or_name}' , {
body: {
"records" : [
{
"fields" : {
"Name" : "Example" ,
"Status" : "Active"
}
}
]
},
});
curl -X POST "https://api.lava.so/v1/forward?u=https%3A%2F%2Fapi.airtable.com%2Fv0%2F%7Bbase_id%7D%2F%7Btable_id_or_name%7D" \
-H "Authorization: Bearer $LAVA_SECRET_KEY " \
-H "Content-Type: application/json" \
-d '{"records":[{"fields":{"Name":"Example","Status":"Active"}}]}'
Update one or more records, preserving fields not included in the request.
PATCH https://api.airtable.com/v0/{base_id}/{table_id_or_name} — Free
const data = await lava . gateway ( 'https://api.airtable.com/v0/{base_id}/{table_id_or_name}' , { method: 'PATCH' , body: { "records" : [{ "id" : "rec123" , "fields" : { "Status" : "Done" }}]} });
curl -X PATCH "https://api.lava.so/v1/forward?u=https%3A%2F%2Fapi.airtable.com%2Fv0%2F%7Bbase_id%7D%2F%7Btable_id_or_name%7D" \
-H "Authorization: Bearer $LAVA_SECRET_KEY " \
-H "Content-Type: application/json" \
-d '{"records":[{"id":"rec123","fields":{"Status":"Done"}}]}'
PUT https://api.airtable.com/v0/{base_id}/{table_id_or_name} — Free
const data = await lava . gateway ( 'https://api.airtable.com/v0/{base_id}/{table_id_or_name}' , {
method: 'PUT' ,
body: {
"performUpsert" : {
"fieldsToMergeOn" : [
"Email"
]
},
"records" : [
{
"fields" : {
"Email" : "a@b.com" ,
"Name" : "Ada"
}
}
]
},
});
curl -X PUT "https://api.lava.so/v1/forward?u=https%3A%2F%2Fapi.airtable.com%2Fv0%2F%7Bbase_id%7D%2F%7Btable_id_or_name%7D" \
-H "Authorization: Bearer $LAVA_SECRET_KEY " \
-H "Content-Type: application/json" \
-d '{"performUpsert":{"fieldsToMergeOn":["Email"]},"records":[{"fields":{"Email":"a@b.com","Name":"Ada"}}]}'
Delete one or more records by ID (pass records[] query param).
DELETE https://api.airtable.com/v0/{base_id}/{table_id_or_name}?records[]={record_id} — Free
const data = await lava . gateway ( 'https://api.airtable.com/v0/{base_id}/{table_id_or_name}?records[]={record_id}' , { method: 'DELETE' });
curl -X DELETE "https://api.lava.so/v1/forward?u=https%3A%2F%2Fapi.airtable.com%2Fv0%2F%7Bbase_id%7D%2F%7Btable_id_or_name%7D%3Frecords%5B%5D%3D%7Brecord_id%7D" \
-H "Authorization: Bearer $LAVA_SECRET_KEY " \
-H "Content-Type: application/json"
List all bases the authorized user has access to.
GET https://api.airtable.com/v0/meta/bases — Free
const data = await lava . gateway ( 'https://api.airtable.com/v0/meta/bases' , { method: 'GET' });
curl "https://api.lava.so/v1/forward?u=https%3A%2F%2Fapi.airtable.com%2Fv0%2Fmeta%2Fbases" \
-H "Authorization: Bearer $LAVA_SECRET_KEY "
Get the schema (tables, fields, views) for a base.
GET https://api.airtable.com/v0/meta/bases/{base_id}/tables — Free
const data = await lava . gateway ( 'https://api.airtable.com/v0/meta/bases/{base_id}/tables' , { method: 'GET' });
curl "https://api.lava.so/v1/forward?u=https%3A%2F%2Fapi.airtable.com%2Fv0%2Fmeta%2Fbases%2F%7Bbase_id%7D%2Ftables" \
-H "Authorization: Bearer $LAVA_SECRET_KEY "
List webhooks registered on a base.
GET https://api.airtable.com/v0/bases/{base_id}/webhooks — Free
const data = await lava . gateway ( 'https://api.airtable.com/v0/bases/{base_id}/webhooks' , { method: 'GET' });
curl "https://api.lava.so/v1/forward?u=https%3A%2F%2Fapi.airtable.com%2Fv0%2Fbases%2F%7Bbase_id%7D%2Fwebhooks" \
-H "Authorization: Bearer $LAVA_SECRET_KEY "
Register a new webhook for changes in a base.
POST https://api.airtable.com/v0/bases/{base_id}/webhooks — Free
const data = await lava . gateway ( 'https://api.airtable.com/v0/bases/{base_id}/webhooks' , {
body: {
"notificationUrl" : "https://example.com/airtable-webhook" ,
"specification" : {
"options" : {
"filters" : {
"dataTypes" : [
"tableData"
]
}
}
}
},
});
curl -X POST "https://api.lava.so/v1/forward?u=https%3A%2F%2Fapi.airtable.com%2Fv0%2Fbases%2F%7Bbase_id%7D%2Fwebhooks" \
-H "Authorization: Bearer $LAVA_SECRET_KEY " \
-H "Content-Type: application/json" \
-d '{"notificationUrl":"https://example.com/airtable-webhook","specification":{"options":{"filters":{"dataTypes":["tableData"]}}}}'
GET https://api.airtable.com/v0/meta/whoami — Free
const data = await lava . gateway ( 'https://api.airtable.com/v0/meta/whoami' , { method: 'GET' });
curl "https://api.lava.so/v1/forward?u=https%3A%2F%2Fapi.airtable.com%2Fv0%2Fmeta%2Fwhoami" \
-H "Authorization: Bearer $LAVA_SECRET_KEY "
Next Steps
All Providers Browse all supported AI providers
Forward Proxy Learn how to construct proxy URLs and authenticate requests