Skip to main content
The Tables API works on the same tables you see in Airscale. Use it to push lists into Airscale, keep them in sync with another system, or read results back out. It never spends credits or starts enrichments: run enrichments in the app on the rows you add.
The Tables API is available on paid plans: an active subscription (including one carried over from Airscale V1) or a custom plan. Other workspaces receive 403 with code: "subscription_required". Access returns within a minute of a plan becoming active.
Base URL: https://api.airscale.io. Send your workspace API key as Authorization: Bearer $AIRSCALE_API_KEY on every request. See Authentication to get your key. Browse Tables to manage tables, Row API to insert and read records, and Column API to manage their fields.

How it fits together

  1. Create a table with its columns, or list tables to find an existing one.
  2. Read the column IDs from the response, or from Get table. Row values are always keyed by column ID, so renaming a column never breaks your integration.
  3. Insert rows in batches of up to 1,000, then list rows to read them back.
  4. Update or delete rows by row ID.

Endpoints

Column types and values

Enrichment, formula, date and email-deliverability columns are read-only through the API. Their values appear when you read rows. Enrichment results that are stored separately because of their size are returned as null. In updates, only the cells you send change, and null clears a cell. An invalid value or a read-only column rejects the whole request, and nothing changes.

Limits

Limits are shared by all API keys of a workspace. Daily limits reset at 00:00 UTC. A request that would go over a daily limit returns 429 with code: "daily_quota_exceeded" and uses up nothing, so a smaller batch can still succeed; the message says how much is left today. Allowance is counted when a request is received, so a batch later rejected as invalid still counts. Every 429 and 503 response includes Retry-After in seconds. Wait at least that long before retrying.

Retries

For Create table, Insert rows, Add column and Delete rows (batch), send an optional Idempotency-Key header. Use the same key and identical body when retrying the same operation: the API returns the original response without repeating the mutation. Reusing the key for a different body returns 409 idempotency_conflict. Use a new key for each new operation. PATCH and single-resource DELETE endpoints do not support this header. After an uncertain response, read the current state before retrying so you do not overwrite a later edit. A repeated single-resource delete returns 404 once the resource is gone. Without an idempotency key, retrying Insert rows can create duplicates.

Deletes

Deleted tables and rows disappear from the API and from the app. They are not in any member’s Undo history; contact support to restore them. Deleting a column is permanent: its values are removed from every row and cannot be restored.

Errors

Errors use one shape:
Use code in your code and treat message as an explanation.

Next step

Review Authentication, then create your first table.