---
title: "List table rows"
method: GET
path: "/v1/tables/{tableId}/rows"
tags: ["Tables"]
---

# List table rows

`GET /v1/tables/{tableId}/rows`

## Request

- Base URL: `https://api.banksync.io`
- URL: `https://api.banksync.io/v1/tables/{tableId}/rows`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

Keyset pagination over a table’s rows. Every row is returned as `properties`, keyed by immutable field key, each value a tagged union that says what it means — a computed cell carries `stale` and any `error`. `filters` and `sort` are JSON-encoded arrays in the query string, e.g. `?filters=[{"fieldKey":"amount","op":"gt","value":100}]&sort=[{"fieldKey":"date","direction":"desc"}]`. Relation and attachment fields cannot be filtered or sorted by — their values live in other stores.

## Path parameters

- `tableId` string, required: Table ID

## Query parameters

- `cursor` string
- `limit` integer
- `deleted` union
  - boolean
  - '0' | '1' | 'true' | 'false'
- `filters` string
- `sort` string

## Response `200`

Page of rows

- object
  - `success` true, required
  - `data` object[], required
    - `id` string, required
    - `tableId` string, required
    - `version` integer, required
    - `properties` object, required
    - `provenance` union, required
      - object
        - `kind` 'sync', required
        - `feedId` string, required
        - `bankId` string, required
        - `accountId` string
        - `jobId` string
        - `bankWorkspaceId` string
      - object
        - `kind` 'extractor', required
        - `feedId` string, required
        - `jobId` string
      - object
        - `kind` 'user', required
        - `userId` string, required
      - object
        - `kind` 'import', required
        - `importId` string, required
        - `userId` string, required
      - object
        - `kind` 'api', required
        - `clientId` string, required
    - `createdAt` string, required
    - `updatedAt` string, required
    - `deletedAt` string
  - `meta` object, required
    - `count` integer, required
    - `cursor` string, nullable, required
    - `hasMore` boolean, required
  - `inlineItems` integer, required

## Other responses

- `400`: Validation failed, or a read-only field was written — `code` names the refusal and `details[]` the offending field or cell
- `401`: Unauthorized
- `403`: Forbidden — missing scope, insufficient role, or plan limit reached
- `404`: Not found

---

[API](https://skmtc.dev/banksync/apis/banksync-api.md) · [All operations](https://skmtc.dev/banksync/apis/banksync-api/llms.txt) · [OpenAPI document](https://skmtc.dev/banksync/apis/banksync-api/revisions/94465f5ee922?raw)
