Documentation / Live editor
API REFERENCE

An API with
a human in the loop.

AI edits and manual edits share geometry, selection, keyframes, undo, and saving.

Open native artwork in the studio’s vector editor first. Commands are validated and applied by that open editor. A queued response means the edit has been delivered, not that it has been applied.

Find your open composition

GET/api/v1/editor/sessions

Requires editor:read. Sessions disappear from discovery after 45 seconds without a heartbeat. GET /editor/sessions/{sessionId} returns documentId, revision, selectedObjectIds, playhead, notes, and current native objects.

Submit a precise edit

POST/api/v1/editor/sessions/{sessionId}/commands

Requires editor:write. Use the exact document id and revision you just read, plus a stable unique command id (8–100 letters, numbers, underscores or hyphens). The editor rejects stale revisions, locked objects, and conflicts with active manual input.

{
  "id": "edit-color-0001",
  "documentId": "document-id-from-context",
  "expectedRevision": 12,
  "actions": [
    {
      "op": "set",
      "objectId": "object-id-from-context",
      "values": {
        "fill": "#e7ff70"
      }
    }
  ]
}

Wait for the receipt

GET/api/v1/editor/sessions/{sessionId}/commands/{id}

The status is queued, applied, or rejected. Only applied confirms completion. Retry a lost request with the identical command id and payload. For a revision conflict, fetch fresh context and create a new command id. Receipt history is in memory and expires after one hour or a server restart.

Native operations

OperationPurpose
add_svgAdd sanitized editable SVG geometry
setChange name, fill, stroke, transforms, opacity, or text
pathReplace native path geometry
keysCreate or replace property keyframes
gradientEdit a gradient stop
effectAdjust an editable blur effect
removeRemove an unlocked object

The editor is the authority

Bearer keys cannot submit editor heartbeats or forge applied receipts. Edits stay in the same undo and persistence flow as manual work. This is an HTTP integration; no SDK or MCP server is implied.

Keep exploring the APIBuilt for work that stays editable.