Skip to content

Tables

Query rows

Query rows with typed predicates, sorting, and cursor pagination. Omit the predicate to match all rows. Pages default to a 5 MiB limit; continue until `nextCursor` is null. Oversized predicates return `413`. `includeRunState` adds per-group outcomes and reduces the row limit. Counts are read separately and can differ from paged results if rows change. OAuth scope: `api:read`.

POST/api/v2/tables/{tableId}/query

Query rows with typed predicates, sorting, and cursor pagination. Omit the predicate to match all rows. Pages default to a 5 MiB limit; continue until nextCursor is null. Oversized predicates return 413. includeRunState adds per-group outcomes and reduces the row limit. Counts are read separately and can differ from paged results if rows change.

OAuth scope: api:read.

Authentication

Send a personal or workspace API key in X-API-Key. See key types and access; operations that reject workspace keys say so in their description.

Send X-API-Key in the request header.

Alternatively

Send a Sim OAuth access token in Authorization: Bearer. See OAuth authentication and scopes.

Authorization: Bearer YOUR_ACCESS_TOKEN

Required scopes: api:read

OAuth flows
json
{
  "authorizationCode": {
    "authorizationUrl": "https://www.sim.ai/api/auth/oauth2/authorize",
    "tokenUrl": "https://www.sim.ai/api/auth/oauth2/token",
    "refreshUrl": "https://www.sim.ai/api/auth/oauth2/token",
    "scopes": {
      "api:read": "Read your workspaces, workflows, files, tables, and logs",
      "api:write": "Read, create, change, run, and delete resources in your workspaces",
      "offline_access": "Stay signed in without asking again"
    }
  }
}

OAuth scope: api:read.

Path parameters

tableIdstringRequired

Unique table identifier.

minLength
1

Request body

Required

Workspace scope, optional predicate and sort, and cursor pagination controls. The predicate may be one condition or an all/any group; omitting it matches every row.

object

Workspace scope, optional predicate and sort, and cursor pagination controls. The predicate may be one condition or an all/any group; omitting it matches every row.

6 fields
workspaceIdstringRequired

Unique workspace identifier.

minLength
1
maxLength
128
predicateTablePredicateInput

One condition or a recursive all/any group, normalized to a grouped predicate. Limits: 100 members per group, 10 levels, and 500 nodes. The negating operators include nulls and absent cells, multi-select included; combine with isNotNull or isNotEmpty to exclude them. Pattern operators use * as the only wildcard; %, _, and backslash are literal. Select operators: single-select uses eq/ne/in/nin; multi-select uses contains/ncontains; option names resolve to IDs. Full operand rules are documented on op.

Schema details

Exactly one of

Option 1object

Matches a row when every member matches.

1 field
allarrayRequired

Members combined with AND. An empty group is rejected, because it would compile to no filter at all.

minItems
1
maxItems
100
Schema details
Array itemvalue

A nested group, or a single condition.

Schema details

Any of

Option 1 references recursive schema TablePredicateInput. See the complete schema in the OpenAPI download.

Option 2object

One column comparison.

3 fields
fieldstringRequired

Column name to compare, or one of the system fields id, createdAt, updatedAt.

minLength
1
maxLength
128
opstringRequired

Operators: eq, ne, gt, gte, lt, lte; in/nin take arrays; isEmpty, isNotEmpty, isNull, and isNotNull take no operand. Text operators are contains, ncontains, startsWith, endsWith, like, nlike, ilike, and nilike. Contains variants are case-insensitive and literal; like/nlike are case-sensitive, while ilike/nilike are case-insensitive. * is the only wildcard; %, _, and backslash are literal. For select columns, single-select accepts eq, ne, in, nin; multi-select accepts contains, ncontains. Option names resolve to IDs.

enum
["eq","ne","gt","gte","lt","lte","in","nin","contains","ncontains","startsWith","endsWith","like","ilike","nlike","nilike","isEmpty","isNotEmpty","isNull","isNotNull"]
valuevalue

Operand. A scalar for the comparison operators, an array of at most 1000 entries for in/nin, a pattern for the matching operators, and omitted for isEmpty/isNotEmpty/isNull/isNotNull.

Additional properties are not allowed.

Additional properties are not allowed.

Option 2object

Matches a row when at least one member matches.

1 field
anyarrayRequired

Members combined with OR. An empty group is rejected, because it would compile to no filter at all.

minItems
1
maxItems
100
Schema details
Array itemvalue

A nested group, or a single condition.

Schema details

Any of

Option 1 references recursive schema TablePredicateInput. See the complete schema in the OpenAPI download.

Option 2object

One column comparison.

3 fields
fieldstringRequired

Column name to compare, or one of the system fields id, createdAt, updatedAt.

minLength
1
maxLength
128
opstringRequired

Operators: eq, ne, gt, gte, lt, lte; in/nin take arrays; isEmpty, isNotEmpty, isNull, and isNotNull take no operand. Text operators are contains, ncontains, startsWith, endsWith, like, nlike, ilike, and nilike. Contains variants are case-insensitive and literal; like/nlike are case-sensitive, while ilike/nilike are case-insensitive. * is the only wildcard; %, _, and backslash are literal. For select columns, single-select accepts eq, ne, in, nin; multi-select accepts contains, ncontains. Option names resolve to IDs.

enum
["eq","ne","gt","gte","lt","lte","in","nin","contains","ncontains","startsWith","endsWith","like","ilike","nlike","nilike","isEmpty","isNotEmpty","isNull","isNotNull"]
valuevalue

Operand. A scalar for the comparison operators, an array of at most 1000 entries for in/nin, a pattern for the matching operators, and omitted for isEmpty/isNotEmpty/isNull/isNotNull.

Additional properties are not allowed.

Additional properties are not allowed.

Option 3object

One column comparison.

3 fields
fieldstringRequired

Column name to compare, or one of the system fields id, createdAt, updatedAt.

minLength
1
maxLength
128
opstringRequired

Operators: eq, ne, gt, gte, lt, lte; in/nin take arrays; isEmpty, isNotEmpty, isNull, and isNotNull take no operand. Text operators are contains, ncontains, startsWith, endsWith, like, nlike, ilike, and nilike. Contains variants are case-insensitive and literal; like/nlike are case-sensitive, while ilike/nilike are case-insensitive. * is the only wildcard; %, _, and backslash are literal. For select columns, single-select accepts eq, ne, in, nin; multi-select accepts contains, ncontains. Option names resolve to IDs.

enum
["eq","ne","gt","gte","lt","lte","in","nin","contains","ncontains","startsWith","endsWith","like","ilike","nlike","nilike","isEmpty","isNotEmpty","isNull","isNotNull"]
valuevalue

Operand. A scalar for the comparison operators, an array of at most 1000 entries for in/nin, a pattern for the matching operators, and omitted for isEmpty/isNotEmpty/isNull/isNotNull.

Additional properties are not allowed.

sortarray

Ordered table-row sort specification.

maxItems
16
Schema details
Array itemobject
2 fields
fieldstringRequired

Column name to sort by.

minLength
1
maxLength
128
directionstringRequired

Sort direction for this column.

enum
["asc","desc"]

Additional properties are not allowed.

limitinteger

Maximum rows per page. 0 requests all matches, subject to a 5 MiB row-data ceiling; larger results return 400 with TABLE_QUERY_RESULT_TOO_LARGE. Use paged queries or an export for larger results.

minimum
0
maximum
1000
cursorstring

Opaque cursor returned by the previous query page.

minLength
1
includeRunStateboolean

Include per-workflow-group run outcomes on every row. Off by default. Incompatible with limit: 0; caps limit at 200. Run state above 2 MiB returns 413; request fewer rows or omit run state.

default
false

Additional properties are not allowed.

Request example 1

json
{
  "workspaceId": "a91c4b2e-6d3f-4e8a-b5c7-0d9e2f1a8c64",
  "limit": 100
}

Request example 2

json
{
  "workspaceId": "a91c4b2e-6d3f-4e8a-b5c7-0d9e2f1a8c64",
  "predicate": {
    "field": "status",
    "op": "eq",
    "value": "active"
  },
  "sort": [
    {
      "field": "createdAt",
      "direction": "desc"
    }
  ],
  "limit": 100
}

Request example 3

json
{
  "workspaceId": "a91c4b2e-6d3f-4e8a-b5c7-0d9e2f1a8c64",
  "predicate": {
    "all": [
      {
        "field": "status",
        "op": "eq",
        "value": "active"
      },
      {
        "field": "score",
        "op": "gte",
        "value": 80
      }
    ]
  }
}

Responses

200

A page of matching table rows.

object

A cursor-paginated page of matching table rows.

2 fields
dataarrayRequired

Items in the current page.

Schema details
Array itemobject

A table row with user-defined cell values.

5 fields
idstringRequired

Unique row identifier.

dataobjectRequired

Row cells keyed by column name.

Schema details
Additional propertiesvalue

User-defined cell value interpreted by its column definition.

runStateobject

Per-workflow-group run state keyed by group identifier. Present only when the read requested includeRunState.

Schema details
Additional propertiesobject

Run outcome for one workflow group on one row.

7 fields
statusstringRequired

Lifecycle state of the most recent run for this cell: pending, queued, running, completed, error, or canceled.

executionIdvalueRequired

Workflow execution identifier, or null before a worker claimed the cell.

Schema details

Any of

Option 1string
Option 2null
workflowIdstringRequired

Workflow the group runs for this cell.

errorvalueRequired

Failure reason, or null when the run did not fail.

Schema details

Any of

Option 1string
Option 2null
runningBlockIdsarrayRequired

Block identifiers currently mid-execution.

Schema details
Array itemstring
blockErrorsobjectRequired

Per-block failure messages keyed by block identifier.

Schema details
Additional propertiesstring
canceledAtvalueRequired

ISO 8601 timestamp when the cell was canceled, or null.

Schema details

Any of

Option 1string
format
date-time
pattern
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
Option 2null

Additional properties are not allowed.

createdAtstringRequired

ISO 8601 timestamp when the row was created.

format
date-time
pattern
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
updatedAtstringRequired

ISO 8601 timestamp when the row was last modified.

format
date-time
pattern
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$

Additional properties are not allowed.

nextCursorvalueRequired

Opaque cursor for the next page. Send it back as cursor; null means there are no more pages. Do not construct a cursor yourself.

Schema details

Any of

Option 1string
Option 2null

Additional properties are not allowed.

Response headers

X-RateLimit-Limitinteger

Maximum requests allowed in the current window.

minimum
0
maximum
9007199254740991
X-RateLimit-Remaininginteger

Requests remaining in the current window.

minimum
0
maximum
9007199254740991
X-RateLimit-Resetstring

ISO 8601 timestamp when the current rate-limit window resets.

format
date-time
pattern
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
Was this helpful?
Suggest an edit