CueFrame
Api

Mint a workspace (project + imported source) in one call

The one-call editing handle: create a project and import the source video URL into it. Returns { projectId, mediaId, importWorkflowId } — the handle a (paying or keyed) agent threads through the compose/render loop. The import is async; poll GET /v1/media/:mediaId for readiness.

POST
/v1/workspace

Authorization

AuthorizationBearer <token>

API key auth. Prefix cf_live_ for production orgs, cf_test_ for sandbox.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/workspace" \  -H "Content-Type: application/json" \  -d '{    "videoUrl": "http://example.com"  }'
{  "projectId": "string",  "mediaId": "string",  "importWorkflowId": "string"}
{  "error": {    "code": "string",    "message": "string",    "details": {      "property1": null,      "property2": null    }  }}
{  "error": {    "code": "string",    "message": "string",    "details": {      "property1": null,      "property2": null    }  }}
{  "error": {    "code": "string",    "message": "string",    "details": {      "property1": null,      "property2": null    }  }}
{  "error": {    "code": "string",    "message": "string",    "details": {      "property1": null,      "property2": null    }  }}
{  "error": {    "code": "string",    "message": "string",    "details": {      "property1": null,      "property2": null    }  }}
{  "error": {    "code": "string",    "message": "string",    "details": {      "property1": null,      "property2": null    }  }}
{  "error": {    "code": "string",    "message": "string",    "details": {      "property1": null,      "property2": null    }  }}

Queue a verify (judge) job for a compose-session composition POST

Enqueue the server-side judge for this session's composition and return immediately with a jobId (202-style — the judge takes minutes: it samples eval beats, renders them in the warm box, and grades four criteria). Poll GET /v1/jobs/{jobId} (or MCP wait_job kind=verify) until terminal; the succeeded result carries per-criterion scores 0–10, a weighted composite, and a worst-first critique — the scoring rubric is server-side and never returned. Enqueue is idempotent per composition state (same session + same composition → the same job while it runs); a failed job re-enqueues as a fresh attempt. Note: mutating the session (apply/render) while a verify job runs fails the job loud with a version-gate error — verify, then edit. The compose_verify meter fires on the job's SUCCESS terminal, never at enqueue.

Return the caller's account: identity, plan, entitlements, cost ceilings GET

Returns the org this key is bound to (server-resolved from auth, never the body), the current plan/tier, a per-feature `entitlements` map (included? + remaining/limit for metered features), and `costCeilings` (e.g. the generate_media per-call USD ceiling). Read it BEFORE a metered call (create_render / compose / generate_media / create_brand_kit) to budget without burning a round-trip on a 402. Plan/entitlement values come from the billing backend best-effort; unknown values are `null` and `billingConfigured:false` flags an environment where billing isn't configured.