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.
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
targets*array<>1 <= items <= 100action*string"layout""align_left""align_top""distribute_horizontal""distribute_vertical""group""recolor"direction?|nullstyle?|nullcommandId*string1 <= length <= 200Success
application/json- response
data*curl -X POST 'https://api.snoze.dev/v1/workspaces/string/surfaces/string/canvas/arrange' \ -H 'Content-Type: application/json' \ -d '{ "targets": [], "action": "layout", "commandId": "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" ] }}Edit selected canvas objects
Updates text and styles or deletes explicit element ids in one command. Requires `canvas:write` and expected versions for every target. Rejects inherited locks, stale versions, and deletions that leave dependent objects behind. Returns affected objects and an undoable command receipt.
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.