Skip to Content
TwinsAirtable

Airtable

Twin of the Airtable Web API.

Twin of the Airtable Web API.

Coversapi.airtable.com, content.airtable.com
AuthPersonal access tokens, OAuth
WebhooksYes
Operations103

Coverage

Records, record comments, base, table and field schema over user-defined tables, attachment upload and download, webhooks with a cursor-addressed change log, and the workspace, view and collaborator reads. Attachment upload lives on content.airtable.com in production and attachment bytes on airtableusercontent.com, and the twin serves both at the vendor’s own paths on the one base URL.

Credentials

Personal access tokens and OAuth access tokens ride the same bearer header. Any well-formed one authenticates by default, so your existing pat… token needs no change. Set auth.mode to enforced to accept only the tokens the world knows. See Credentials.

Airtable does check token shape, in both modes: a string it cannot read is a 401 AUTHENTICATION_REQUIRED, one it can read but does not accept is a 401 UNAUTHORIZED. A token missing a scope gets the same 403 as an object that does not exist, so the two are indistinguishable by design.

Vendor specific details

  • An unknown base, table or record is a 403 INVALID_PERMISSIONS_OR_MODEL_NOT_FOUND, not a 404. A malformed id is a 404 instead, because it never routes.
  • A record’s fields carries only cells that have a value. Null, empty string, false, [] and {} are all absent, so a missing key does not mean a missing field. A 0 is returned.
  • PATCH merges the fields you send. PUT clears every field you did not.
  • Batch creates and updates accept 25 records, not the 10 the documentation says.
  • The error envelope is not one shape. Most errors are {"error": {"type", "message"}}, an off-surface path or wrong method is the bare string {"error": "NOT_FOUND"}, and a bad API version has a type with no message at all.

Its own notes

Once a sandbox is running, this twin serves its own operating notes at {control_url}/veris/manual: the credentials it accepts, the API versions it serves, and the fault statuses you can arm against it. They are generated from the same source as its behaviour, so they cannot drift.