Making videos
Every video starts with one call: POST /v1/render. This page explains the choices you make
in that call. For every field and its limits, see the
Create render reference.
Brief or scene plan
Section titled “Brief or scene plan”Send one of these.
A brief
Section titled “A brief”A brief is a plain-language description of the video, up to 4,000 characters. Reignitor
plans the scenes, writes the narration and starts the render.
{ "brief": "A 30 second advert for Northwind Coffee's weekly subscription. Show the beans, the roasting, and a happy customer opening the box.", "kind": "ad", "duration_sec": 30, "brand_name": "Northwind Coffee", "category": "coffee"}Fields that shape the plan:
| Field | Default | What it does |
|---|---|---|
kind |
ad |
ad for an advert, training for a training video. |
duration_sec |
20 for ad, 60 for training |
Target total length, 5 to 120 seconds. |
narrator |
true |
false makes a video with no voice-over. |
brand_name |
none | The brand name the planner should use. |
category |
none | The product category, for example coffee or saas. |
title |
written for you | A title for the video. |
Planning spends credits. If planning fails you get 502 PLAN_FAILED and the planning
credits are refunded. If you send plan_notes back to a person, they explain anything the
planner flagged in its own plan.
A scene plan
Section titled “A scene plan”A scene_plan is your own list of 1 to 12 scenes, rendered in order, as given. Use it when
you already know what each scene should show and say.
{ "title": "Northwind launch", "scene_plan": [ { "type": "motion", "role": "hook", "prompt": "Fresh coffee, delivered weekly", "script": "Fresh coffee, delivered every week.", "motion": { "beat": "hook" } }, { "type": "t2v_fast", "role": "body", "prompt": "Slow close-up of coffee beans tumbling out of a kraft paper bag onto a wooden table, soft morning light", "script": "Roasted in small batches, a few days before it reaches you." }, { "type": "motion", "role": "cta", "prompt": "Order at northwind.example", "script": "Order today.", "motion": { "beat": "cta" } } ]}Scene types:
type |
What it renders |
|---|---|
motion |
Crisp animated text, numbers, steps or a logo. Use it for anything that must be readable. |
t2v_fast |
Generated footage of people, places or objects, from prompt. |
i2v_fast |
Generated footage that starts from an image: the scene’s ref_image_url, or your product photo. |
s2v |
A presenter talking to camera. Needs a face. |
walk_talk |
A presenter walking and talking. Needs a face. |
footage |
Your own clip from video_url, played as-is. |
Each scene takes a prompt (what the camera sees, or the on-screen copy for motion) and an
optional script (the narrator’s line). The full list of scene fields is in the
reference.
An API render never picks up a brand on its own, even if your account has brand kits. You choose the brand in each request:
brand_logo_url: your logo, as a publichttpsURL or a data URI.brand_colors: optional, up to 12 hex colours, such as["#3B2416", "#F4E9DC"].
{ "brief": "A 20 second advert for Northwind Coffee.", "brand_logo_url": "https://example.com/northwind-logo.png", "brand_colors": ["#3B2416", "#F4E9DC"]}Without a logo, the video renders with no logo and no end card. To say so explicitly, send
brand_enabled: false.
Product photo
Section titled “Product photo”product_image_url is a photo of your product (a public https URL or a data URI). It keeps
the product the same in every scene, instead of letting the model invent one.
Some formats sell a product and need a photo. If you set such a route (for example
product-ad, unboxing, ugc-ad or app-demo) and the plan shows the product, a render
with no photo is refused with 400 PRODUCT_IMAGE_REQUIRED. To render without one on purpose,
send product_enabled: false.
Presenter
Section titled “Presenter”s2v and walk_talk scenes show a person talking. They need a face: avatar_preset_id for
the whole video, or ref_image_url on the scene. A plan with a talking scene and no face is
refused with 400 PRESENTER_REQUIRED. To let Reignitor use a stock presenter, send
presenter_enabled: false.
Nothing to anchor the video
Section titled “Nothing to anchor the video”When you set a route and send no brand, no product photo and no presenter, and the plan
would generate all of its pictures, the render is refused with 422 NO_ANCHOR. Without an
anchor the model invents the product and the people, and they will not match your brand.
Add one of the three, or send product_enabled: false or presenter_enabled: false to
render anyway.
Look and sound
Section titled “Look and sound”| Field | Values | Default |
|---|---|---|
aspect |
9:16, 16:9, 1:1, 4:5, 4:3, 3:4 |
9:16 |
quality |
draft, standard, premium |
draft |
language |
a language code, such as en, fr, de |
en |
art_style |
cinematic, stop_motion, mascot, watercolour, whimsy_3d |
cinematic |
music_style |
upbeat-tech, cinematic-epic, lo-fi-chill, corporate-pop |
set by the format |
voice_preset_id |
a narrator voice ID | a default voice |
upscale |
true or false |
set by the format and quality |
Higher quality and upscale cost more credits and take longer.
Training videos
Section titled “Training videos”Set kind: "training" with a brief to plan a training video instead of an advert. The
planner writes steps and a recap, and uses motion scenes for on-screen instructions.
{ "brief": "How to reset a password in the Acme admin panel. Three steps, then a recap.", "kind": "training", "duration_sec": 60, "aspect": "16:9", "brand_logo_url": "https://example.com/acme-logo.png"}Retries and idempotency
Section titled “Retries and idempotency”Send an Idempotency-Key header with a unique value, such as a UUID, on every render. If
your request times out and you retry with the same key, Reignitor refuses the repeat and
does not render or charge a second time.
- The repeat is refused, so it does not return the original
job_id. Save thejob_idfrom the first response whenever you get one. - With a
scene_plan, the repeat returns409 DUPLICATE_REQUEST. - With a
brief, the repeat can return402with the messageThis request was already submitted. Treat it the same as a409. - Use a new key for each new video. Reusing a key for a different video refuses that video.
Without the header, every call is a new render and a new charge.
Watermarks
Section titled “Watermarks”The render response has a watermarked field. Videos made on the Agency plan are not
watermarked.
Output
Section titled “Output”When the job succeeds, video_url on GET /v1/job/{id} is a direct link to the MP4.
Download it and keep your own copy.