import_table_rows, export_table_csv, get_import_status
Bulk CSV import and export for data tables.
Full documentation: Data Tables โ Liquid access, public JSON API, template pages, and more.
Actions
import
Import rows into a table from CSV. The CSV may come from a source_url the server fetches (HTTPS only, SSRF-guarded, โค50 MB) or inline content (small imports only); if both are given, source_url wins.
Parameters:
table_idโ Table UUIDsource_urlโ HTTPS URL of the CSV to import (optional)contentโ Inline CSV content (optional, small imports only)modeโcreate(default) orupsert(match rows by anidcolumn)column_mappingโ Rename CSV columns to table field names, e.g.{ "Product Name" => "name", "Go-Live" => "published_at" }dry_runโ Validate and project results without writing
Publish state is per-row via a reserved published_at CSV column: empty = draft (new rows) / keep current (upsert), - or draft = draft, now = publish now, ISO 8601 = schedule.
โค25,000 rows run synchronously and return created/updated/skipped/failed keyed by data-row number; larger runs are async โ the response returns a run_id, poll with get_import_status. Unknown columns are ignored. Skip-unchanged: identical rows get no new version (publish state is left as-is on upsert).
export
Export a table's rows as CSV. The header is id plus the table's schema fields; the output round-trips through import_table_rows with mode: "upsert" (export โ edit โ reimport).
Parameters:
table_idโ Table UUID
get_import_status
Poll the status of an async import.
Parameters:
run_idโ Import run UUID returned byimport_table_rows
Returns pending/processing/completed/failed, counts, and the full created/updated/skipped/failed result arrays once completed.
OAuth Scopes
| Action | Scope |
|---|---|
| import | row:write |
| export | row:read |
| get_import_status | row:read |