> ## Documentation Index
> Fetch the complete documentation index at: https://docs.reactor.inc/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Reactor hosts multiple models, each with its own connect slug (modelName) and command/event schema. The catalog of every model — slug, typed SDK package, and links to its schema — is at /model-api-reference/overview. Some models expose one slug per experience (e.g. HappyOyster); always take the slug from the model's own pages, never guess it.
> Fastest path to a working app: `npx create-reactor-app my-app --model=<slug>` scaffolds a complete app with secure auth wired up. Typed TypeScript SDKs are published as @reactor-models/<model>; Python uses the base reactor-sdk package.
> Auth: exchange an API key (rk_...) for a JWT via POST https://api.reactor.inc/tokens from your server. Never put the API key in client-side code.
> Append .md to any docs URL for clean Markdown. Search these docs via the MCP server at https://docs.reactor.inc/mcp.

# H3 Reference Turbo Realtime prompt guide

> Describe subjects, appearance, and sound using ordered reference images.

## Refer to your images

Send one to nine JPEG, PNG, or WebP upload references with each clip. For one image, use
`reference_image`; for an ordered list, use `reference_images`. Supply one field, not both.

The list order determines the names used in your prompt: `Picture 1` is the first image, `Picture 2`
is the second, and so on. Describe the role of each picture. For example, with a subject image
followed by a setting image:

```text theme={"theme":{"light":"github-light","dark":"github-dark-high-contrast"}}
The person in Picture 1 walks through the garden in Picture 2. The camera follows from the side.
Leaves rustle and birds call in the background.
```

References guide subjects and appearance. They do not define a fixed first or last frame.

A reference does not have to be a character. A picture can carry a person, an object, or a place,
and a set that mixes them works well: one image per character, plus one for the setting they act in.
Order the list the way your prompt reads, then name every picture you send.

## Describe the clip and its sound

Use `prompt` to describe what the clip should show and sound like. It must contain nonempty text.
The model stores the prompt unchanged and never truncates it.

There is no character limit, but there is a budget. The prompt is measured in text tokens, and the
default budget is about 2,000 — roughly 8,000 characters of English prose. A prompt past the budget
is accepted by `enqueue` and then fails the build, so it arrives as `clip_failed` rather than as a
refusal. The structure below fits comfortably; a prompt long enough to hit the budget is usually one
that is repeating itself.

Each enqueue keeps its own prompt and ordered reference list, including while other clips build or
play. Supply the references for each new clip; new uploads do not change earlier requests.

## Structure a detailed prompt

Short prompts work. For a clip with several subjects, a specific camera, and its own sound, a
labelled structure gives the model far more to hold onto. The following six sections are a
convention rather than required syntax — the model reads the prompt as plain text — but they cover
the decisions the model has to make, in the order it helps to make them.

| Section                | What it carries                                                             |
| ---------------------- | --------------------------------------------------------------------------- |
| `subject_definitions`  | One line per subject, binding it to a picture and listing what to preserve. |
| `summary`              | One sentence: the clip length, and what happens from start to end.          |
| `retention_analysis`   | Per subject, when it appears and which traits must stay fixed.              |
| `detailed_description` | The look of the clip, what to avoid, then the action broken into beats.     |
| `overall_soundscape`   | What the viewer hears in the scene, including dialogue or its absence.      |
| `non_diegetic_music`   | The score, if any, and how it tracks the action.                            |

<Tip>
  Use whichever sections earn their place. A single subject on a plain background needs a sentence,
  not six headings. Reach for the full structure when you are holding several identities steady at
  once.
</Tip>

### Name and preserve your subjects

Give each subject a stable label, bind it to its picture, and then say which traits must not drift.
Repeat those labels in the action so the model knows who is doing what.

```text theme={"theme":{"light":"github-light","dark":"github-dark-high-contrast"}}
subject_definitions:
<Subject 1> is the baker in <Picture 1>, preserving her face, grey braided hair, flour-dusted navy
apron, and rolled shirtsleeves.
<Subject 2> is the morning market lane in <Picture 2>, preserving its stone paving, striped awnings,
crates of fruit, and low sun from the left.
```

Two habits pay off here:

* **Count the things you do not want duplicated.** Writing "a single canvas tote" or "one silver
  blade" is more reliable than naming the object alone, because it tells the model how many should
  appear.
* **List traits, not adjectives.** Face, hair, garment, and the props a subject carries are what
  hold an identity together across a clip.

### Break the action into beats

Say the look of the clip once, state what you do not want, then walk the action in order. Labelled
beats keep a five-second clip from trying to do everything at once.

```text theme={"theme":{"light":"github-light","dark":"github-dark-high-contrast"}}
detailed_description:
Photorealistic morning market cinema, 16:9, warm low side light, physically coherent motion, stable
identities. One continuous shot with no cuts, no duplicate people, no costume changes, and no
readable text.

[Shot 1, 00:00.000-00:02.000] A waist-height camera frames <Subject 1> at her stall in <Subject 2>,
turning a loaf in both hands as steam rises from the crate beside her.

[Shot 1, 00:02.000-00:05.166] She lifts the loaf toward the camera and smiles. The camera pushes in
slowly to a medium shot while the awning shifts in the breeze behind her.
```

Timecodes are optional, and they help most on short clips where every beat is tight. When you use
them, let the last beat end at the clip's real duration, which the `clip_queued` reply reports.
Longer clips read fine with plain `[Shot 1]` beats in order.

Stating what to avoid is as useful as stating what to show. Phrases like "no cuts", "no duplicate
people", "no costume changes", and "no readable text" reliably remove the artefacts they name.

### Describe the sound

Video and audio are generated together, so the sound belongs in the same prompt. List what the scene
itself makes, and say plainly when there is none.

```text theme={"theme":{"light":"github-light","dark":"github-dark-high-contrast"}}
overall_soundscape:
Quiet market chatter, a crate set down on stone, paper rustling, and one distant bicycle bell. No
dialogue.

non_diegetic_music:
A light acoustic figure that fades in under the push-in and holds.
```

For a spoken line, name the speaker, describe the voice, and wrap the words with the language
tagged:

```text theme={"theme":{"light":"github-light","dark":"github-dark-high-contrast"}}
Looking at the camera, <Subject 1> (S1) says in a warm, unhurried voice, <d>[English] Still hot from
the oven.</d>
```

## Choose reference images that hold up

The reference set does most of the work on identity, so it is worth assembling deliberately.

* **One subject per picture.** A clean, well-lit image of a single character or a single place is
  easier to hold than a group shot the model has to pull apart.
* **Show what you want preserved.** If a costume detail or a prop matters, it should be visible in
  the picture you bind it to.
* **Keep the set coherent.** References that share a palette, time of day, and light direction
  produce a clip that looks like one scene rather than a collage.
* **Any aspect is fine.** Each image must be a single-frame JPEG, PNG, or WebP, at most 25 MiB and
  25 million pixels, with an aspect ratio between 1:4 and 4:1. Images may differ in size from each
  other and from the output canvas, and they are never cropped into a fixed first frame.

## Continue a scene across clips

To continue a scene, pass a generated clip's ID as `continue_from_clip_id` in the next `enqueue`.
Motion, camera, and audio carry forward while the new clip's references guide its appearance. The
source must have finished generating. A blank, unknown, or dropped ID produces an independent clip.

Write a continued clip as the next stretch of the same shot. Three things keep the seam quiet:

* **Repeat the subject definitions.** Each clip is prompted on its own, so the labels and the traits
  to preserve have to appear again.
* **Restate the look.** Naming the same lighting, weather, and palette as the previous clip stops
  the scene from drifting, and opening the action with "the shot continues from…" tells the model
  where it is picking up.
* **Update a subject that changed.** If a clip ends with a mask pushed up or a coat removed, the
  next clip's definition should describe the subject in that new state, even though the reference
  image still shows the old one. The references guide appearance; your prompt says which moment of
  it you are in.

Setting `set_flush_on_clip_end.enabled` to `false` holds the last frame and avoids flushing between
ready autoplay clips. This setting controls playback boundaries; it does not request continuation.
Use `continue_from_clip_id` to continue from a generated clip.

## Try several seeds

The same prompt and references produce a different take under a different seed. When a scene
matters, queue it a few times with explicit `seed` values and keep the take you like. An explicit
seed leaves the session default untouched, so a sweep does not disturb the clips you queue
afterwards.

See the [schema](/model-api-reference/h3-reference-to-video-turbo-realtime/schema) for parameters
and the [tutorial](/model-api-reference/h3-reference-to-video-turbo-realtime/tutorial) for the
command sequence.
