Templates
One document per finished film, with its inputs, looks and brand kits, applied to your footage from the desktop, an agent, the CLI or the API.
Start from a finished film
A template is one template.cueframe document: a complete, editable
composition whose replaceable parts are named {{parameters}}, plus the
components it needs, optional presets (looks) and the brand kits those looks
render with. Applying a template binds your media and values into that
composition; every layer stays editable afterwards.
The public catalog lives in
cueframe-ai/cueframe-templates
and is served at https://api.cueframe.ai/catalog/templates.json, no account
needed. Your org keeps its own templates under /v1/templates.
Carved by water
A reusable WebGL title over waterfall footage. Two looks: amber over the falls, or pale stone greys with their own brand kit.
Yosemite Peregrines
A depth-aware title behind a real speaker, word-timed captions, source audio, a grade and a bound brand kit, with the subject matte prepared.
Use one
Every surface applies the same document through the same lane; pick the one you already work in.
Desktop. Open the Library (the side rail's Library entry), choose a card,
and press New project. The form asks for the template's inputs: a preset
prefills the rest, each media parameter takes a file or the template's own
sample. The project is created on your computer, the media imported, the
template applied. Save your own project as a template with the Director's
save_as_template, and check it with check_template before publishing.
Agent (MCP). list_templates shows the catalog and get_template returns a
document's parameters and presets. start_template creates a new project;
wait_job reports when its media and prepared assets are ready:
{ "template": "yosemite-warp-text", "projectName": "Yosemite", "preset": "granite",
"values": { "text": "GRANITE" }, "media": { "source": { "sample": true } } }Call wait_job with { "kind": "template", "id": "<jobId>" } until it returns
the ready project. apply_template remains available for an explicit edit to
an existing project.
CLI. template run starts the same preparation job and renders after it is
ready. template status <jobId> --wait reconnects to a running job.
template validate checks a document offline.
cueframe template run yosemite-warp-text --preset granite --media source=sample --values text=CARVED -o carved.mp4
cueframe template run ./template.cueframe --media source=./clip.mp4 --no-render --json
cueframe template status <jobId> --wait --json
cueframe template validate ./template.cueframeAPI. Start a project from a template with an idempotency key, then poll its job status:
POST /v1/templates/yosemite-peregrines/instantiate
Authorization: Bearer <api key>
Idempotency-Key: <stable request key>
{ "projectName": "Yosemite", "values": {}, "media": { "source": { "sample": true } } }The 202 response carries a jobId; GET /v1/template-jobs/{jobId} returns
the project id at the ready stage. Failed jobs can be retried with
POST /v1/template-jobs/{jobId}/retry; preparing jobs can be cancelled with
POST /v1/template-jobs/{jobId}/cancel. A media value is { "mediaId" } for something you uploaded,
{ "url": "https://…" } to import, or { "sample": true } for the template's
own sample. POST /v1/templates/{id}/apply is the separate edit operation for
an existing project. A public slug is imported into your org on first use;
POST /v1/templates with a document publishes your own.
Renders without a project
POST /v1/templates/:id/renders renders a template per request, without a
project: the answer carries a shareUrl that redirects to the MP4 once the
render completes, and a posterUrl. Send an Idempotency-Key per row so a
retry never renders twice. This is the lane for personalised video at volume.
Looks and brand kits
A preset names a set of values and, optionally, a brand kit. The catalog lists
one card per look, and each look's kit under its own id:
template:<slug> for the document's kit, template:<slug>:<preset> for a
preset's, so two templates never merge a kit. Pass brandKitId to apply or
render with one of your org's kits instead.
Write one
A template is written in the desktop app from a project you have made, or by
hand: template.cueframe is JSON the kernel validates (v: 1, slug,
composition, parameters, components, optional presets, brandKit and
gallery). The repository's CONTRIBUTING
covers the document, the validator (node tools/validate.mjs) and the catalog.
A published template binds every preset with its sample media; drafts may
still lack a sample.