Skip to main content
client.tables manages workspace tables: structured rows you can insert, update, query with SQL, and import or export as CSV. Great for staging data a workflow or agent will read.

Create a table

Column type is one of string | number | boolean | datetime | file | reference. Every table has an implicit id primary key (don’t declare it).

Manage tables

A Table carries sql_name (the identifier to use in SQL), id_type and source ("custom", or "platform" for a read-only platform view).

Import a CSV or Excel file

index is the column’s position in the file. Imported columns are string, number or boolean. An .xlsx path imports a spreadsheet: pick the worksheet with sheet= (the first visible one by default) and drop banner rows above the header with skip_rows=. encoding is "utf-8" (default) or "latin-1".

Columns (on a Table object)

Rows (on a Table object)

Rows are plain dicts keyed by column name (RowValues).
Sort with order_by and descending, and narrow with typed filters. These work on list_rows, list_rows_page and iter_rows; export_csv takes search and filters. list_rows_page also returns the total match count.
op is one of contains, is, is_not, gt, lt, gte, lte, eq, between (with value2), in and not_in (both with a list value).

SQL query

Run read-only SQL across the workspace’s tables:
The query is guarded server-side (read-only, per-tenant). Refer to a table by its identifier, table.sql_name, which is generated from the name when the table is created and never changes. See how the identifier is generated.
Pass limit to page the result server-side. With include_total=True (the default) the response also carries total, which costs a second run of the query to count, so ask for it on the first page only:

Stats & CSV

Every method has an a-prefixed async twin (acreate, aquery, ainsert, aiter_rows, …).