# Tables (/cli/tables)





Manage tables, rows, schemas, views, enrichment runs, imports, and exports.

`sim tables` is also spelled `sim table`.

These commands accept the [global options](/cli/commands#global-options).

## Tables [#tables]

### List tables [#list-tables]

```bash
sim tables list [options]
```

**Options**

<CommandTable>
  | Option | Required | Description |
  | - | - | - |
  | `--scope <value>` | No | Which lifecycle set to list: `active` (default) for live tables, `archived` for tables a delete archived and a table restore can bring back. `folderPath` resolves against active folders only, so pairing it with `scope=archived` returns an empty page when the containing folder was archived too. Accepted values: `active`, `archived`. |
  | `--folder <value>` | No | Folder path as shown in the app; the leading / is optional. |
  | `--search <value>` | No | Case-insensitive substring match against the resource name. |
  | `--sort-by <value>` | No | Field used to sort the result. Do not rely on case-insensitive ordering when sorting by `name`. Defaults to "createdAt". Accepted values: `name`, `createdAt`, `updatedAt`. |
  | `--sort-order <value>` | No | Sort direction. Defaults to "asc". Accepted values: `asc`, `desc`. |
  | `--limit <n>` | No | Maximum items to return (0 for everything). Defaults to `0`. |
</CommandTable>

API request and response schemas: [listTables](/api-reference/tables/listTables).

### Get table [#get-table]

```bash
sim tables get <tableId>
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
</CommandTable>

API request and response schemas: [getTable](/api-reference/tables/getTable).

### Create table [#create-table]

```bash
sim tables create [options]
```

**Options**

<CommandTable>
  | Option | Required | Description |
  | - | - | - |
  | `--name <value>` | Yes | Identifier: letters, numbers, and underscores; cannot start with a number. |
  | `--description <value>` | No | Optional table description. |
  | `--schema <json\|@file>` | Yes | Table schema: \{"columns":\[\{"name":"email","type":"string"}]} (JSON, or @path / @- to read a file or stdin). |
  | `--folder <value>` | No | Folder path as shown in the app; the leading / is optional. |
</CommandTable>

API request and response schemas: [createTable](/api-reference/tables/createTable).

### Update table [#update-table]

```bash
sim tables update <tableId> [options]
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
</CommandTable>

**Options**

<CommandTable>
  | Option | Required | Description |
  | - | - | - |
  | `--name <value>` | No | Identifier: letters, numbers, and underscores; cannot start with a number. |
  | `--description <value>` | No | Replacement table description, or null to clear it. (--description null sends the word, not JSON null). |
  | `--folder <value>` | No | Folder path as shown in the app; the leading / is optional. |
</CommandTable>

API request and response schemas: [updateTable](/api-reference/tables/updateTable).

### Move tables and folders [#move-tables-and-folders]

```bash
sim tables move [options]
```

**Options**

<CommandTable>
  | Option | Required | Description |
  | - | - | - |
  | `--table-ids <json\|@file>` | No | Tables to move, by identifier. Defaults to \[]. (JSON, or @path / @- to read a file or stdin). |
  | `--folder <value...>` | No | Table folders to move, by path as shown in the app; the leading / is optional (space-separated, or @path / @- with one value per line; @@value for a literal leading @). |
  | `--to <value>` | No | Destination folder path; omit for root. |
</CommandTable>

API request and response schemas: [moveTables](/api-reference/tables/moveTables).

### Move a table to a folder [#move-a-table-to-a-folder]

```bash
sim tables mv <tableId> <folder>
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
  | `folder` | Yes | Folder path as shown in the app; the leading / is optional |
</CommandTable>

API request and response schemas: [updateTable](/api-reference/tables/updateTable).

### Delete table [#delete-table]

This archives the table and all of its rows; restore with `tables restore`.

```bash
sim tables delete <tableId> [options]
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
</CommandTable>

**Options**

<CommandTable>
  | Option | Required | Description |
  | - | - | - |
  | `-y, --yes` | Yes | Confirm this operation. |
</CommandTable>

API request and response schemas: [deleteTable](/api-reference/tables/deleteTable).

### Bulk delete tables and folders [#bulk-delete-tables-and-folders]

This archives the selected tables and folders, including their rows. Restore eligible tables with `tables restore`.

```bash
sim tables batch-delete [options]
```

**Options**

<CommandTable>
  | Option | Required | Description |
  | - | - | - |
  | `--table-ids <json\|@file>` | No | Tables to archive, by identifier. Defaults to \[]. (JSON, or @path / @- to read a file or stdin). |
  | `--folder <value...>` | No | Folder path as shown in the app; the leading / is optional (space-separated, or @path / @- with one value per line; @@value for a literal leading @). |
  | `-y, --yes` | Yes | Confirm this operation. |
</CommandTable>

API request and response schemas: [bulkDeleteTables](/api-reference/tables/bulkDeleteTables).

### Restore an archived table [#restore-an-archived-table]

```bash
sim tables restore <tableId>
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
</CommandTable>

API request and response schemas: [restoreTable](/api-reference/tables/restoreTable).

## Rows and queries [#rows-and-queries]

### List rows [#list-rows]

```bash
sim tables rows list <tableId> [options]
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
</CommandTable>

**Options**

<CommandTable>
  | Option | Required | Description |
  | - | - | - |
  | `--limit <n>` | No | Maximum items to return (0 for everything). Defaults to `100`. |
  | `--cursor <value>` | No | Continue from nextCursor returned by a previous result. |
  | `--include-run-state` | No | Include per-workflow-group run outcomes on every row. Off by default. Caps `limit` at 200. Run state above 2 MiB returns `413`; request fewer rows or omit run state. |
  | `--no-include-run-state` | No | Send --include-run-state as false. |
</CommandTable>

API request and response schemas: [listTableRows](/api-reference/tables/listTableRows).

### Get row [#get-row]

```bash
sim tables rows get <tableId> <rowId> [options]
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
  | `rowId` | Yes | Unique table row identifier. |
</CommandTable>

**Options**

<CommandTable>
  | Option | Required | Description |
  | - | - | - |
  | `--include-run-state` | No | Include per-workflow-group run outcomes on the row. Off by default. Run state above 2 MiB returns `413`; omit this option to read the row without run state. |
  | `--no-include-run-state` | No | Send --include-run-state as false. |
</CommandTable>

API request and response schemas: [getTableRow](/api-reference/tables/getTableRow).

### Query rows with a filter and sort [#query-rows-with-a-filter-and-sort]

```bash
sim tables rows query <tableId> [options]
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
</CommandTable>

**Options**

<CommandTable>
  | Option | Required | Description |
  | - | - | - |
  | `--filter <json\|@file>` | No | Condition: \{"field":"status","op":"eq","value":"active"}. Groups: \{"all":\[\{"field":"status","op":"eq","value":"active"}]} or \{"any":\[\{"field":"status","op":"eq","value":"active"}]}; group entries may also be nested groups. Operators: eq, ne, gt, gte, lt, lte, in, nin, contains, ncontains, startsWith, endsWith, like, ilike, nlike, nilike, isEmpty, isNotEmpty, isNull, isNotNull (JSON, or @path / @- to read a file or stdin). |
  | `--sort <json\|@file>` | No | Ordered sort keys: \[\{"field":"createdAt","direction":"desc"}] (direction: asc or desc) (JSON, or @path / @- to read a file or stdin). |
  | `--limit <n>` | No | Maximum items to return (0 for everything). Defaults to `100`. |
  | `--cursor <value>` | No | Continue from nextCursor returned by a previous result. |
  | `--include-run-state` | No | Include per-workflow-group run outcomes on every row. Off by default. Each request above 2 MiB of run state returns 413; request fewer rows or omit run state. CLI --limit 0 still fetches bounded pages. |
  | `--no-include-run-state` | No | Send --include-run-state as false. |
</CommandTable>

API request and response schemas: [queryRows](/api-reference/tables/queryTableRows).

### Count rows matching a filter [#count-rows-matching-a-filter]

```bash
sim tables rows count <tableId> [options]
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
</CommandTable>

**Options**

<CommandTable>
  | Option | Required | Description |
  | - | - | - |
  | `--filter <json\|@file>` | No | Condition: \{"field":"status","op":"eq","value":"active"}. Groups: \{"all":\[\{"field":"status","op":"eq","value":"active"}]} or \{"any":\[\{"field":"status","op":"eq","value":"active"}]}; group entries may also be nested groups. Operators: eq, ne, gt, gte, lt, lte, in, nin, contains, ncontains, startsWith, endsWith, like, ilike, nlike, nilike, isEmpty, isNotEmpty, isNull, isNotNull (JSON, or @path / @- to read a file or stdin). |
</CommandTable>

API request and response schemas: [queryRowsCount](/api-reference/tables/countTableRows).

### Search cells for a value and return their coordinates [#search-cells-for-a-value-and-return-their-coordinates]

```bash
sim tables rows search <tableId> [options]
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
</CommandTable>

**Options**

<CommandTable>
  | Option | Required | Description |
  | - | - | - |
  | `--query <value>` | Yes | Value to search for. |
  | `--filter <json\|@file>` | No | Predicate: \{"all":\[\{"field":"status","op":"eq","value":"active"}]}; groups use all/any. Operators: eq, ne, gt, gte, lt, lte, in, nin, contains, ncontains, startsWith, endsWith, like, ilike, nlike, nilike, isEmpty, isNotEmpty, isNull, isNotNull (JSON, or @path / @- to read a file or stdin). |
  | `--sort <json\|@file>` | No | Ordered sort keys: \[\{"field":"createdAt","direction":"desc"}] (direction: asc or desc) (JSON, or @path / @- to read a file or stdin). |
</CommandTable>

API request and response schemas: [searchTableRows](/api-reference/tables/searchTableRows).

### Create rows [#create-rows]

```bash
sim tables rows create <tableId> [options]
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
</CommandTable>

**Options**

<CommandTable>
  | Option | Required | Description |
  | - | - | - |
  | `--data <json\|@file>` | No | One row keyed by column name (JSON, or @path / @-; choose exactly one body flag). |
  | `--rows <json\|@file>` | No | Several rows keyed by column name (JSON, or @path / @-; choose exactly one body flag). |
</CommandTable>

API request and response schemas: [createTableRows](/api-reference/tables/createTableRows).

### Update row [#update-row]

```bash
sim tables rows update <tableId> <rowId> [options]
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
  | `rowId` | Yes | Unique table row identifier. |
</CommandTable>

**Options**

<CommandTable>
  | Option | Required | Description |
  | - | - | - |
  | `--data <json\|@file>` | Yes | Partial row-data patch keyed by column name. (JSON, or @path / @- to read a file or stdin). |
</CommandTable>

API request and response schemas: [updateTableRow](/api-reference/tables/updateTableRow).

### Apply a distinct patch to each listed row [#apply-a-distinct-patch-to-each-listed-row]

```bash
sim tables rows update-each <tableId> [options]
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
</CommandTable>

**Options**

<CommandTable>
  | Option | Required | Description |
  | - | - | - |
  | `--updates <json\|@file>` | Yes | One merge patch per row. Each row identifier may appear at most once. (JSON, or @path / @- to read a file or stdin). |
</CommandTable>

API request and response schemas: [bulkUpdateTableRows](/api-reference/tables/bulkUpdateTableRows).

### Update every row matching a filter [#update-every-row-matching-a-filter]

This updates every matching row and cannot be undone.

```bash
sim tables rows batch-update <tableId> [options]
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
</CommandTable>

**Options**

<CommandTable>
  | Option | Required | Description |
  | - | - | - |
  | `--filter <json\|@file>` | Yes | Predicate: \{"all":\[\{"field":"status","op":"eq","value":"active"}]}; groups use all/any. Operators: eq, ne, gt, gte, lt, lte, in, nin, contains, ncontains, startsWith, endsWith, like, ilike, nlike, nilike, isEmpty, isNotEmpty, isNull, isNotNull (JSON, or @path / @- to read a file or stdin). |
  | `--data <json\|@file>` | Yes | Row-data patch applied to every matching row. (JSON, or @path / @- to read a file or stdin). |
  | `--limit <value>` | No | Maximum matching rows to update. (caps a --filter match only; omit it to act on every match, and note 0 is not accepted). |
  | `-y, --yes` | Yes | Confirm this operation. |
</CommandTable>

API request and response schemas: [updateRowsByFilter](/api-reference/tables/updateTableRows).

### Run one row’s enrichment group [#run-one-rows-enrichment-group]

```bash
sim tables rows enrich <tableId> <rowId> <groupId>
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
  | `rowId` | Yes | Unique table row identifier. |
  | `groupId` | Yes | Workflow or enrichment group to run. |
</CommandTable>

API request and response schemas: [runRowEnrichment](/api-reference/tables/runRowEnrichment).

### Delete row [#delete-row]

This deletes the row.

```bash
sim tables rows delete <tableId> <rowId> [options]
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
  | `rowId` | Yes | Unique table row identifier. |
</CommandTable>

**Options**

<CommandTable>
  | Option | Required | Description |
  | - | - | - |
  | `-y, --yes` | Yes | Confirm this operation. |
</CommandTable>

API request and response schemas: [deleteTableRow](/api-reference/tables/deleteTableRow).

### Delete rows matching a filter, or an explicit list of ids [#delete-rows-matching-a-filter-or-an-explicit-list-of-ids]

This deletes every matching row and cannot be undone.

```bash
sim tables rows batch-delete <tableId> [options]
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
</CommandTable>

**Options**

<CommandTable>
  | Option | Required | Description |
  | - | - | - |
  | `--filter <json\|@file>` | No | Predicate: \{"all":\[\{"field":"status","op":"eq","value":"active"}]}; groups use all/any. Operators: eq, ne, gt, gte, lt, lte, in, nin, contains, ncontains, startsWith, endsWith, like, ilike, nlike, nilike, isEmpty, isNotEmpty, isNull, isNotNull (JSON, or @path / @- to read a file or stdin). |
  | `--limit <value>` | No | Maximum matching rows to delete. (caps a --filter match only; omit it to act on every match, and note 0 is not accepted). |
  | `--row <value...>` | No | Explicit row identifiers to delete. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). |
  | `-y, --yes` | Yes | Confirm this operation. |
</CommandTable>

API request and response schemas: [deleteTableRows](/api-reference/tables/deleteTableRows).

### Insert a row, or replace the one matching a unique column [#insert-a-row-or-replace-the-one-matching-a-unique-column]

```bash
sim tables upsert <tableId> [options]
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
</CommandTable>

**Options**

<CommandTable>
  | Option | Required | Description |
  | - | - | - |
  | `--data <json\|@file>` | Yes | Complete set of row cells keyed by column name. On the update branch this REPLACES the matched row: any column not present here is cleared, unlike a single-row update, which merges. (JSON, or @path / @- to read a file or stdin). |
  | `--on <value>` | No | Unique column to resolve the conflict against. |
</CommandTable>

API request and response schemas: [upsertTableRow](/api-reference/tables/upsertTableRow).

## Columns [#columns]

### Add column [#add-column]

```bash
sim tables columns create <tableId> [options]
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
</CommandTable>

**Options**

<CommandTable>
  | Option | Required | Description |
  | - | - | - |
  | `--column <json\|@file>` | Yes | Column definition to add. (JSON, or @path / @- to read a file or stdin). |
</CommandTable>

API request and response schemas: [addTableColumn](/api-reference/tables/addTableColumn).

### Update column [#update-column]

```bash
sim tables columns update <tableId> [options]
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
</CommandTable>

**Options**

<CommandTable>
  | Option | Required | Description |
  | - | - | - |
  | `--column-name <value>` | Yes | Current name of the column to update. |
  | `--updates <json\|@file>` | Yes | Mutable column fields. (JSON, or @path / @- to read a file or stdin). |
</CommandTable>

API request and response schemas: [updateTableColumn](/api-reference/tables/updateTableColumn).

### Delete column [#delete-column]

This deletes the column and its values in every row.

```bash
sim tables columns delete <tableId> [options]
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
</CommandTable>

**Options**

<CommandTable>
  | Option | Required | Description |
  | - | - | - |
  | `--column-name <value>` | Yes | Name of the column to delete. |
  | `-y, --yes` | Yes | Confirm this operation. |
</CommandTable>

API request and response schemas: [deleteTableColumn](/api-reference/tables/deleteTableColumn).

## Saved views [#saved-views]

### List views [#list-views]

```bash
sim tables views list <tableId>
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
</CommandTable>

API request and response schemas: [listTableViews](/api-reference/tables/listTableViews).

### Get view [#get-view]

```bash
sim tables views get <tableId> <viewId>
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
  | `viewId` | Yes | Unique saved-view identifier. |
</CommandTable>

API request and response schemas: [getTableView](/api-reference/tables/getTableView).

### Create view [#create-view]

```bash
sim tables views create <tableId> [options]
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
</CommandTable>

**Options**

<CommandTable>
  | Option | Required | Description |
  | - | - | - |
  | `--name <value>` | Yes | Saved-view display name. |
  | `--config <json\|@file>` | Yes | Saved filter, sort, and column-layout configuration. (JSON, or @path / @- to read a file or stdin). |
</CommandTable>

API request and response schemas: [createTableView](/api-reference/tables/createTableView).

### Update view [#update-view]

```bash
sim tables views update <tableId> <viewId> [options]
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
  | `viewId` | Yes | Unique saved-view identifier. |
</CommandTable>

**Options**

<CommandTable>
  | Option | Required | Description |
  | - | - | - |
  | `--name <value>` | No | Replacement saved-view display name. |
  | `--config <json\|@file>` | No | Complete replacement saved-view configuration. (JSON, or @path / @- to read a file or stdin). |
  | `--config-patch <json\|@file>` | No | Saved-view configuration fields to shallow-merge. (JSON, or @path / @- to read a file or stdin). |
  | `--default` | No | Whether to promote this view to the table default. |
  | `--no-default` | No | Send --default as false. |
</CommandTable>

API request and response schemas: [updateTableView](/api-reference/tables/updateTableView).

### Delete view [#delete-view]

This deletes the saved view and its filters.

```bash
sim tables views delete <tableId> <viewId> [options]
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
  | `viewId` | Yes | Unique saved-view identifier. |
</CommandTable>

**Options**

<CommandTable>
  | Option | Required | Description |
  | - | - | - |
  | `-y, --yes` | Yes | Confirm this operation. |
</CommandTable>

API request and response schemas: [deleteTableView](/api-reference/tables/deleteTableView).

## Producer groups and runs [#producer-groups-and-runs]

### List workflow groups [#list-workflow-groups]

```bash
sim tables groups list <tableId>
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
</CommandTable>

API request and response schemas: [listWorkflowGroups](/api-reference/tables/listTableWorkflowGroups).

### Add workflow group [#add-workflow-group]

```bash
sim tables groups create <tableId> [options]
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
</CommandTable>

**Options**

<CommandTable>
  | Option | Required | Description |
  | - | - | - |
  | `--group <json\|@file>` | Yes | Workflow or enrichment producer definition. (JSON, or @path / @- to read a file or stdin). |
  | `--output-columns <json\|@file>` | No | Columns to create for producer outputs. An entry naming a column the table already has attaches that column to the group instead of creating it (its `type` must match), and an output whose column already exists may omit its entry entirely — so `[]` attaches existing columns only. Defaults to \[]. (JSON, or @path / @- to read a file or stdin). |
  | `--auto-run` | No | Whether to schedule existing rows after group creation. Defaults to false. |
  | `--no-auto-run` | No | Send --auto-run as false. |
</CommandTable>

API request and response schemas: [addWorkflowGroup](/api-reference/tables/addTableWorkflowGroup).

### Update workflow group [#update-workflow-group]

```bash
sim tables groups update <tableId> [options]
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
</CommandTable>

**Options**

<CommandTable>
  | Option | Required | Description |
  | - | - | - |
  | `--group-id <value>` | Yes | Workflow group to update. |
  | `--workflow-id <value>` | No | Replacement backing workflow identifier. |
  | `--name <value>` | No | Replacement workflow-group display name. |
  | `--dependencies <json\|@file>` | No | Replacement input dependencies. (JSON, or @path / @- to read a file or stdin). |
  | `--outputs <json\|@file>` | No | Replacement producer outputs. (JSON, or @path / @- to read a file or stdin). |
  | `--new-output-columns <json\|@file>` | No | Columns to add for new outputs. (JSON, or @path / @- to read a file or stdin). |
  | `--mapping-updates <json\|@file>` | No | Existing output-column mapping changes. (JSON, or @path / @- to read a file or stdin). |
  | `--input-mappings <json\|@file>` | No | Replacement workflow input mappings. (JSON, or @path / @- to read a file or stdin). |
  | `--deployment-mode <value>` | No | Replacement workflow execution mode. Accepted values: `live`, `deployed`. |
  | `--type <value>` | No | Workflow-group producer type. Must match the group's stored type — a group's producer cannot be changed after creation. Accepted values: `manual`, `enrichment`. |
  | `--auto-run` | No | Replacement automatic-run setting. |
  | `--no-auto-run` | No | Send --auto-run as false. |
</CommandTable>

API request and response schemas: [updateWorkflowGroup](/api-reference/tables/updateTableWorkflowGroup).

### Delete workflow group [#delete-workflow-group]

This deletes the group AND its output columns with all of their row data; the workflow it pointed at is untouched.

```bash
sim tables groups delete <tableId> [options]
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
</CommandTable>

**Options**

<CommandTable>
  | Option | Required | Description |
  | - | - | - |
  | `--group-id <value>` | Yes | Workflow group to delete. |
  | `-y, --yes` | Yes | Confirm this operation. |
</CommandTable>

API request and response schemas: [deleteWorkflowGroup](/api-reference/tables/deleteTableWorkflowGroup).

### Get row group run [#get-row-group-run]

```bash
sim tables enrichment get <tableId> <rowId> <groupId>
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
  | `rowId` | Yes | Unique table row identifier. |
  | `groupId` | Yes | Workflow or enrichment group to run. |
</CommandTable>

API request and response schemas: [getRowEnrichment](/api-reference/tables/getRowEnrichment).

### List run dispatches [#list-run-dispatches]

```bash
sim tables dispatches list <tableId>
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
</CommandTable>

API request and response schemas: [listTableDispatches](/api-reference/tables/listTableDispatches).

### Get run dispatch [#get-run-dispatch]

```bash
sim tables dispatches get <tableId> <dispatchId>
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
  | `dispatchId` | Yes | Unique table run-dispatch identifier. |
</CommandTable>

API request and response schemas: [getTableDispatch](/api-reference/tables/getTableDispatch).

### Start a column or enrichment run [#start-a-column-or-enrichment-run]

```bash
sim tables dispatches create <tableId> [options]
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
</CommandTable>

**Options**

<CommandTable>
  | Option | Required | Description |
  | - | - | - |
  | `--group-ids <value...>` | Yes | Workflow or enrichment groups to run. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). |
  | `--run-mode <value>` | No | Whether to run all or only incomplete cells. Defaults to "all". Accepted values: `all`, `incomplete`. |
  | `--row-ids <value...>` | No | Explicit row subset to run. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). |
  | `--filter <json\|@file>` | No | Predicate: \{"all":\[\{"field":"status","op":"eq","value":"active"}]}; groups use all/any. Operators: eq, ne, gt, gte, lt, lte, in, nin, contains, ncontains, startsWith, endsWith, like, ilike, nlike, nilike, isEmpty, isNotEmpty, isNull, isNotNull (JSON, or @path / @- to read a file or stdin). |
  | `--exclude-row-ids <value...>` | No | Rows excluded from a select-all run scope. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). |
  | `--max-rows <n>` | No | Stop after this many eligible rows have run (1-1,000,000). Omit for an unbounded run. |
</CommandTable>

API request and response schemas: [createTableDispatch](/api-reference/tables/createTableDispatch).

### Cancel a running dispatch [#cancel-a-running-dispatch]

This stops the dispatch. Cells already handed to the queue keep running — use `tables cancel-runs` to stop those.

```bash
sim tables dispatches cancel <tableId> <dispatchId> [options]
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
  | `dispatchId` | Yes | Unique table run-dispatch identifier. |
</CommandTable>

**Options**

<CommandTable>
  | Option | Required | Description |
  | - | - | - |
  | `-y, --yes` | Yes | Confirm this operation. |
</CommandTable>

API request and response schemas: [cancelTableDispatch](/api-reference/tables/cancelTableDispatch).

### Stop every running column job [#stop-every-running-column-job]

This cancels running column jobs — the whole table with --scope all, one row with --scope row.

```bash
sim tables cancel-runs <tableId> [options]
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
</CommandTable>

**Options**

<CommandTable>
  | Option | Required | Description |
  | - | - | - |
  | `--scope <value>` | Yes | Whether to cancel across the table or one row. Accepted values: `all`, `row`. |
  | `--row-id <value>` | No | Row whose runs should be canceled for row scope. |
  | `--filter <json\|@file>` | No | Predicate: \{"all":\[\{"field":"status","op":"eq","value":"active"}]}; groups use all/any. Operators: eq, ne, gt, gte, lt, lte, in, nin, contains, ncontains, startsWith, endsWith, like, ilike, nlike, nilike, isEmpty, isNotEmpty, isNull, isNotNull (JSON, or @path / @- to read a file or stdin). |
  | `--exclude-row-ids <value...>` | No | Rows excluded from an all-scope cancellation. (space-separated, or @path / @- with one value per line; @@value for a literal leading @). |
  | `-y, --yes` | Yes | Confirm this operation. |
</CommandTable>

API request and response schemas: [cancelTableRuns](/api-reference/tables/cancelTableRuns).

## Imports [#imports]

### Import a CSV, into a new table by default [#import-a-csv-into-a-new-table-by-default]

Choose exactly one source: a local CSV path or `--file-id`. For a new table imported with `--file-id`, supply `--name`. With `--table-id`, omit the new-table `--name` and `--folder` flags; `--mode`, `--mapping`, and `--create-columns` apply only to an existing table.

**Replace mode deletes all existing rows before loading the CSV and cannot be undone.** It requires `--yes`; cancellation leaves only the rows already imported.

The command watches the import by default. `--no-wait` returns a queued receipt. A completed import can still report `rowsRejected`, `cellsRejected`, and `rejectedSamples`; inspect them before accepting the result.

```bash
sim tables import [path] [options]
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `path` | No | Local CSV file to import; choose exactly one source: this path or --file-id |
</CommandTable>

**Options**

<CommandTable>
  | Option | Required | Description |
  | - | - | - |
  | `--name <name>` | Conditional | Name for a new table: letters, numbers, and underscores. A local CSV defaults to its sanitized filename; required with --file-id unless --table-id names an existing table. |
  | `--table-id <id>` | No | Import into this existing table instead of creating one. |
  | `--mode <append\|replace>` | No | How to write into --table-id (default: append). Accepted values: `append`, `replace`. |
  | `--folder <path>` | No | Folder path for the new table, as shown in the app. |
  | `--file-id <id>` | No | Import a file already in the workspace instead of a local path. |
  | `--mapping <json\|@file>` | No | Column mapping (--table-id only). |
  | `--create-columns <json\|@file>` | No | Columns to create (--table-id only). |
  | `--timezone <iana>` | No | Timezone for date parsing, e.g. America/New\_York. |
  | `-y, --yes` | Conditional | Confirm this destructive operation (required with --mode replace). |
  | `--no-wait` | No | Return once the import is queued instead of watching it. |
</CommandTable>

API request and response schemas: [createTableImport](/api-reference/tables/createTableImport), [createTableImportPartUrls](/api-reference/tables/createTableImportPartUrls), [completeTableImport](/api-reference/tables/completeTableImportUpload), [cancelTableImport](/api-reference/tables/cancelTableImport), [getTableImport](/api-reference/tables/getTableImport).

### Get table import [#get-table-import]

```bash
sim tables imports get <importId>
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `importId` | Yes | Unique table-import identifier. |
</CommandTable>

API request and response schemas: [getTableImport](/api-reference/tables/getTableImport).

### Stop a running import [#stop-a-running-import]

This stops the import between row batches, so whatever it already wrote stays and nothing resumes it. A replace import empties the table before its first batch, so cancelling one leaves only part of the new file; an append adds its rows again if you import the file a second time.

```bash
sim tables imports cancel <importId> [options]
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `importId` | Yes | Unique table-import identifier. |
</CommandTable>

**Options**

<CommandTable>
  | Option | Required | Description |
  | - | - | - |
  | `-y, --yes` | Yes | Confirm this operation. |
</CommandTable>

API request and response schemas: [cancelTableImport](/api-reference/tables/cancelTableImport).

## Exports [#exports]

### Create table export [#create-table-export]

```bash
sim tables exports create <tableId> [options]
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
</CommandTable>

**Options**

<CommandTable>
  | Option | Required | Description |
  | - | - | - |
  | `--format <value>` | No | Export file format. Defaults to "csv". Accepted values: `csv`, `json`. |
</CommandTable>

API request and response schemas: [createTableExport](/api-reference/tables/createTableExport).

### Get table export [#get-table-export]

```bash
sim tables exports get <tableId> <exportId>
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
  | `exportId` | Yes | Unique table-export identifier. |
</CommandTable>

API request and response schemas: [getTableExport](/api-reference/tables/getTableExport).

### Get the download URL for a finished export [#get-the-download-url-for-a-finished-export]

```bash
sim tables exports download <tableId> <exportId>
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
  | `exportId` | Yes | Unique table-export identifier. |
</CommandTable>

API request and response schemas: [tableExportDownload](/api-reference/tables/downloadTableExport).

### Stop a running export [#stop-a-running-export]

```bash
sim tables exports cancel <tableId> <exportId>
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `tableId` | Yes | Unique table identifier. |
  | `exportId` | Yes | Unique table-export identifier. |
</CommandTable>

API request and response schemas: [cancelTableExport](/api-reference/tables/cancelTableExport).

## Folders [#folders]

### List table resources and child folders together [#list-table-resources-and-child-folders-together]

```bash
sim tables ls [path] [options]
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `path` | No | Folder path to list; defaults to the root folder |
</CommandTable>

**Options**

<CommandTable>
  | Option | Required | Description |
  | - | - | - |
  | `--search <text>` | No | Filter folders and resources by name. |
  | `--limit <n>` | No | Maximum combined items to return (0 for everything). Defaults to `0`. |
</CommandTable>

API request and response schemas: [listTables](/api-reference/tables/listTables), [listTableFolders](/api-reference/tables/listTablesFolders).

### List table folders [#list-table-folders]

```bash
sim tables folders list [options]
```

Also available as `sim tables folders ls`.

**Options**

<CommandTable>
  | Option | Required | Description |
  | - | - | - |
  | `--parent <value>` | No | Direct parent folder path. |
  | `--search <value>` | No | Case-insensitive substring match against the folder name. |
  | `--sort-by <value>` | No | Field used to sort the result. Do not rely on case-insensitive ordering when sorting by `name`. Defaults to "name". Accepted values: `name`, `createdAt`, `updatedAt`. |
  | `--sort-order <value>` | No | Sort direction. Defaults to "asc". Accepted values: `asc`, `desc`. |
</CommandTable>

API request and response schemas: [listTableFolders](/api-reference/tables/listTablesFolders).

### Create a table folder at a path [#create-a-table-folder-at-a-path]

```bash
sim tables folders create <path>
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `path` | Yes | Folder path as shown in the app; the leading / is optional |
</CommandTable>

API request and response schemas: [createTableFolder](/api-reference/tables/createTablesFolder).

### Delete folder [#delete-folder]

This archives the table folder and, when recursive, everything inside it.

```bash
sim tables folders delete <path> [options]
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `path` | Yes | Folder path as shown in the app; the leading / is optional |
</CommandTable>

**Options**

<CommandTable>
  | Option | Required | Description |
  | - | - | - |
  | `--recursive` | No | Archive the folder and its descendants. Defaults to "false". |
  | `-y, --yes` | Yes | Confirm this operation. |
</CommandTable>

API request and response schemas: [deleteTableFolder](/api-reference/tables/deleteTablesFolder).

### Restore an archived table folder [#restore-an-archived-table-folder]

```bash
sim tables folders restore <path>
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `path` | Yes | Folder path as shown in the app; the leading / is optional |
</CommandTable>

API request and response schemas: [restoreTableFolder](/api-reference/tables/restoreTablesFolder).

### Rename or move a table folder [#rename-or-move-a-table-folder]

```bash
sim tables folders move <path> <destination>
```

Also available as `sim tables folders mv`.

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `path` | Yes | Folder path as shown in the app; the leading / is optional |
  | `destination` | Yes | Folder path as shown in the app; the leading / is optional |
</CommandTable>

API request and response schemas: [relocateTableFolder](/api-reference/tables/relocateTablesFolder).

### Create a table directory at a path [#create-a-table-directory-at-a-path]

```bash
sim tables mkdir <path>
```

**Arguments**

<CommandTable>
  | Argument | Required | Description |
  | - | - | - |
  | `path` | Yes | Folder path to create; the leading / is optional |
</CommandTable>

API request and response schemas: [createTableFolder](/api-reference/tables/createTablesFolder).

## Related docs [#related-docs]

* [Tables](/tables)
* [Workflow columns](/tables/workflow-columns)
