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_withis_empty,is_not_empty(novaluerequired)
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.