Render a video
Send prose, a topic, or a catalogue id; receive a narrated video. Asynchronous: answers with a jobId. Poll GET /v1/jobs/ for status and artifacts. Artifact URLs point at the origin holding the bytes, so downloads never travel through this API.
Authorizations
A workspace API key.
Body
Send story and nothing else is required — the prose is the input, and the video is filed under an id derived from it. videoId, slug and topic are the other way in: they name something already in this deployment's catalogue and each needs a domain to be read against. Exactly one of the four.
Which library the subject is read from. Optional, and not something to send when you are supplying your own text: with story it defaults to stories, the domain that renders prose. Required with videoId, slug or topic, because those name an entry in one particular catalogue and mean nothing without it.
algorithms, science, course, stories, chess, howto, ugc An entry already in this deployment's catalogue for domain. You do not need one to render your own writing — send story instead.
1 - 300A catalogue entry by slug. See videoId.
1 - 300A catalogue subject by name, for the domains that resolve one. See videoId.
1 - 300Your own prose, narrated and rendered as-is — an article, a lesson, a chapter. This is the whole input: the video is filed under an id generated from the text, so nothing has to exist on our side first. Up to 40,000 characters.
1 - 40000What to call the finished video. Derived from the text when omitted.
1 - 200horizontal for long-form, vertical for a feed. Defaults to horizontal.
horizontal, vertical Low, medium, high or 4K. Defaults to m. Higher costs more wall-clock, not more credits.
l, m, h, k How the picture is made: motif for animated typography and diagrams, images for illustrated stills, blender for 3D scenes. Chosen for you when omitted.
motif, images, blender Narration engine. Left to the deployment default when omitted.
1 - 60A voice id understood by ttsProvider.
1 - 200A model id understood by ttsProvider.
1 - 200An https URL to POST the finished job to, signed with X-VC-Signature. Omit it and poll GET /v1/jobs/{jobId} instead.
The project to file this work under. Optional: omit it and one is created for you, and its id comes back on the response — read it from there rather than assuming. Pass the same id across calls when you want the script, the render and the thumbnail to land in one container. A project this workspace does not own answers not_found; the work is never silently filed somewhere else.
1 - 200Response
Success.
The project this work was filed under. Read it from here — a call that sent no projectId had one created, and this is where its id comes back.
"prj_9x2a4c"
What this call actually cost, which is not always what was quoted.
300
Poll GET /v1/jobs/{jobId}. When that job reports status: "done", the finished file is job.artifacts.video — an origin URL you fetch directly, not through this API.
"job_4k1b7d"
Acceptance, not completion. The work has not started when this returns.
"queued"Your balance after the charge. Absent when billing is disabled for the workspace.
3900