Kolbo.AIKolbo.AI Docs
Developer API

Blender, Adobe & Resolve Bridges

Send commands to a Blender, Premiere Pro / After Effects or DaVinci Resolve session connected through the Kolbo plugin.

When a user has the Kolbo plugin open in Blender, Premiere Pro / After Effects, or DaVinci Resolve Studio, that app registers a live session with Kolbo. The bridge routes let your API key send commands to that session and read their results. Kolbo relays the command; the plugin carries it out inside the user's app.

The three bridges share one contract. Replace {app} with blender, adobe or resolve:

GET  /api/v1/{app}/sessions                    connected sessions
POST /api/v1/{app}/commands                    queue a command
GET  /api/v1/{app}/commands/:commandId         read a command's state and result

POST /api/v1/{app}/logout and Blender's POST /api/v1/blender/agent/plan are used by the plugins themselves and only accept the plugin's own device credential (403 BLENDER_KEY_REQUIRED, ADOBE_KEY_REQUIRED or RESOLVE_KEY_REQUIRED otherwise).

Responses use { "success": true, ... }; errors use { "success": false, "code": "...", "error": "..." }.

Sessions

GET /api/v1/{app}/sessions takes page (default 1) and page_size (1–100, default 25; 400 INVALID_PAGINATION otherwise) and returns sessions plus pagination: { page, page_size, total, has_more }. Each session has session_id, instance_id, name, {app}_version (for example blender_version), platform, capabilities, connected, connected_at, last_seen_at and expires_at. A session that stops checking in expires after about 50 seconds.

Queue a command

POST /api/v1/{app}/commands needs a write-enabled API key (403 API_KEY_READ_ONLY).

{
  "command_type": "timeline.get",
  "payload": {},
  "idempotency_key": "timeline-read-0001"
}
FieldRequiredNotes
command_typeYesOne of the app's command types (below). Anything else returns 400 INVALID_COMMAND_TYPE
payloadNoObject, default {}. Up to 256 KiB (413 PAYLOAD_TOO_LARGE). Fields depend on the command type; unknown fields are rejected
session_idNoNeeded only when more than one session is connected (409 SESSION_REQUIRED). With none connected: 409 NO_ACTIVE_SESSION
idempotency_keyNoRepeating it with the same request returns the original command (200, replayed: true); with a different request, 409 IDEMPOTENCY_KEY_REUSED

Unknown top-level fields return 400 INVALID_REQUEST. A new command returns 202; if the plugin could not be reached the response is 503 with success: false. Up to 128 commands may be active per account (429 ACTIVE_COMMAND_LIMIT_REACHED). URLs in a payload must be public https addresses (400 INVALID_URL).

AppCommand types
Blenderscene.get, docs.search, viewport.capture, scene.apply_operations, media.import, render.start, scene.undo, file.operation, python.execute
Adobeproject.get, timeline.get, media.import, timeline.place, sequence.create, captions.import, comp.edit (After Effects), script.run, frame.capture
Resolveproject.get, timeline.get, media.import, timeline.edit, script.run, frame.capture

A command type a given host cannot perform (for example an After Effects command sent to Premiere Pro) is rejected by the plugin. Script commands (python.execute, script.run) take code (up to 64 KiB) and a required purpose (up to 500 characters).

Approval and status

Read-only commands (Blender scene.get and docs.search; Adobe and Resolve project.get and timeline.get) run without approval. Every other command needs the user to approve it in the Kolbo panel. The command's risk is read, write or sensitive; scripts, Blender file operations, payloads with external URLs and deleting edits are sensitive, and risk_reasons says why.

GET /api/v1/{app}/commands/:commandId returns the command:

FieldNotes
command_id, session_id, command_typeIdentity
statusqueued, awaiting_approval, running, succeeded, failed, denied or canceled
risk, risk_reasons, approval_required, approvalApproval details
result, errorSet when the command finishes
created_at, updated_at, completed_at, expires_atCommands expire 24 hours after creation

Poll until status is succeeded, failed, denied or canceled. awaiting_approval is not a polling state: ask the user to approve or deny the command in the Kolbo panel. Commands belong to the account that created them; any other id returns 404 COMMAND_NOT_FOUND.

Limits

RouteLimit
GET .../sessions, GET .../commands/:commandId120 per minute
POST .../commands60 per minute and 300 per hour, per account

Command limits count every request and return 429 RATE_LIMITED.

MCP

The MCP server exposes these as blender_*, adobe_* and resolve_* tools, one per command type, with blender_get_command_status, adobe_get_command_status and resolve_get_command_status for results.