Records API
All record endpoints use app-scoped paths: /api/apps/{app}/tables/{table}/records.
List records
Section titled “List records”GET /api/apps/{app}/tables/{table}/recordsSupports pagination, sorting, filtering, and field selection via query parameters. The response is an envelope:
{ "data": [ { "id": "...", "title": "..." } ], "pagination": { "limit": 20, "next_cursor": "...", "has_more": true }}Restrict the returned columns with ?fields=title,status (comma-separated).
Pagination
Section titled “Pagination”GET /api/apps/{app}/tables/{table}/records?limit=25&page=2Default limit is 20, maximum is 100. Pagination is cursor-based: list responses include a pagination object with next_cursor, prev_cursor, and has_more. Pass ?after=<cursor> (or ?before=<cursor>) to page through results, or ?page=N to jump to an offset-based page. Exact totals are opt-in via ?include_total=true.
Sorting
Section titled “Sorting”GET /api/apps/{app}/tables/{table}/records?sort=-created_atPrefix a field with - for descending order; without the prefix it is ascending. Combine multiple sort keys with commas, e.g. ?sort=status,-created_at.
Filtering
Section titled “Filtering”GET /api/apps/{app}/tables/{table}/records?filter=eq(status,'active')See Filter Syntax for the full query language.
Create a record
Section titled “Create a record”POST /api/apps/{app}/tables/{table}/recordsContent-Type: application/json
{ "title": "Website Redesign", "budget": "25000.00", "status": "active"}Returns the created record object directly (HTTP 201).
Get a record
Section titled “Get a record”GET /api/apps/{app}/tables/{table}/records/{id}Update a record
Section titled “Update a record”PATCH /api/apps/{app}/tables/{table}/records/{id}Content-Type: application/json
{ "status": "completed"}Partial updates — only include the fields you want to change.
Delete a record
Section titled “Delete a record”DELETE /api/apps/{app}/tables/{table}/records/{id}All deletes are soft deletes. Deleted records are excluded from queries but preserved in the database.
Batch operations
Section titled “Batch operations”Batch requests carry an action (create, update, or delete) and the operands for that action.
POST /api/apps/{app}/tables/{table}/records/batchContent-Type: application/json
{ "action": "create", "records": [ {"title": "Task 1", "status": "active"}, {"title": "Task 2", "status": "draft"}, {"title": "Task 3", "status": "active"} ]}Updates and deletes target records by id, ids, or a filter:
POST /api/apps/{app}/tables/{table}/records/batchContent-Type: application/json
{ "action": "update", "target": {"type": "filter", "filter": "eq(status,'draft')"}, "changes": {"status": "active"}}Search
Section titled “Search”GET /api/search?q=query&preview=trueGlobal search across all tables the user has access to. The preview=true parameter enables ranked full-text results with highlights. Without it, only counter (e.g. ABC-123) and UUID-format queries are supported. See Search for details.