Undo a canvas authoring command
Applies the complete inverse of a recorded authoring command atomically, including dependent connector changes and deleted objects. Requires `canvas:write`. Refuses undo when an affected object has been changed since the original command or is locked, preserving collaborators' later work.
apiKeyAuthorizationBearer <snoze_sk_…>Workspace API key created in Workspace settings → API keys. Scopes on the key bound what it can read and write.
workspaceId*stringsurfaceId*stringapplication/json- body
commandId*stringThe commandId from the write receipt to undo. Fails if any affected object has changed since.
1 <= length <= 200undoId*string1 <= length <= 200Success
application/json- response
data*curl -X POST 'https://api.snoze.dev/v1/workspaces/string/surfaces/string/canvas/undo' \ -H 'Content-Type: application/json' \ -d '{ "commandId": "string", "undoId": "string"}'{ "data": { "surfaceId": "string", "commandId": "string", "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" } ], "warnings": [ "string" ] }}Arrange selected canvas objects
Lays out, aligns, distributes, groups, or recolors explicit objects while preserving their content and rerouting bound connectors. Requires `canvas:write` and expected target versions. Rejects locked objects, stale state, and newly introduced collisions with unrelated work.
Browse persistent board history
Lists recorded board revisions, their editors and AI provenance, and this caller's durable undo/redo targets. Requires canvas:read. History is paginated by version and respects the workspace plan's history window.