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}/viewsPUT /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.
Scopes
Section titled “Scopes”| 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.
Listing
Section titled “Listing”{ "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.
Saving
Section titled “Saving”PUT the whole view object. It’s an upsert — the same call creates and updates.
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.
Deleting
Section titled “Deleting”DELETE the view id. Same permission rules as saving. 404 if it isn’t there.