API · Endpoints

Rows

Read and write rows on a table surface. Single-row CRUD, atomic bulk ops up to 500 changes per call, cross-surface moves, and per-cell change history.

Generated from src/lib/api-paths/rows.ts. The body schemas come straight from CreateRowSchema, UpdateRowSchema, and MoveRowsSchema in the runtime, so what's documented here is what's enforced.

get/api/workspaces/{slug}/rows

List rows in a workspace

Returns rows from the workspace's primary table surface unless `?surface=<slug>` is passed. Newest-first by default.

Auth: Bearer token (API key or OAuth access token).

Path parameters

NameTypeRequiredDescription
slugstringyes

Query parameters

NameTypeRequiredDescription
surfacestringnoSurface slug to scope to. Omit for the primary table surface.
limitstringnoPage size. Default 50, max 500.
offsetstringnoOffset-based pagination cursor.

Responses

StatusBodyDescription
200objectRow list with total count.
403ErrorForbidden.

post/api/workspaces/{slug}/rows

Create a row

Add a new row to a table surface. `data` keys must match column ids on the surface; values are coerced to the column type.

Auth: Bearer token (API key or OAuth access token).

Path parameters

NameTypeRequiredDescription
slugstringyes

Request body

FieldTypeRequiredDescription
dataobjectyes
positionintegerno
surfaceIdstringno
surfacestringno

Responses

StatusBodyDescription
200objectCreated.
400ErrorInvalid body.
402ErrorRow cap reached for the current plan.
403ErrorForbidden.

get/api/workspaces/{slug}/rows/{id}

Get a single row

Fetch one row by id, including its current cell values.

Auth: Bearer token (API key or OAuth access token).

Path parameters

NameTypeRequiredDescription
slugstringyes
idstringyes

Responses

StatusBodyDescription
200objectRow detail.
404ErrorRow not found.

patch/api/workspaces/{slug}/rows/{id}

Update a row

Patch the `data` field on an existing row. Only the column keys you include get updated; other cells are left alone.

Auth: Bearer token (API key or OAuth access token).

Path parameters

NameTypeRequiredDescription
slugstringyes
idstringyes

Request body

FieldTypeRequiredDescription
dataobjectyes
positionintegerno
surfaceIdstringno
surfacestringno

Responses

StatusBodyDescription
200objectUpdated.

delete/api/workspaces/{slug}/rows/{id}

Delete a row

Permanent. No soft-delete on individual rows.

Auth: Bearer token (API key or OAuth access token).

Path parameters

NameTypeRequiredDescription
slugstringyes
idstringyes

Responses

StatusBodyDescription
200objectDeleted.

post/api/workspaces/{slug}/rows/bulk

Bulk row operations

Atomic create + update + delete in a single request. Up to 500 ops per call. All ops apply in one Prisma transaction so partial-success scenarios don't happen.

Auth: Bearer token (API key or OAuth access token).

Path parameters

NameTypeRequiredDescription
slugstringyes

Request body

FieldTypeRequiredDescription
createobject[]no
patchobject[]no
deletestring[]no

Responses

StatusBodyDescription
200objectBulk applied.

post/api/workspaces/{slug}/rows/move

Move rows to a different surface

Atomic batch move. All rows move to the target surface (specified by `surfaceId` or `surface` slug). Positions are recomputed at the destination tail.

Auth: Bearer token (API key or OAuth access token).

Path parameters

NameTypeRequiredDescription
slugstringyes

Request body

FieldTypeRequiredDescription
rowIdsstring[]yes
surfaceIdstringno
surfacestringno

Responses

StatusBodyDescription
200objectMoved.

get/api/workspaces/{slug}/rows/{id}/history

Row change history

Per-cell change history for one row. Returns chronological diffs with author + timestamp.

Auth: Bearer token (API key or OAuth access token).

Path parameters

NameTypeRequiredDescription
slugstringyes
idstringyes

Responses

StatusBodyDescription
200objectHistory entries.