---
title: "List tables"
method: GET
path: "/v1/tables"
tags: ["Tables"]
---

# List tables

`GET /v1/tables`

## Request

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

List the workspace’s tables, newest first. Keyset pagination: pass `meta.cursor` back as `cursor` while `meta.hasMore` is true. The listing omits `fields` — fetch one table to get its schema.

## Query parameters

- `cursor` string
- `limit` integer
- `includeDeleted` union
  - boolean
  - '0' | '1' | 'true' | 'false'

## Response `200`

Page of tables

- object
  - `success` true, required
  - `data` object[], required
    - `id` string, required
    - `workspaceId` string, required
    - `name` string, required
    - `icon` string
    - `folderId` string, nullable, required
    - `position` integer, required
    - `kind` 'typed' | 'freeform', required
    - `resourceType` 'transactions' | 'balances' | 'trades' | 'holdings' | 'orders' | 'loans' | 'receipts' | 'invoices' | 'documents'
    - `contractVersion` integer
    - `singleton` true
    - `dedupFieldIds` string[], required
    - `promoted` object, required
      - `primary` string, required
      - `date` string
      - `amount` string
    - `nextNumber` integer
    - `schemaVersion` integer, required
    - `revision` integer, required
    - `structureLocked` boolean, required
    - `originAppId` string
    - `origin` object
      - `install` object
        - `id` string, required
        - `resourceKey` string, required
      - `listing` object
        - `id` string, required
        - `kind` string, required
        - `releaseId` string, required
      - `app` object
        - `id` string, required
      - `managed` string
      - `adoptedFrom` object
        - `managed` string
    - `retention` union
      - object
        - `mode` 'forever', required
      - object
        - `mode` 'days', required
        - `days` integer, required
    - `rowCount` integer, required
    - `attachmentBytes` integer, required
    - `createdBy` union, required
      - object
        - `kind` 'user', required
        - `userId` string, required
      - object
        - `kind` 'sync', required
        - `feedId` string, required
        - `jobId` string
        - `cause` object
          - `automationId` string, required
          - `runId` string, required
          - `depth` integer, required
          - `untrustedSender` true
      - object
        - `kind` 'extractor', required
        - `feedId` string, required
        - `jobId` string
        - `untrustedSender` true
      - object
        - `kind` 'import', required
        - `importId` string, required
        - `userId` string, required
      - object
        - `kind` 'api', required
        - `clientId` string, required
      - object
        - `kind` 'system', required
        - `reason` string, required
      - object
        - `kind` 'automation', required
        - `automationId` string, required
        - `revision` string, required
        - `grantId` string, required
        - `runId` string, required
        - `node` string, required
        - `startedBy` ActorRef, required (recursive)
        - `depth` integer, required
        - `untrustedSender` true
    - `createdAt` string, required
    - `updatedAt` string, required
    - `deletedAt` string
  - `meta` object, required
    - `count` integer, required
    - `cursor` string, nullable, required
    - `hasMore` boolean, required
    - `confinedToApp` true

## 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)
