Views

Views are admin-defined saved filters + sort for a table. Over the public API you can list views, fetch a single view, and query records through a view. Creating / updating / deleting views is session-only in v1.

All endpoints require an API key with read access to the workspace that contains the target table.

List views for a table

GET /api/table/<table_id>/views/list

Returns the synthesised Default view (id 0) first, then any saved views sorted alphabetically by name.

Response

[
  {
    "id": 0,
    "account_id": 1,
    "table_id": 101,
    "name": "Default",
    "type": "grid",
    "filters": [],
    "order_by": null,
    "order_dir": null,
    "created_by": 0,
    "created_at": "",
    "updated_at": "",
    "is_default": true
  },
  {
    "id": 19,
    "account_id": 1,
    "table_id": 101,
    "name": "Open deals",
    "type": "grid",
    "filters": [
      {"column": "status", "compare": "=", "value": "open"}
    ],
    "order_by": "amount",
    "order_dir": "D",
    "created_by": 4,
    "created_at": "2026-04-22 12:00:00",
    "updated_at": "2026-04-22 12:00:00",
    "is_default": false
  }
]

Get a single view

GET /api/table/<table_id>/view/<view_id>/get

Pass 0 for <view_id> to get the synthesised Default view for that table. Cross-table ids return 404 View not found.

Query records through a view

POST /api/table/<table_id>/records/query

Request body

{
  "view_id": 19,
  "search": "acme",
  "limit": 100,
  "offset": 0
}
Field Type Notes
view_id int Optional. When present, the view's filters + sort fully replace request-supplied filters and order_by / order_dir. Pass 0 for Default (equivalent to omitting).
search string Optional full-text search, applied on top of the view's filters.
limit int Default 100, max 1000.
offset int Default 0.
fields array Optional column whitelist.

filters, order_by, and order_dir in the request body are ignored when view_id is set — the view is authoritative. If you want to filter further, save the filters into the view or drop the view_id and send ad-hoc filters.

Errors

Status Message When
500 View not found view_id doesn't exist or belongs to a different table.
500 Not Authorized API key has no access to the table's workspace.

Response

Array of record objects, same shape as the non-view query.

Filter format

Stored view filters follow {column, compare, value}. Supported compare values mirror the filter panel in the UI:

  • =, !=, >, <, >=, <=
  • contains, starts_with, ends_with
  • is_empty, is_not_empty (no value required)

Date tokens like today, -7d, or start_of_month in value are resolved at query time against the server clock.

Mutation endpoints (session-only)

Creating, updating, and deleting views is available only to logged-in workspace admins via the session-authenticated UI API. These endpoints are not registered for API keys in v1:

POST /api/table/<table_id>/views/create
POST /api/table/<table_id>/view/<view_id>/update
POST /api/table/<table_id>/view/<view_id>/delete

Calling them with a bearer token returns 403 API endpoint not available to API keys.