skills$openclaw/airtable
mrgoodb3.8k

by mrgoodb

airtable – OpenClaw Skill

airtable is an OpenClaw Skills integration for writing workflows. Create, read, update, and delete records in Airtable bases. Use when you need to manage data in Airtable spreadsheets/databases, sync data, or automate workflows with Airtable as a data store.

3.8k stars8.6k forksSecurity L1
Updated Feb 7, 2026Created Feb 7, 2026writing

Skill Snapshot

nameairtable
descriptionCreate, read, update, and delete records in Airtable bases. Use when you need to manage data in Airtable spreadsheets/databases, sync data, or automate workflows with Airtable as a data store. OpenClaw Skills integration.
ownermrgoodb
repositorymrgoodb/airtable
languageMarkdown
licenseMIT
topics
securityL1
installopenclaw add @mrgoodb/airtable
last updatedFeb 7, 2026

Maintainer

mrgoodb

mrgoodb

Maintains airtable in the OpenClaw Skills directory.

View GitHub profile
File Explorer
2 files
.
_meta.json
269 B
SKILL.md
3.9 KB
SKILL.md

name: airtable description: Create, read, update, and delete records in Airtable bases. Use when you need to manage data in Airtable spreadsheets/databases, sync data, or automate workflows with Airtable as a data store.

Airtable API

Manage Airtable bases, tables, and records via REST API.

Setup

  1. Get API key: https://airtable.com/create/tokens
  2. Create token with scopes: data.records:read, data.records:write
  3. Store token:
mkdir -p ~/.config/airtable
echo "patXXXXXXXXXXXXXX" > ~/.config/airtable/api_key
  1. Find Base ID: Open base → Help → API documentation (starts with app)

List Records

AIRTABLE_KEY=$(cat ~/.config/airtable/api_key)
BASE_ID="appXXXXXXXXXXXXXX"
TABLE_NAME="Table%20Name"  # URL-encoded

curl -s "https://api.airtable.com/v0/${BASE_ID}/${TABLE_NAME}" \
  -H "Authorization: Bearer ${AIRTABLE_KEY}" | jq '.records'

Get Single Record

RECORD_ID="recXXXXXXXXXXXXXX"

curl -s "https://api.airtable.com/v0/${BASE_ID}/${TABLE_NAME}/${RECORD_ID}" \
  -H "Authorization: Bearer ${AIRTABLE_KEY}" | jq

Create Record

curl -s -X POST "https://api.airtable.com/v0/${BASE_ID}/${TABLE_NAME}" \
  -H "Authorization: Bearer ${AIRTABLE_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "records": [{
      "fields": {
        "Name": "New Item",
        "Status": "Todo",
        "Notes": "Created via API"
      }
    }]
  }' | jq

Create Multiple Records

curl -s -X POST "https://api.airtable.com/v0/${BASE_ID}/${TABLE_NAME}" \
  -H "Authorization: Bearer ${AIRTABLE_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "records": [
      {"fields": {"Name": "Item 1", "Status": "Todo"}},
      {"fields": {"Name": "Item 2", "Status": "Done"}}
    ]
  }'

Max 10 records per request.

Update Record

curl -s -X PATCH "https://api.airtable.com/v0/${BASE_ID}/${TABLE_NAME}/${RECORD_ID}" \
  -H "Authorization: Bearer ${AIRTABLE_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "fields": {
      "Status": "Done",
      "Notes": "Updated via API"
    }
  }' | jq

PATCH = partial update, PUT = replace all fields

Delete Record

curl -s -X DELETE "https://api.airtable.com/v0/${BASE_ID}/${TABLE_NAME}/${RECORD_ID}" \
  -H "Authorization: Bearer ${AIRTABLE_KEY}" | jq

Filter Records

# filterByFormula parameter (URL-encoded)
FORMULA="Status%3D%27Todo%27"  # Status='Todo'

curl -s "https://api.airtable.com/v0/${BASE_ID}/${TABLE_NAME}?filterByFormula=${FORMULA}" \
  -H "Authorization: Bearer ${AIRTABLE_KEY}" | jq '.records'

Common formulas:

  • {Status}='Done' - Exact match
  • FIND('keyword', {Notes}) - Contains text
  • {Date} >= TODAY() - Date comparison
  • AND({Status}='Active', {Priority}='High') - Multiple conditions

Sort Records

curl -s "https://api.airtable.com/v0/${BASE_ID}/${TABLE_NAME}?sort%5B0%5D%5Bfield%5D=Created&sort%5B0%5D%5Bdirection%5D=desc" \
  -H "Authorization: Bearer ${AIRTABLE_KEY}" | jq '.records'

Pagination

# First page
RESPONSE=$(curl -s "https://api.airtable.com/v0/${BASE_ID}/${TABLE_NAME}?pageSize=100" \
  -H "Authorization: Bearer ${AIRTABLE_KEY}")

OFFSET=$(echo $RESPONSE | jq -r '.offset // empty')

# Next page (if offset exists)
if [ -n "$OFFSET" ]; then
  curl -s "https://api.airtable.com/v0/${BASE_ID}/${TABLE_NAME}?pageSize=100&offset=${OFFSET}" \
    -H "Authorization: Bearer ${AIRTABLE_KEY}"
fi

Select Specific Fields

curl -s "https://api.airtable.com/v0/${BASE_ID}/${TABLE_NAME}?fields%5B%5D=Name&fields%5B%5D=Status" \
  -H "Authorization: Bearer ${AIRTABLE_KEY}" | jq '.records'

Field Types

  • Text: "value"
  • Number: 123
  • Checkbox: true / false
  • Date: "2024-01-15"
  • Single Select: "Option Name"
  • Multi Select: ["Option 1", "Option 2"]
  • Linked Record: ["recXXX", "recYYY"]
  • Attachment: [{"url": "https://..."}]

Rate Limits

  • 5 requests per second per base
  • Use batch operations (10 records max) to reduce calls
README.md

No README available.

Permissions & Security

Security level L1: Low-risk skills with minimal permissions. Review inputs and outputs before running in production.

Requirements

  • OpenClaw CLI installed and configured.
  • Language: Markdown
  • License: MIT
  • Topics:

FAQ

How do I install airtable?

Run openclaw add @mrgoodb/airtable in your terminal. This installs airtable into your OpenClaw Skills catalog.

Does this skill run locally or in the cloud?

OpenClaw Skills execute locally by default. Review the SKILL.md and permissions before running any skill.

Where can I verify the source code?

The source repository is available at https://github.com/openclaw/skills/tree/main/skills/mrgoodb/airtable. Review commits and README documentation before installing.