Skip to content

Saved grid views

A view is a saved way of looking at a table — which columns, in what order, how wide, what’s filtered out, how it’s sorted and grouped, which rows are coloured. Views are stored per table and are what the grid’s view switcher reads and writes. Your own app can use them too; the payload is opaque JSON with a handful of required keys.

GET /api/v0/bases/{baseId}/tables/{tableName}/views
PUT /api/v0/bases/{baseId}/tables/{tableName}/views/{viewId}
DELETE /api/v0/bases/{baseId}/tables/{tableName}/views/{viewId}

{baseId} accepts either the external base id (appXXX) or the numeric database id. {viewId} is yours to choose — [A-Za-z0-9_-], up to 64 characters. A UUID is the obvious choice.

Scope Who sees it Who can change it
personal Only its owner Only its owner
shared Everyone with read access to the base Base editors
shared + locked Everyone with read access Base editors (the lock stops accidental edits in the UI)

Turning a personal view into a shared one needs edit access to the base — you can keep your own arrangement without being able to impose it on the team. Nobody can re-scope or take over someone else’s personal view.

{
"views": [
{ "version": 1, "id": "b1e9…", "name": "Open sites", "scope": "shared",
"locked": false, "ownerId": "usr_…", "updatedAt": "2026-09-09T14:02:11.000Z",
"fieldOrder": ["Name", "Status", "Capacity"], "hiddenFields": ["Notes"],
"sorts": [{ "field": "Name", "direction": "asc" }] }
],
"canWrite": true,
"userId": "usr_…"
}

You get the shared views plus your own personal ones. canWrite tells the client whether to offer “Share this view” at all.

PUT the whole view object. It’s an upsert — the same call creates and updates.

Terminal window
curl -X PUT '…/views/b1e9-…' \
-H 'Content-Type: application/json' -H 'Authorization: Bearer …' \
-d '{
"version": 1,
"name": "Open sites",
"scope": "shared",
"locked": false,
"fieldOrder": ["Name", "Status", "Capacity"],
"hiddenFields": ["Notes"],
"sorts": [{ "field": "Name", "direction": "asc" }]
}'

version: 1, a non-empty name, and array-valued fieldOrder, hiddenFields and sorts are required; everything else is optional.

Key Holds
fieldOrder, hiddenFields, fieldWidths, frozenFieldCount, rowHeight Layout
filter, sorts, groups, summaries, mapExtentFilter What’s shown and in what order
fieldPresentation, colorRules Formatting and conditional colour
computedFields Client-side derived columns — each needs a name and an expression

Unknown keys are stripped before storage, deliberately: a view records how to look at data, never data values or credentials. A view may not exceed 256 KB.

DELETE the view id. Same permission rules as saving. 404 if it isn’t there.