Airtable
Twin of the Airtable Web API.
Twin of the Airtable Web API.
| Covers | api.airtable.com, content.airtable.com |
| Auth | Personal access tokens, OAuth |
| Webhooks | Yes |
| Operations | 103 |
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
fieldscarries only cells that have a value. Null, empty string,false,[]and{}are all absent, so a missing key does not mean a missing field. A0is returned. PATCHmerges the fields you send.PUTclears 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 atypewith nomessageat 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.