SnozeDevelopers
API referenceSurfaces

Render a page against a record for printing

Resolves the page or note surface and the record named by `recordId` independently, then returns a print-ready render of the page with the record's values substituted, laid out for the requested `preset` (`a4` or `80mm`, default `a4`). The caller must have read access to both the surface and the record; surfaces of any other kind are rejected as a validation error.

GET
/v1/workspaces/{workspaceId}/surfaces/{surfaceId}/print
AuthorizationBearer <token>

Workspace API key created in Workspace settings → API keys. Scopes on the key bound what it can read and write.

In: header

Path Parameters

workspaceId*string
surfaceId*string

Query Parameters

recordId*string
preset?|null

Response Body

application/json

application/json

application/json

curl -X GET "https://example.com/v1/workspaces/string/surfaces/string/print?recordId=string"
{  "data": {    "preset": "80mm",    "surface": {      "id": "string",      "workspaceId": "string",      "kind": "page",      "title": "string",      "icon": "string",      "manifest": {},      "createdAt": "string",      "updatedAt": "string",      "itemId": "string"    },    "record": {      "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"    },    "blocks": [      {        "id": "string",        "workspaceId": "string",        "surfaceId": "string",        "parentBlockId": "string",        "kind": "paragraph",        "orderKey": "string",        "manifest": {},        "layout": {          "x": 0,          "y": 0,          "w": 0,          "h": 0,          "tab": "string"        },        "plainText": "string",        "createdAt": "string",        "updatedAt": "string"      }    ]  }}