The PRISM H3 studio guide
Everything the studio can do, how to drive it, and how to get the most out of every render. If you only read one section, read The prompt formula and End-to-end walkthrough.
Live studio: https://h3pikaun.rpcserve.website · owner login only.
1. The one-minute mental model
The engine is MiniMax-H3 ref2va (reference-to-video + audio) running a PRISM-v2 merge of two H3 finetunes. You give it:
- a text prompt,
- optionally up to 9 pictures, 3 videos and 3 audio clips,
- a duration, resolution, step count and seed.
It returns one short clip with synchronised stereo audio. There is no separate audio pass and no timeline editor. A film is built by rendering several short clips and stitching them.
prompt + references
│
▼
Modal H200 · ComfyUI · H3
│
▼
one clip (2–15 s, video + audio)
│
▼
S3 bucket1-708 ──► Gallery / Batch / Stitch ──► story.mp4
Three consequences drive every technique in this guide:
- Think in shots, not scenes. H3 is trained on short shots. Five seconds is the cost and quality sweet spot.
- The prompt controls motion, camera, light and sound. References control identity and look. Do not make the text fight the references.
- Warm containers are cheap; cold starts are not. Queue a whole shot list in one batch instead of pressing Generate six times an hour apart.
2. Capability matrix
| Capability | What you get | Where |
|---|---|---|
| Text to video | Clip + synced audio from a prompt | Compose → Generate |
| Picture reference | Identity, product, style or texture from 1–9 images | References tray |
| Video reference | Motion, timing and framing from 1–3 clips | References tray |
| Audio reference | Soundtrack / beat / ambience conditioning from 1–3 clips | References tray |
| Multi-reference | Pictures + videos + audio in one shot | References tray |
| Aspect | Landscape 16:9, portrait 9:16, square 1:1 | Compose |
| Duration | 2–15 s, snapped to the H3 frame grid | Compose / Batch |
| Resolution | Draft 0.2 MP → Standard 0.3 MP → High 0.4 MP → Max 1.0 MP | Compose |
| Steps | 1–50; 8 is the turbo sweet spot | Compose |
| Upscale | 2× or 4× ESRGAN after decode (audio untouched) | Compose |
| Seed | Fix it for a consistent sequence | Compose |
| Async jobs | Queue, close the tab, come back later | Queue tab |
| Batch | One prompt per line, shared settings and refs, one warm session | Batch tab |
| Stitch | Join shots into one MP4, hard cut or crossfade | Batch tab |
| Gallery | Browse, open, delete studio outputs | Gallery tab |
| Live spend | Cycle spend, credits applied, credits left, per-app split | Spend tab |
| Recipes | One-click shot prompts and full stories | Recipes tab |
Model limits: 2–15 s, 6000 prompt characters, 16 MB per reference file. Pictures are downscaled so the short edge is at most 2048 px. Reference videos are re-encoded to 24 fps, about 0.3 MP, and at most 15 s. Audio is trimmed to 15 s and converted to 44.1 kHz stereo.
3. The controls, and what they actually do
Prompt
The only mandatory field. Up to 6000 characters. It drives subject, action, camera, light, palette, style and the generated soundtrack. See the formula below.
Quality
Quality sets the native megapixels, not a model variant:
| Quality | MP | Landscape (approx.) | Use |
|---|---|---|---|
| Draft | 0.2 | 608×352 | Blocking, timing tests, animatics |
| Standard | 0.3 | 736×416 | Quick review, social drafts |
| High | 0.4 | 864×480 | Default. Best quality per dollar |
| Max | 1.0 | 1376×768 | One hero shot, not a whole story |
Cost grows faster than pixel count because attention is quadratic in tokens. High is the default for a reason: it is the last big visual jump before the price curve turns steep.
Aspect
landscape 16:9 for film and YouTube, portrait 9:16 for phones and Shorts,
square 1:1 for product and feed posts. Pick the delivery aspect before you
render; cropping later loses composition.
Duration
2–15 s, snapped to the H3 frame grid (17n + 5 frames at 24 fps):
| Requested | Frames | Actual |
|---|---|---|
| 2 s | 56 | 2.333 s |
| 5 s | 124 | 5.167 s |
| 8 s | 192 | 8.000 s |
| 10 s | 243 | 10.125 s |
| 12 s | 294 | 12.250 s |
| 15 s | 362 | 15.083 s |
Longer is not automatically better. Past ~10 s, drift, identity slip and camera wander become visible, and the cost curve is steep: 15 s at Max costs about 5.3× a 5 s Max clip for 2.9× the frames.
Steps
The merge carries an 8-step TURBO parent, so 8 steps is the default. Going to 20 costs roughly 35–100% more for a modest detail gain. Use 20 only for a hero frame or when a difficult reference needs the extra settle. Values below 8 get fast and soft.
Upscale
ESRGAN runs after decode. One 2× network is used for everything, so 4× is two 2× passes.
- 2× is cheap delivery polish: about 6 s on a 5 s 864×480 shot. Good default for portrait/social delivery.
- 4× is rarely worth it: about 175 s for a 5 s clip because most of the time is resampling and encoding 3456×1920 × 124 frames.
- Native Max beats upscaling when you need real texture. ESRGAN invents plausible edges; it cannot recover detail that was never rendered.
Seed
Fix the seed to reduce variance across a sequence. A seed does not lock identity; the reference picture does. Change the seed when you want a genuinely different composition, and keep it when you want the same shot with a small prompt tweak.
References
| Kind | Limit | Prep |
|---|---|---|
| Pictures | 9 | Short edge ≤ 2048 px, 16 MB max |
| Videos | 3 | 2–15 s, re-encoded to 24 fps / ~0.3 MP |
| Audio | 3 | Trimmed to 15 s, 44.1 kHz stereo |
In the prompt, refer to them as <Picture 1>, <Video 1>, <Audio 1>
(case-insensitive). Every referenced number must exist in the tray. A prompt that
mentions <Picture 2> with one picture attached fails validation.
Video soundtracks are available as audio references too. Standalone audio clips are numbered first; soundtracks from reference videos follow.
4. The prompt formula
Use this order. It mirrors how a shot is actually built.
[shot size + subject] +
[one clear action] +
[camera move + lens] +
[light + palette] +
[environment + texture] +
[style + grain] +
[sound design]
A filled-in example
Medium close-up of a lighthouse keeper lifting binoculars in a stone lamp room — he freezes, breath fogging the glass — slow push-in, 85 mm, shallow focus — cold blue storm light, one warm lamp behind him — rain streaking the windows, brass and wet wool — 35 mm film grain, maritime thriller — sound: rain on glass, lamp mechanism, a low tension drone.
Why it works:
- one subject and one action;
- one camera move, not three;
- light and palette are explicit;
- texture words give the model something to render;
- sound is written as part of the shot, not left to chance.
Shot vocabulary
| Element | Useful words |
|---|---|
| Shot size | extreme wide, wide, medium, medium close-up, close-up, macro |
| Camera | locked-off, slow push-in, pull-back, orbit, crane up, handheld, tracking, Steadicam |
| Lens | 24 mm, 35 mm, 50 mm, 85 mm, 100 mm macro, anamorphic, long lens |
| Light | golden hour, blue hour, practicals, rim light, softbox, hard sun, volumetric |
| Texture | wet asphalt, dust motes, steam, film grain, condensation, fabric weave |
| Sound | room tone, sub-bass, rain hiss, footsteps, a single chime, distant traffic |
One action per shot
Bad: “She runs through the market, jumps a cart, turns a corner, calls a friend and hails a taxi.”
Better: “She runs through the market, shoulders passing the camera.” The next shot does the jump. The next does the call. This is how you get 60 seconds out of twelve 5-second clips instead of one 15-second mush.
Camera moves are expensive
A locked-off shot with a moving subject is the most stable. A slow push-in is next. Orbits and crane moves are beautiful but drift more. Handheld hides small errors; long lenses compress and flatter. Use one move, and make it slow.
Write the sound
H3 generates audio from the same prompt. If you do not describe sound, you get
generic ambience. Put a Sound: clause at the end:
- Dialogue-free scenes: room tone, weather, footsteps, machinery, a score bed.
- Music-led scenes: name the instrumentation and the energy, or attach an audio reference.
- Silence: “near-silence, a faint room hum” works better than “no sound”.
Positive beats negative
Describe what should be there. A short style negation at the end (“no 3D look”, “no text overlays”) is fine, but a prompt built out of “no …” clauses gives the model nothing to render.
Length
Sweet spot: 60–140 words. Under 40 words leaves too much to chance; over 250 words starts to dilute the action. The 6000-character limit is a ceiling, not a target.
5. Reference playbooks
5.1 Character / identity
Upload: a sharp, evenly lit portrait or three-quarter shot. Face and wardrobe clear, no heavy filters, no other people, short edge ≥ 1024 px.
Prompt pattern:
The person in
<Picture 1>[does one thing], [shot size], [lens], [light], [environment]. Sound: [room tone + action sounds].
Rules:
- Mention
<Picture 1>in every shot of the sequence. - Do not re-describe the face in text; conflicting descriptions cause morphing.
- Keep the same picture and seed across the sequence.
- Full-body reference for fashion, head-and-shoulders for dialogue.
- Avoid profiles, hands over the face and heavy occlusion in the reference.
5.2 Product / commercial
Upload: a clean cut-out or a well-lit product photo on a simple background.
Prompt pattern:
The product in
<Picture 1>[rotates / is revealed / catches a light sweep], macro 100 mm, [single softbox / rim light], [surface], [background]. Sound: a low airy drone, one soft chime.
Settings: square + High + 2× upscale is the social delivery preset. Use a black or dark grey background for reflections and highlights.
Rules:
- One product, one motion, one light idea per shot.
- Keep the product centered; macro shots are where H3 shines.
- Save the logo/hero frame for a native Max render.
5.3 Style / look transfer
Upload: a painting, print, texture or film still whose palette and texture you want.
Prompt pattern:
[A normal scene], rendered entirely in the visual style of
<Picture 1>: its palette, brushwork, texture and lighting. [Slow camera move], [lens]. Sound: [ambience].
Rules:
- Describe the motion and composition, not the style (the reference carries it).
- Keep the camera move small so the style reads.
- Use a photographic composition; otherwise the model may copy the reference’s layout.
5.4 Motion transfer
Upload: a 2–5 s clip with one clear performer and one clear move. Avoid cuts, shaky cameras and crowded frames.
Prompt pattern:
The person in
<Picture 1>performs the exact movement from<Video 1>, matching its timing, camera angle and energy. Replace the performer but keep the motion, framing and rhythm. Sound: clean room tone with the movement sounds. Photoreal, consistent identity, no cuts.
Rules:
- Match the output duration to the best section of the reference clip.
- Reference videos are downscaled to ~0.3 MP, so do not expect fine detail from them.
- If the move is complex, split it into two shots.
5.5 Audio / beat
Upload: a 15 s max track or stem with clear transients.
Prompt pattern:
Abstract liquid ink and chrome ribbons bloom in darkness, pulsing with
<Audio 1>. Cuts land on the strongest transients; the camera pushes through the fluid on the beat. Sound: the referenced track, nothing else.
Rules:
- Audio conditions the generated soundtrack; it is not a sample-accurate mux. Treat beat sync as best effort.
- Keep visual beats broad (one hit per second at most). Do not ask for 16 cuts in 5 s.
- For a music-led story, keep the same audio reference and a 0.2 s crossfade.
5.6 Multi-reference
You can attach several references in one shot. Use them with distinct jobs:
<Picture 1>(the person) walks through the set from<Picture 2>(the location), wearing the jacket from<Picture 3>, while<Audio 1>sets the pulse.
Rules:
- Two or three references is the clarity limit in practice, even though nine are allowed.
- Give every reference a role in the sentence.
- Do not attach near-duplicate images of the same thing; they compete.
6. Consistency across a sequence
Consistency is a system, not a prompt word.
- Identity: one clean reference picture, tagged in every shot, same seed.
- Look: write a one-line “look bible” and paste it into every prompt — palette, lens, grain, sound bed. Example: “cold teal and amber, 35 mm grain, rain bed, anamorphic flares.”
- Wardrobe / props: name them explicitly in every shot (“yellow raincoat”, “brass compass”). The model does not remember the previous clip.
- Geography: describe the space the same way each time (“the narrow alley behind the noodle stall”). Use the same reference image for the location.
- Motion: one action per shot; cut on the action rather than asking one clip to carry a whole sequence.
- Sound: keep the same ambience description; change it only when the location changes.
A fixed seed reduces noise variance, but it is not a global character lock. If the face changes, the reference or the framing is the problem, not the seed.
7. Planning a story
The 5-second economy
| Target | 5 s shots | Batch cost (High, 8 steps) |
|---|---|---|
| 30 s | 6 | ≈ $0.47 |
| 60 s | 12 | ≈ $0.72 |
| 2 min | 24 | $1.22 |
| 3 min | 36 | $1.72 |
A batch pays the cold start once. Rendering the same 2-minute film as 24 separate sessions costs about $6.38; the 3-minute version about $9.57.
Beat sheet template
For a 30–60 s piece, six to twelve shots:
- Establish — where and when, one wide.
- Detail — a texture or object that sets tone.
- Character — who we follow, one clear action.
- Escalate — the problem or chase.
- Turn — the reveal, decision or reversal.
- Resolve — a quieter image, a button.
For 2–3 minutes, repeat that arc three or four times, or use movements: dawn → day → dusk → night. The City Symphony recipe is a 36-shot example of the movement structure.
Animatic first
Before the final batch:
- Set Draft, 2 s, 4 steps.
- Queue the whole shot list.
- Watch the stitch.
- Fix ordering and blocking.
- Re-queue the good list at High, 5 s, 8 steps.
The draft pass costs cents and catches most story problems.
8. End-to-end walkthrough
Step 1 — sign in and check status
Open the studio and sign in with the owner account. The pill in the top bar should read API ready. If it says degraded, open the tooltip; usually the bucket probe or token is the issue, not the model.
Step 2 — load a recipe or write a shot
Open Recipes. Pick a shot recipe and press Load. The composer fills with the
prompt and its settings. Reference recipes mark <Picture 1> red until the matching
file is in the tray.
Or write your own with the formula in section 4.
Step 3 — attach references (optional)
Open References, drop pictures/videos/audio, and check the badge. Use the exact tags in the prompt. References stay attached for the whole batch.
Step 4 — set the render
For a first test: Draft, 2 s, 4 steps. For delivery: High, 5 s, 8 steps, upscale off (or 2× for portrait/social). Watch the estimate under the button; it shows warm render time, GPU cost and output size.
Step 5 — generate or queue
- Generate clip renders one shot synchronously.
- Queue shots (Batch tab) takes one prompt per line and queues them all with the current quality, aspect, steps, seed and references.
The Queue tab shows live state. You can close the browser; jobs keep running and the status lives in S3.
Step 6 — stitch
When every shot in a batch is succeeded, the batch card shows READY TO STITCH.
Press Stitch story. A CPU-only ffmpeg container fetches the shots in completion
order and uploads <batch>/story.mp4. Polling shows collecting → joining →
succeeded.
- Crossfade
0= hard concat (default, most predictable). - Crossfade
0.3=xfade/acrossfade, clamped to 25% of the shortest clip. It requires audio in every shot; H3 always produces audio, but a failed shot breaks it.
Step 7 — review and deliver
Open the story in Gallery (or the batch card). Download from S3, or use the
presigned link. Output filenames carry the step count and resolution, e.g.
output-8-steps-864x480.mp4, so versions are easy to compare.
Step 8 — check spend
The Spend tab shows live Modal billing: cycle spend, credits applied, credits left against your allowance, this studio’s share and today’s workspace total. Per-job cards show GPU time only; trust the app-level total for real money.
9. Batch and stitch mechanics
- A batch writes to
prism/studio/batch-<id>/.POST /stitchalso accepts any other folder underprism/studio/, so a set of single renders can be joined too. - Each shot writes
<batch>/<job>/status.jsonand its MP4. - The GPU runs
max_containers=1, so shots render back-to-back in one warm H200. - The stitcher sorts by completion time, which is prompt order.
- Shots are re-encoded to a constant frame rate before concat, so mixed sources do not break the join.
- The story is uploaded to
<batch>/story.mp4and appears in the Gallery. - The stitch is CPU-only, about a cent for a 2–3 minute film.
- Every render is probed before upload. If the returned file's dimensions do not match the requested graph, the job fails instead of uploading the wrong clip. This is what stops a reference-video preview from ever being saved as a render.
Gotchas:
- The Batch tab preflights every line before queueing. If a prompt references
<Picture 1>,<Video 1>or<Audio 1>and the matching attachment is missing, the whole batch is blocked and the warning names the line. Nothing is rendered or billed. - Stitching before every shot succeeds queues nothing useful; wait for
READY. - A failed shot blocks the whole stitch, with the job id and its error in the
message. Delete that shot in the Gallery (its
status.jsonis removed with it), then stitch again withexpectedset to the number of good shots. Verified end to end: refused atexpected=3, succeeded atexpected=2after the drop. - Crossfade needs audio on every clip. If one shot failed or was deleted, use a hard cut or re-render it.
- Deleting a shot from the Gallery flags the job as failed but leaves the batch card intact, so the missing shot is visible.
- A 100-shot cap keeps a single batch manageable. Split longer films into parts and stitch each part, then join the parts outside the studio if needed.
- Order is prompt order. Put the prompts in the textarea in story order; do not rely on filenames.
- If you re-queue into an existing batch prefix, the prefix can hold more finished
shots than the new batch expects. The stitcher now keeps the newest
expectedclips and ignores older ones, so a retried batch cannot absorb a previous run. The studio itself always creates a freshbatch-<id>prefix. - A video reference is an input, not an output. The engine now selects the
SaveVideonode explicitly and ignores previews registered byLoadVideo.
10. Cost planning
Measured warm renders (H200, GPU time only)
| Steps | Resolution | Duration | Time | Cost |
|---|---|---|---|---|
| 8 | 608×352 | 5 s | 12.0 s | $0.015 |
| 20 | 608×352 | 5 s | 21.0 s | $0.027 |
| 8 | 864×480 | 5 s | 24.0 s | $0.030 |
| 20 | 864×480 | 5 s | 48.1 s | $0.061 |
| 8 | 864×480 + 2× | 5 s | 21–31 s | $0.03–0.04 |
| 8 | 864×480 + 4× | 5 s | 174.7 s | $0.22 |
| 8 | 1376×768 | 5 s | ~93 s | ~$0.12 |
| 20 | 1376×768 | 5 s | 186.2 s | $0.235 |
| 8 | 864×480 | 15 s | 105.1 s | $0.13 |
| 8 | 1376×768 | 15 s | 492.5 s | $0.62 |
Real billing
The app-level Spend number is the truth. It includes:
- H200 GPU time ($0.001261/s),
- reserved memory (128 GiB adds ~18%),
- cold-start weight loading (~85 s),
- the 60 s scale-down window,
- CPU orchestration and stitching.
All-in H200 + memory is about $0.001545/s ($5.56/hr). A cold session costs roughly 13–22¢ before any frames render; extra clips in a warm container are close to the GPU rates above.
Budget rules
- Queue everything in one batch; never pay the cold start per shot.
- Use Draft + 2 s for blocking, High + 5 s for delivery.
- Keep 20 steps for one hero shot, not the whole film.
- Prefer native Max over 4× upscale.
- Check the Spend tab before and after a long session.
- Scale to zero between sessions; idle H200 is the most expensive mistake.
11. Recipes tab
The Recipes tab is the in-studio version of this guide. It contains:
- 20 shot recipes — text-only, picture, multi-reference and audio examples across sci-fi, action, portrait, product, fashion, food, anime, horror, nature, sports and documentary.
- 7 full stories — complete shot lists that load into Batch: Neon Rain (30 s), The Last Lighthouse (60 s), Orbital Dawn (2 min), Character Journey (60 s), Beat Drop (30 s), Product Launch (30 s), City Symphony (3 min).
- 7 operating tips — the short version of this guide.
Every card shows what it needs (<Picture 1>, <Video 1>, <Audio 1>), marks
missing references red, and gives you Load and Copy prompt. Story cards load
all prompts into the Batch textarea with the right length, aspect, seed and crossfade.
Recipes are starting points, not laws. Change the subject, keep the structure.
12. Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
Prompt mentions <Picture 1> but no picture is attached |
Tag with no matching upload | Upload the reference or remove the tag |
Too many references |
Over 9 pictures / 3 videos / 3 audio | Remove extras |
Reference is larger than 16 MB |
File too big | Compress or resize |
Reference video must be 2–15 s |
Clip length out of range | Trim it |
| Output looks soft | Draft/Standard quality, or too few steps | High + 8 steps |
| Output drifts or morphs | Long clip, complex action, weak reference | Shorten, simplify, better reference |
| Identity changes between shots | Face described in text, no reference, seed changed | Tag the picture, do not re-describe the face, keep the seed |
| Camera wanders | Multiple moves in one prompt | One move, slower |
| Audio is generic | No sound clause | Describe the sound bed explicitly |
| Beat sync is approximate | Audio conditioning is not a mux | Broaden visual beats, accept best effort |
Job stuck at queued |
Cold start / orchestrator waking | Wait ~85 s, then refresh |
| Job failed with memory error | Too much resolution × duration × steps | Lower quality, duration or steps |
READY TO STITCH never appears |
A shot failed or is still running | Open the Queue tab, read the error, re-render |
| Crossfade stitch fails | A clip has no audio, or crossfade too long | Set crossfade 0 or shorten it |
| Gallery is empty | Wrong prefix | Switch to everything under prism/ |
Spend shows — |
Billing API unavailable | Refresh; check the API health pill |
| Studio looks stale after an update | Cached module/assets | Hard refresh (Ctrl+F5) |
13. Safety, licensing and good practice
- Both parent finetunes and the MiniMax-H3 base carry their own licences. Check them before commercial use.
- Use only lawful, consensual material. Never depict real people without consent.
- Do not upload private or sensitive images to a shared bucket.
- Treat generated audio as synthetic; label it where that matters.
- Keep prompts and references appropriate for the audience you are publishing to.
14. Quick reference card
Duration 2–15 s, snaps to 17n+5 frames
Default render High (864×480), 5 s, 8 steps, seed fixed
Delivery High + 2× upscale, or Max for one hero
Blocking Draft, 2 s, 4 steps, whole shot list
Prompt subject + action + camera + light + texture + style + sound
References <Picture n> <Video n> <Audio n>; every n must exist
Batch 1 prompt per line, shared refs/settings, max 100
Stitch hard concat at 0; crossfade 0.3 (needs audio everywhere)
Story sizes 30 s = 6 shots · 60 s = 12 · 2 min = 24 · 3 min = 36
Cost anchor 5 s High 8 steps ≈ 24 s ≈ $0.03 GPU; 2 min batch ≈ $1.22 all-in
Truth Spend tab, not per-job GPU estimates
15. Verified coverage
The live studio was tested end to end on 2026-11-02 through the same Worker routes
the browser uses. Every artifact was downloaded and probed with ffprobe, then
checked for motion, audio level and stitch duration.
| Test | Cases | Result |
|---|---|---|
| API validation (missing refs, limits, bad settings, empty prompt, stray stitch) | 12 | 12/12 rejected with 400 before any GPU work |
| Recipe loading in the real UI | 20 | 20/20 exact prompt and settings |
| UI submission and playback | 1 | playable 448×448, 2.333 s clip |
| Capability matrix | 10 | 10/10 |
| Shot recipes at published settings | 20 | 20/20 |
| Total | 30 | 30/30 PASS |
The capability matrix covered text-only, a 3-shot picture batch with a hard cut, a 2-shot video-reference batch with a 0.3 s crossfade, mixed picture+video+audio, square with 2× upscale, 4× upscale, a 15 s Max render, the full 9-picture / 3-video / 3-audio limit, and a 6-shot audio story. It consumed about 1971.5 GPU seconds and produced 38 clips / ~38 MB.
Two defects were caught and fixed by this pass:
- video-reference jobs were saving the prepared reference clip instead of the
render — the output picker now takes the
SaveVideonode and the file is dimension-checked before upload; - a reused batch prefix could stitch older finished shots — the stitcher now keeps
exactly the newest
expectedclips.
A second, depth-focused pass closed the remaining gaps: Standard 736×416, 20 steps
(filename and summary.steps), portrait + 2× at 960×1728, square + 4× at
1792×1792, a 12-shot picture story stitched to 25.833 s, a mixed
picture+video+audio story at 4.5 s, bit-identical frames from a repeated seed, the
100-shot batch limit (101 blocked, 100 estimated at ~47m / ~$4.39), and failed-shot
stitch recovery. That pass used another 322.5 GPU seconds and found one more
defect: POST /stitch required /batch- in the prefix, so a non-batch render
folder could never be stitched; it now accepts any folder under prism/studio/.
The failed-shot behaviour is deliberate and documented: the stitch refuses until
the failed shot is deleted, then succeeds with the remaining shots.
The test references were flat illustrations, so identity was judged on hair, wardrobe and composition cues. For production identity checks, use a real consented portrait.
16. Where to go next
- Recipes tab — load a shot or a story and press Generate.
- Batch tab — paste a shot list and stitch it.
README.md— deployment, API fields, measured benchmarks, operations.client.py— scripted renders from the command line.