Airtable API

Follow this workflow in order.

1) Validate token access

  • Run GET https://api.airtable.com/v0/meta/bases.
  • Confirm HTTP status and list visible bases.
  • If no expected base appears, check PAT scope and base sharing.

2) Discover tables and fields before writes

  • Run GET https://api.airtable.com/v0/meta/bases/{base_id}/tables.
  • Extract target table ID/name and field names/types.
  • Use exact field names in request payloads.

3) Execute CRUD operations

Use Authorization: Bearer <PAT> and Content-Type: application/json.

  • Create: POST /v0/{base_id}/{table_name} with {"fields": {...}}.
  • Read list: GET /v0/{base_id}/{table_name}.
  • Read one: GET /v0/{base_id}/{table_name}/{record_id}.
  • Update: PATCH /v0/{base_id}/{table_name}/{record_id}.
  • Delete: DELETE /v0/{base_id}/{table_name}/{record_id}.

When running verification tests, delete temporary records unless the user asks to keep them.

4) Upload attachments

For multipleAttachments fields, send an array:

{
  "fields": {
    "Attachments": [
      {
        "url": "https://example.com/file.pdf",
        "filename": "file.pdf"
      }
    ]
  }
}

After upload, verify attachment metadata is present in the response.

5) Handle common errors

  • 401 Unauthorized: token invalid/expired.
  • 403 Forbidden: missing scope or insufficient base permissions.
  • 404 Not Found: wrong base/table/record identifier.
  • 422 Unprocessable Entity: invalid field names or field types.

6) Reporting format

Return concise results with:

  • Base and table used (name + ID).
  • HTTP status for each step.
  • Record ID created/updated/deleted.
  • Final cleanup status.

7) Security

  • Prefer PAT in environment variables.
  • Do not log PAT in plaintext in deliverables.
  • If user shares PAT in chat, recommend rotating it.

For reusable command templates, see references/curl-templates.md.