.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.
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
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.