CueFrame · Schema
ComposeCreateRequest
POST /projects/:id/compose body.
CompanyVideoVideo EditingVideo RenderingAI AgentsMCPMediaDeveloper Tools
Properties
| Name | Type | Description |
|---|---|---|
| suggestionId | string | |
| fromComposition | boolean | Reuse the project's current composition as the compose starting point (critique-retry path). The Director RE-AUTHORS graphics: if the current composition is client-authored and contains graphic clips |
| briefId | string | Compose from a persisted Brief (create_brief) — the intent-first door: every Brief field is HONORED or the request is refused loudly naming the field (window from beat moment-pinning; seeded graphics |
| format | object | Optional format override. Phase 2 ignores this — format precedence is project.compositionFormat → 9:16 fhd 30fps default. |
| scope | object | RequestScope discriminated union (per compose-api-contract.md). Editor-only scopes (captions/overlay-track/broll/overlay-instance/segment) require an editor-session token; API tokens get 403 on those. |
| critique | string | Structured critique block (per compose-api-contract.md decision #11). Capped at 2KB total; per-criterion blocks capped at 500 chars. |
| parentJobId | string | Pointer to the prior compose job this run iterates on. Surfaced on the resulting compose job as baselineComposeJobId. |
| maxCandidates | integer | Ensemble size, 1–5. Defaults to one; explicit multi-candidate runs divide the job budget across candidates and admit at most two concurrently. A held editorial checkpoint always uses one candidate. |
| budgetUsd | number | Per-job budget cap (USD). Clamped at the route against the org's composeMaxBudgetUsdPerJob setting. |
| qualityThreshold | number | Composite-score accept threshold. Server default per contract. |
| seed | integer | Deterministic seed for replay. |
| clientNonce | string | Opaque caller token that disambiguates intentional same-critique retries. Without it, identical (project, sug, seed, critique) tuples deduplicate; with it, retries create a fresh execution. |
| holdAt | array | Opt-in checkpoint gates. Each named stage pauses the compose at its boundary (status → awaiting_input) for client review via resume. Absent/empty ⇒ fully autonomous. Non-empty ⇒ the run is a single sp |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/cueframe-ai/json-schema/cueframe-ai-compose-create-request-schema.json",
"title": "ComposeCreateRequest",
"description": "POST /projects/:id/compose body.",
"x-generated": "2026-11-10",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/cueframe-ai-compose-api-openapi.yml#/components/schemas/ComposeCreateRequest",
"type": "object",
"properties": {
"suggestionId": {
"type": "string",
"minLength": 1
},
"fromComposition": {
"description": "Reuse the project's current composition as the compose starting point (critique-retry path). The Director RE-AUTHORS graphics: if the current composition is client-authored and contains graphic clips (overlay/component/card), the request is refused (validation_error naming the clips) — render it verbatim with create_render instead. The director's own output (critique-retry) is exempt.",
"type": "boolean"
},
"briefId": {
"description": "Compose from a persisted Brief (create_brief) — the intent-first door: every Brief field is HONORED or the request is refused loudly naming the field (window from beat moment-pinning; seeded graphics carried VERBATIM as locked clips; exclusions enforced; locale + caption emphasis threaded to the Director). Exactly ONE of suggestionId | fromComposition | briefId.",
"type": "string",
"minLength": 1
},
"format": {
"description": "Optional format override. Phase 2 ignores this — format precedence is project.compositionFormat → 9:16 fhd 30fps default.",
"$ref": "#/$defs/Format"
},
"scope": {
"description": "RequestScope discriminated union (per compose-api-contract.md). Editor-only scopes (captions/overlay-track/broll/overlay-instance/segment) require an editor-session token; API tokens get 403 on those."
},
"critique": {
"description": "Structured critique block (per compose-api-contract.md decision #11). Capped at 2KB total; per-criterion blocks capped at 500 chars.",
"type": "string",
"maxLength": 2000
},
"parentJobId": {
"description": "Pointer to the prior compose job this run iterates on. Surfaced on the resulting compose job as baselineComposeJobId.",
"type": "string"
},
"maxCandidates": {
"description": "Ensemble size, 1–5. Defaults to one; explicit multi-candidate runs divide the job budget across candidates and admit at most two concurrently. A held editorial checkpoint always uses one candidate.",
"type": "integer",
"minimum": 1,
"maximum": 5
},
"budgetUsd": {
"description": "Per-job budget cap (USD). Clamped at the route against the org's composeMaxBudgetUsdPerJob setting.",
"type": "number",
"exclusiveMinimum": 0
},
"qualityThreshold": {
"description": "Composite-score accept threshold. Server default per contract.",
"type": "number",
"minimum": 0,
"maximum": 10
},
"seed": {
"description": "Deterministic seed for replay.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"clientNonce": {
"description": "Opaque caller token that disambiguates intentional same-critique retries. Without it, identical (project, sug, seed, critique) tuples deduplicate; with it, retries create a fresh execution.",
"type": "string",
"maxLength": 64
},
"holdAt": {
"description": "Opt-in checkpoint gates. Each named stage pauses the compose at its boundary (status → awaiting_input) for client review via resume. Absent/empty ⇒ fully autonomous. Non-empty ⇒ the run is a single spine.",
"maxItems": 3,
"type": "array",
"items": {
"type": "string",
"enum": [
"content",
"layout",
"motion"
]
}
}
},
"additionalProperties": false,
"$defs": {
"Format": {
"type": "object",
"properties": {
"aspectRatio": {
"type": "string",
"enum": [
"16:9",
"9:16",
"1:1",
"4:5"
]
},
"fps": {
"anyOf": [
{
"type": "number",
"const": 24
},
{
"type": "number",
"const": 25
},
{
"type": "number",
"const": 30
},
{
"type": "number",
"const": 60
}
]
},
"resolution": {
"type": "string",
"enum": [
"hd",
"fhd",
"4k"
]
},
"platform": {
"type": "string"
}
},
"required": [
"aspectRatio"
]
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/cueframe-ai-compose-create-request"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.