Skip to main content
POST
Render a video

Authorizations

Authorization
string
header
required

A workspace API key.

Headers

idempotency-key
string

Stable retry key for this logical paid call. Reuse it after a timeout to receive the original result without duplicate work or spend.

Required string length: 1 - 255
x-sigmora-quote-only
string

Send 1 to get the price, balance and budget verdict without running anything.

Allowed value: "1"
x-sigmora-max-credits
string

The approved price; a call that would cost more is refused and nothing is charged.

Pattern: ^\d+$

Body

application/json

Send exactly one source: story for prose that Sigmora routes by videoType, or videoId for the sole renderer identifier in an explicit domain.

story
string
required

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.

Required string length: 1 - 40000
callbackUrl
string<uri>
required

An HTTPS URL to POST the terminal job event to. Requires callbackSecret; omit both fields and poll GET /v1/jobs/{jobId} instead.

Maximum string length: 2048
callbackSecret
string
required

Your secret for verifying X-Sigmora-Signature on callbackUrl deliveries (32 to 512 characters). Required with callbackUrl, never echoed, and never sent to the renderer.

Required string length: 32 - 512
projectId
string
required

The 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.

Required string length: 1 - 200
videoType
enum<string>

How 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.

Available options:
lesson,
howto,
story,
social
domain
enum<string>

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).

Available options:
algorithms,
science,
course,
howto,
stories,
chess,
ugc
videoId
string

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.

Required string length: 1 - 40000
title
string

What to call the finished video. Derived from the text when omitted.

Required string length: 1 - 200
aspect
enum<string>

horizontal for long-form, vertical for a feed. Defaults to horizontal.

Available options:
horizontal,
vertical
quality
enum<string>

Low, medium, high or 4K. Narrative stories default to h; other lanes use their renderer default. Higher costs more wall-clock, not more credits.

Available options:
l,
m,
h,
k
renderer
enum<string>

How the picture is made: motif for animated typography and diagrams, images for illustrated stills, blender for 3D scenes. Chosen for you when omitted.

Available options:
motif,
images,
blender
visionRefine
boolean

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.

offlineSlots
boolean

Advanced deterministic mode: fill visual slots without external visual providers. Not valid with renderer "blender".

draft
boolean

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.

courseWorkflowId
string

Advanced lesson override. Omit it to use the pinned general_course workflow; when set, courseWorkflowVersion is required.

Required string length: 1 - 120
courseWorkflowVersion
string

Installed version of courseWorkflowId. Omit both workflow fields to use Sigmora’s pinned lesson default.

Required string length: 1 - 40
courseCapabilities
string[]

Additional installed teaching capabilities for a free-text course render.

Maximum array length: 30
Required string length: 1 - 120
courseVideoArchetype
enum<string>

Optional lesson-level editorial shape. Valid for free-text videoType: lesson only; catalog lessons already carry a frozen classification.

Available options:
faceless-explainer,
finance-explainer,
lesson-deep-dive,
tutorial-how-to,
presentation,
short-quick-tip,
market-recap
courseVideoTemplateId
enum<string>

Optional pinned marketplace visual pack for a free-text lesson. The exact revision is resolved before queueing and remains fixed for retries.

Available options:
editorial-signal,
night-interface,
evidence-ledger,
footage-journal,
presenter-focus,
founder-editorial,
kinetic-impact
targetMinutes
number

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.

Required range: x <= 240
chessWhite
string

White player selector. Required for chess renders.

Required string length: 1 - 120
chessBlack
string

Black player selector. Required for chess renders.

Required string length: 1 - 120
chessFormat
enum<string>

Chess editorial format. Defaults to full-game-analysis.

Available options:
full-game-analysis,
tactical-breakdown,
opening-story,
endgame-lesson
chessAudience
enum<string>

Chess knowledge assumed by the narration. Defaults to intermediate.

Available options:
beginner,
intermediate,
advanced
chessRequireVisionAudit
boolean

Require board-image verification before TTS. Defaults to true.

ttsProvider
enum<string>

Narration engine. Omitted requests use Speechify Simba 3.2.

Available options:
speechify,
elevenlabs,
deepgram,
gemini
ttsVoice
string

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.

Required string length: 1 - 200
ttsModel

Provider-specific approved model. It must match ttsProvider (Speechify when omitted); automatic lower-model fallback is disabled.

Allowed value: "simba-3.2"
package
object

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.

success
boolean
required
credits
number
required

What this call actually cost, which is not always what was quoted.

Example:

300

jobId
string
required

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.

Example:

"job_4k1b7d"

status
string
required

Acceptance, not completion. The work has not started when this returns.

Allowed value: "queued"
projectId
string

The existing project this work was filed under. It matches the projectId supplied by the caller after workspace ownership was verified.

Example:

"prj_9x2a4c"

creditBalance
number

Your balance after the charge. Absent when billing is disabled for the workspace.

Example:

3900

videoType
enum<string>

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.

Available options:
lesson,
howto,
story,
social
courseWorkflowId
string

The workflow frozen onto a free-text lesson, including when Sigmora selected it.

courseWorkflowVersion
string

The frozen workflow version used for a free-text lesson.

{key}
any