API and MCP
On every plan. Create a key in Settings → API and MCP, then send it as Authorization: Bearer cr_live_…. Errors are JSON: { "code": "MACHINE_CODE", "error": "message" }.
MCP
Server URL: (Streamable HTTP). Tools: list_projects, get_review, add_note, resolve_note, set_approval, export_markers.
REST
| Call | What it does |
|---|---|
GET /api/me | Who the key belongs to and their workspaces. |
GET /api/workspaces/{id} | Projects, members and storage. |
GET /api/projects/{id} | Files with their version stacks, approvals and note counts. |
GET /api/versions/{id}/review | One version: media, checks, alignment with the last version, and every note. |
POST /api/versions/{id}/notes | { "t": 12.5, "t2"?: 15, "text": "…" } leaves a note. |
POST /api/notes/{id}/resolve | { "resolved": true } |
POST /api/notes/{id}/replies | { "text": "…" } |
POST /api/versions/{id}/approval | { "status": "approved" | "needs_changes" | "in_review" } |
GET /api/versions/{id}/markers?format= | resolve-edl, premiere-csv, fcpxml, avid-txt or csv. |
POST /api/versions/{id}/markers/import | Send an exported marker file back; markers marked done resolve their notes. |
POST /api/projects/{id}/uploads | Start a resumable upload: { "fileName", "size", "assetId"? }, then PUT /api/uploads/{versionId}/parts/{n} 16 MB parts and POST …/complete. Or, faster: POST /api/uploads/{versionId}/sign { "parts": [1, 2, …] } (up to 64) answers storage links, and each part is PUT to its link straight (exactly its size); GET /api/uploads/{versionId} lists the parts that landed either way. |