Duplicate a record
Creates a copy of a record with its duplicable field values and its page content, titled `<source> copy` unless `title` is given. Requires `records:write` on the database; if copying the page content fails, the copy is deleted rather than left incomplete.
apiKeyAuthorizationBearer <snoze_sk_…>Workspace API key created in Workspace settings → API keys. Scopes on the key bound what it can read and write.
workspaceId*stringdatabaseId*stringrecordId*stringapplication/json- body
title?string|nullSuccess
application/json- response
data*curl -X POST 'https://api.snoze.dev/v1/workspaces/string/databases/string/records/string/duplicate' \ -H 'Content-Type: application/json' \ -d '{}'{ "data": { "id": "1d8a44e0-7c93-4f21-b60a-3e8d2f5a9c14", "workspaceId": "4b81aa0c-6d2f-4b19-9f0e-1a7c3d5e8b02", "databaseId": "9f2c1e7a-3b58-4d0c-8e27-6a1f9d4b3c85", "contentSurfaceId": "string", "title": "Ship the desktop app", "data": { "status": "in_progress", "due": "2026-08-01" }, "relations": {}, "computed": {}, "system": {}, "related": {}, "archived": false, "externalId": "string", "createdByUserId": "string", "updatedByUserId": "string", "createdAt": "2026-07-10T08:00:00.000Z", "updatedAt": "2026-07-14T11:26:02.000Z" }}Create a record from a record template
Creates a record whose values are the template's `data` overlaid with any `data` sent in the request, then copies the template's page content into the new record. Clients may preallocate `id` so an optimistic row keeps its identity. Requires `records:write` on the database; if copying the page content fails, the new record is deleted so no half-built record remains.
Import records into a database from CSV
Parses a CSV document and creates one record per row, mapping columns to fields either through explicit `mappings` or by matching column headers to field keys and labels, and reports how many rows were created, skipped, and which failed. Requires `records:write` on the database. Rejected when the CSV exceeds 10 MB, 500 columns, or 50,000 rows, when it has duplicate or unterminated columns, when a mapping targets the same field twice, or when a mapped column is not present; `onError` decides whether a bad row aborts the import or is skipped.