Create a brief (the persisted intent the Director composes from)
Persist the video's intent — goal/audience/format/tone/CTA, beats with optional moment pinning ({mediaId, startSec, endSec}), captions (style + emphasis phrases), seeded graphics (carried VERBATIM as locked clips), exclusions (hard negatives the Director must never author), and gate config (holdAt / autoApprove). Then compose it with POST /projects/:id/compose {briefId} — every field is honored or the compose is refused loudly naming the field. The response carries the brief-time quote (compose + estimated render) to relay BEFORE any metered call.
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/briefs" \ -H "Content-Type: application/json" \ -d '{ "projectId": "string", "goal": "string" }'{ "id": "string", "projectId": "string", "kind": "authored", "sourceSuggestionId": "string", "name": "string", "goal": "string", "audience": "string", "platform": "string", "format": { "aspectRatio": "16:9", "fps": 24, "resolution": "hd" }, "durationSec": 1, "tone": "string", "cta": "string", "locale": "string", "hook": "string", "caption": "string", "beats": [ { "id": "string", "intent": "string", "durationSec": 1, "source": { "mediaId": "string", "startSec": 0, "endSec": 1 } } ], "mustIncludes": [ "string" ], "references": [ "string" ], "captions": { "styleId": "string", "emphasisPhrases": [ "string" ] }, "motionStyle": { "textAnimation": "string", "transitions": "string", "colorMood": "string", "captionStyle": "string" }, "seededGraphics": [ { "id": "string", "startTime": 0, "duration": 1, "source": { "kind": "media", "mediaId": "string", "trim": { "start": 0, "end": 0 }, "excludedRanges": [ { "start": 0, "end": 0, "reason": "string" } ], "volume": 0, "muted": true, "playbackRate": 1, "sync": "video", "kenBurns": "in", "volumeDb": 0, "fadeInMs": 0, "fadeOutMs": 0, "loop": true, "reframe": { "segments": [ { "startSec": 0, "endSec": 1, "focus": { "mode": "frame-center" }, "intent": "string", "zoom": 1, "ease": { "in": 0, "out": 0 }, "bias": { "x": -0.3, "y": -0.3 } } ] } }, "kind": "video", "opacity": 0, "scale": 1, "rotation": 0, "position": { "x": 0, "y": 0 }, "region": { "x": 0, "y": 0, "w": 1, "h": 1 }, "fit": "cover", "effects": [ { "primitiveId": "string", "params": { "property1": null, "property2": null } } ], "transitionIn": { "type": "string", "duration": 1 } } ], "exclusions": [ "overlay" ], "gates": { "holdAt": [ "content" ], "autoApprove": true, "reviewMode": "agent" }, "quote": { "composeUsd": 0, "renderUsdPerExport": 0, "estimatedJourneyUsd": 0, "revisionCyclesIncluded": 0 }, "createdAt": 0, "updatedAt": 0}{ "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 } }}List metered usage events (the A2 usage ledger) GET
Every metered billing event, newest-first, with attribution: featureId, amount, the project/job that produced it, and the event's LIST price in USD (the invoice may zero it inside a plan allowance). Filter by projectId, jobId, and/or a [from, to) epoch-ms period. Events appear moments after the job's success terminal (the meter is scheduler-dispatched).
Delete a brief DELETE
Required permission: projects:write