Read a page of records through a view
Returns one window of records with the filters and sorts of `viewId` applied in the database, plus the shape id and workspace version a realtime client needs to reconcile later updates. Paginated: pass `limit` and the `cursor` from the previous response's `window`. Requires the `records:read` permission; a view that does not exist or is another user's personal view responds with not-found. Responses are cached per caller for a few seconds.
Authorization
apiKey Workspace API key created in Workspace settings → API keys. Scopes on the key bound what it can read and write.
In: header
Path Parameters
Query Parameters
Response Body
application/json
application/json
application/json
curl -X GET "https://example.com/v1/workspaces/string/databases/string/records/window"{ "data": { "shapeId": "string", "workspaceVersion": 0, "rows": [ { "id": "1d8a44e0-7c93-4f21-b60a-3e8d2f5a9c14", "workspaceId": "4b81aa0c-6d2f-4b19-9f0e-1a7c3d5e8b02", "databaseId": "9f2c1e7a-3b58-4d0c-8e27-6a1f9d4b3c85", "contentSurfaceId": "string", "title": "Ship the desktop app", "data": { "status": "in_progress", "due": "2026-08-01" }, "relations": {}, "computed": {}, "system": {}, "related": {}, "archived": false, "externalId": "string", "createdByUserId": "string", "updatedByUserId": "string", "createdAt": "2026-07-10T08:00:00.000Z", "updatedAt": "2026-07-14T11:26:02.000Z" } ], "window": { "cursor": "string", "hasMore": true } }}{ "_tag": "ApiNotFound", "error": "not_found", "message": "That item does not exist, or this key cannot see it.", "status": 404}{ "_tag": "ApiNotFound", "error": "not_found", "message": "That item does not exist, or this key cannot see it.", "status": 404}Create a record in a database
Creates a record from the given title and cell data, optionally with a caller-minted `id` and content-surface id so an optimistic client keeps the same identity after the write lands. Requires the `records:write` permission and counts against the workspace's record allowance. The write is refused when a value does not fit its field or a blocking validation rule on the database fails.
Aggregate the records in a database
Computes one aggregate in the database - `fn` is `count` (the default), `sum`, `avg`, `min` or `max` - over the records matching the optional `viewId`'s filters, and returns the value with the number of contributing records. Every function except `count` needs a `field` key. Requires the `records:read` permission; an unsupported function, an unknown field key and an unknown view are all rejected.