| name | airtable |
| version | 1.0.0 |
| description | Read, create, update, and delete Airtable records via the REST API. |
| author | ZeptoClaw |
| license | MIT |
| tags | ["airtable","database","spreadsheet","productivity"] |
| env_needed | [{"name":"AIRTABLE_TOKEN","description":"Personal access token from airtable.com/create/tokens","required":true},{"name":"AIRTABLE_BASE_ID","description":"Base ID (starts with \"app\", from URL or API docs)","required":true},{"name":"AIRTABLE_TABLE_NAME","description":"Table name or ID","required":true}] |
| metadata | {"zeptoclaw":{"emoji":"📊","requires":{"anyBins":["curl","jq"]}}} |
Airtable Skill
CRUD operations on Airtable bases using the REST API.
Setup
- Go to airtable.com/create/tokens → Create Token
- Grant
data.records:read and data.records:write scopes
- Get your Base ID from the URL:
airtable.com/appXXXXXX/tblYYYYYY
export AIRTABLE_TOKEN="patXXX.xxx..."
export AIRTABLE_BASE_ID="appXXXXXX"
export AIRTABLE_TABLE_NAME="Tasks"
List Records
curl -s "https://api.airtable.com/v0/$AIRTABLE_BASE_ID/$AIRTABLE_TABLE_NAME?maxRecords=20" \
-H "Authorization: Bearer $AIRTABLE_TOKEN" \
| jq '.records[] | {id, fields: .fields}'
Filter with formula:
curl -s "https://api.airtable.com/v0/$AIRTABLE_BASE_ID/$AIRTABLE_TABLE_NAME" \
-H "Authorization: Bearer $AIRTABLE_TOKEN" \
--data-urlencode "filterByFormula={Status}='Active'" \
| jq '.records[] | {id, name: .fields.Name, status: .fields.Status}'
Create a Record
curl -s -X POST "https://api.airtable.com/v0/$AIRTABLE_BASE_ID/$AIRTABLE_TABLE_NAME" \
-H "Authorization: Bearer $AIRTABLE_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"records": [{
"fields": {
"Name": "New Item",
"Status": "Todo",
"Priority": "High"
}
}]
}' | jq '.records[0] | {id, fields: .fields}'
Update a Record