Manual · 9

Conventions

Base path

All endpoints live under /api/v1 (exceptions: /healthz and the public call for document templates).

List endpoints: filter, sorting, grouping, summary

GET /tables/{id}/records (and CSV export) understand the same query parameters:

Parameter Meaning
limit page size, default 100, maximum 1000
offset offset
sort comma-separated columns, - prefix = descending, e.g. sort=name,-created_at
where JSON filter tree, e.g. {"and":[{"col":"status","op":"eq","val":"active"}]}
fields return only these columns, comma-separated, e.g. fields=slug,changed – also for GET /tables/{id}/records/{pk}. Only plain columns requested: the database reads just those, computed fields aren’t evaluated. Unknown name → 400 invalid_fields.
group_by comma-separated columns, outermost first
summary JSON map {"column":"SUM"} (SUM/COUNT/AVG/MIN/MAX)
view ID of a saved view – its filter/sorting/grouping/summary act as the default, unless explicitly overridden by the parameters above

Response shape: { "records": [...], "pageInfo": { "limit", "offset", "totalRows", "hasMore" }, "summary": {...} }.

Response shape for errors

{ "error": { "code": "short_code", "message": "human-readable description" } }