Render a video
Send prose or a canonical video 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.
Headers
Stable retry key for this logical paid call. Reuse it after a timeout to receive the original result without duplicate work or spend.
1 - 255Send 1 to get the price, balance and budget verdict without running anything.
"1"The approved price; a call that would cost more is refused and nothing is charged.
^\d+$Body
- Option 1
- Option 2
- Option 3
- Option 4
Send exactly one source: story for prose that Sigmora routes by videoType, or videoId for the sole renderer identifier in an explicit domain.
Your 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 - 40000An HTTPS URL to POST the terminal job event to. Requires callbackSecret; omit both fields and poll GET /v1/jobs/{jobId} instead.
2048Your secret for verifying X-Sigmora-Signature on callbackUrl deliveries (32 to 512 characters). Required with callbackUrl, never echoed, and never sent to the renderer.
32 - 512The existing project to file this work under. Create it with POST /v1/projects, then reuse its id across related calls. A project this workspace does not own answers not_found; the work is never silently filed somewhere else.
1 - 200How your writing should be filmed, and the field to reach for when you are supplying story. lesson explains a subject — definitions, worked steps, the shape a class has; howto turns instructions into numbered, narrated steps; story is narrative, with a cold open and a build; social is short-form vertical in the UGC idiom — a hook in the first half second, escalating beats, big on-screen text that carries the message with the sound off. They are genuinely different pipelines, not styles: a lecture rendered as a story reads as one, which is the failure this field exists to prevent. Omit it and the type is chosen from the writing and reported back on the response as videoType.
lesson, howto, story, social Which catalogue videoId belongs to. Required for a catalogue render. When supplying your own writing in story, choose videoType instead and leave this unset ("stories" remains accepted with story for compatibility and means a story).
algorithms, science, course, howto, stories, chess, ugc The sole renderer identifier. For catalogue work it names an entry in domain; the course, howto and UGC domains also accept free text here. To let Sigmora classify your own prose into a pipeline, send story plus optional videoType instead.
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. Narrative stories default to h; other lanes use their renderer default. 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 For 3D story renders, review rendered shots with vision and restage weak compositions. Required when the live renderer profile is cinematic or flagship; optional for animatic. Slower and more expensive. It improves composition but does not promote the bundled animatic assets to flagship quality; that also requires the verified rigged/PBR pack.
Advanced deterministic mode: fill visual slots without external visual providers. Not valid with renderer "blender".
Render a low-cost 480p15 review copy and stop before final delivery. Finalize it with POST /v1/jobs/{jobId}/finalize, which renders the same body at full quality (cached script and narration are reused where possible). Each accepted render is metered.
Advanced lesson override. Omit it to use the pinned general_course workflow; when set, courseWorkflowVersion is required.
1 - 120Installed version of courseWorkflowId. Omit both workflow fields to use Sigmora’s pinned lesson default.
1 - 40Additional installed teaching capabilities for a free-text course render.
301 - 120Optional lesson-level editorial shape. Valid for free-text videoType: lesson only; catalog lessons already carry a frozen classification.
faceless-explainer, finance-explainer, lesson-deep-dive, tutorial-how-to, presentation, short-quick-tip, market-recap Optional pinned marketplace visual pack for a free-text lesson. The exact revision is resolved before queueing and remains fixed for retries.
editorial-signal, night-interface, evidence-ledger, footage-journal, presenter-focus, founder-editorial, kinetic-impact Editorial runtime target for a free-text lesson or chess analysis. Chess defaults to 10 minutes and accepts 6-20; the target guides authoring and never hard-trims source.
x <= 240White player selector. Required for chess renders.
1 - 120Black player selector. Required for chess renders.
1 - 120Chess editorial format. Defaults to full-game-analysis.
full-game-analysis, tactical-breakdown, opening-story, endgame-lesson Chess knowledge assumed by the narration. Defaults to intermediate.
beginner, intermediate, advanced Require board-image verification before TTS. Defaults to true.
Narration engine. Omitted requests use Speechify Simba 3.2.
speechify, elevenlabs, deepgram, gemini Provider-specific voice id. There is no universal accepted list; omit both ttsProvider and ttsVoice to use Sigmora’s supported default voice. A voice registered to a real person is checked for consent and refused with forbidden if you may not use it.
1 - 200Provider-specific approved model. It must match ttsProvider (Speechify when omitted); automatic lower-model fallback is disabled.
"simba-3.2"Ask for the ready-to-post extras in the SAME call. The title, description, tags and chapters already come with every render as job.artifacts.youtube; this adds the shorts. They arrive on the same job you poll, under job.package, once the video is done. Shorts are charged separately only when that follow-on work starts, and that shorts charge is refunded if the follow-on work fails.
Response
Success.
- Option 1
- Option 2
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.download. Video renders expose an origin URL; private 3D artifacts expose an authenticated API handoff that redirects to a short-lived origin URL.
"job_4k1b7d"
Acceptance, not completion. The work has not started when this returns.
"queued"The existing project this work was filed under. It matches the projectId supplied by the caller after workspace ownership was verified.
"prj_9x2a4c"
Your balance after the charge. Absent when billing is disabled for the workspace.
3900
Which pipeline is filming your writing. Echoed back ALWAYS, including when you did not choose one — a type picked for you is a decision about the finished video, and a decision you cannot see is one you cannot correct.
lesson, howto, story, social The workflow frozen onto a free-text lesson, including when Sigmora selected it.
The frozen workflow version used for a free-text lesson.