Skip to main content
A view (shown as a Base in the web UI) is a saved DQL query plus display settings: layout, columns, filters, sort, and grouping. Each view is a JSON file at .kiwi/views/{name}.json, so you can edit it on disk or through these endpoints. All paths are relative to http://localhost:3333/api/kiwi. See Bases and views for how the web UI renders them and DQL for query syntax. View names must start with a letter or digit and contain only letters, digits, spaces, hyphens, and underscores.

The view object

string
View name. Always matches the file name and URL.
string
DQL query, for example TABLE status, owner FROM "tasks" WHERE status != "done".
string
table, list, calendar, or kanban.
object[]
Optional column settings.
object[]
Optional UI filters, each with field, operator (=, !=, >, <, contains, in), and value.
object[]
Optional sort keys, each with field and order (asc or desc).
string
Optional field to group rows by.

List views

Returns every view in .kiwi/views/. GET /views
Response

Get a view

Returns one view object. GET /views/:name
string
required
View name.
Returns 404 if the view does not exist or the name is invalid.

Save a view

Creates or replaces a view. The body is a view object; name is taken from the URL. PUT /views/:name
string
required
View name.
string
required
DQL query.
string
table, list, calendar, or kanban.
object[]
Column settings. See the view object.
object[]
UI filters.
object[]
Sort keys.
string
Grouping field.
Response
Views are config, not pages. Saving or deleting a view writes .kiwi/views/ directly and does not create a git commit.

Delete a view

Removes a view. Deleting a view that does not exist still succeeds. DELETE /views/:name
string
required
View name.
Response

Execute a view

Runs the view’s DQL query, fills in formula columns, and returns the rows. GET /views/:name/execute
string
required
View name.
integer
default:"50"
Maximum rows.
integer
default:"0"
Rows to skip.
string[]
_path followed by the queried fields (no _path with WITHOUT ID).
object[]
One object per page, keyed by column. Includes _path, path, and any formula columns.
integer
Rows in this response, or -1 when has_more is true.
boolean
Whether more rows exist past this page.
object[]
Present for GROUP BY queries: key, count, and rows per group.
Response
Returns 404 if the view does not exist, 400 if its query fails to parse or run, and 503 when the Dataview executor is unavailable (search engines other than SQLite). The UI filters, sort, and group settings are not applied by this endpoint; put them in the DQL query if you need them server-side.

Bases and views

How views render in the web UI.

DQL

Query syntax for the query field.

Metadata and graph

Run ad-hoc DQL with GET /query.

MCP tools

kiwi_views_list, kiwi_views_get, kiwi_views_save, kiwi_views_delete, kiwi_views_execute.
Last modified on October 19, 2026