SnozeDevelopers
API referenceCanvas

Apply a batch of canvas operations

Applies an ordered batch of insert, update, and delete element operations in one transaction and returns the affected elements with the new workspace version. Requires `canvas:write` on the surface. Batches are capped at 500 operations, and non-UUID element ids, unknown element types, and malformed order indexes are rejected as validation errors.

POST
/v1/workspaces/{workspaceId}/surfaces/{surfaceId}/canvas/ops

Authorization

apiKey
headerAuthorizationBearer <snoze_sk_…>

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

Path Parameters

workspaceId*string
surfaceId*string

Request Body

application/json
  1. body
clientMutationId?string|null
historyGroupId?|null
historyGroupCancelled?boolean|null
ops*array<||>
commandId?string|null
commandFingerprint?string|null
expectedVersions?|null
expectedElementCount?number|null

Response Body

Success

application/json
  1. response
data*
Example Request
curl -X POST 'https://api.snoze.dev/v1/workspaces/string/surfaces/string/canvas/ops' \  -H 'Content-Type: application/json' \  -d '{  "ops": [    {      "type": "insert",      "element": {        "id": "string",        "type": "rectangle",        "index": "string"      }    }  ]}'
Example Response
{  "data": {    "workspaceVersion": 0,    "elements": [      {        "id": "string",        "workspaceId": "string",        "surfaceId": "string",        "type": "rectangle",        "x": 0,        "y": 0,        "w": 0,        "h": 0,        "angle": 0,        "version": 0,        "versionNonce": 0,        "index": "string",        "isDeleted": true,        "props": {},        "createdAt": "string",        "updatedAt": "string"      }    ]  }}