# Helios prompting guide: write and steer a live video

> Write Helios prompts that hold up in a live stream: the opening prompt, soft steering versus scene cuts, scheduled beats, reference images and image strength.

Source: https://windflow.online/guides/helios-prompting-guide · Updated 2026-11-03 · Windflow Labs

[Helios](https://windflow.online/models/helios) turns a text prompt, and optionally a reference image, into one continuous video that you can redirect while it plays. Writing for it is a little different from writing for a clip generator. The opening prompt sets up a scene that has to keep going, and every later prompt is a change to a scene that is already running. This guide covers both, and the commands that apply them.

For the API itself (tokens, sessions, the socket) see [how to use the Helios API](https://windflow.online/guides/helios-api).

## Write the opening prompt as one concrete shot

The opening prompt anchors the first chunk, and `start` needs one. Describe one filmable shot in plain, concrete language:

- **Subject**: who or what the camera is on, with the details that should stay fixed (colours, clothing, materials).
- **Action**: one primary motion, in the present tense.
- **Place**: the setting, with a few concrete elements.
- **Camera**: framing and movement, such as "low tracking shot" or "slow push-in".
- **Light and treatment**: time of day, light quality, and the look, such as "documentary texture" or "35mm film".

Put the most important visible thing first.

| Weak | Strong |
|---|---|
| A beautiful cinematic forest. | A red fox walks through knee-high snow in a pine forest, low tracking camera, blue-hour light, realistic documentary texture. |
| A cool city at night. | A cyclist in a yellow raincoat rides down a wet neon-lit street, camera following from behind at shoulder height, reflections on the asphalt. |

Helios's own examples are longer, paragraph-length descriptions that add texture and background detail around the same core. Longer is fine, up to a point: keep the prompt below about 500 model tokens, since the model reads at most 512. A clear subject and action matter more than adjectives.

## Steer with set_prompt, cut with scene_cut

Once the stream runs, there are two ways to change it.

**`set_prompt` steers.** Helios keeps its scene memory: subject, layout, camera motion and the recent frames carry over, and the new prompt bends what happens next. Write a steering prompt as the same shot with one thing changed:

- Camera: `The same street, slow dolly forward, pedestrians keep walking.`
- Weather: `The same courtyard and camera angle as rain begins under evening light.`
- Action: `The fox stops, lifts its head and looks toward the camera.`

Change one dimension per revision. One change at a time reads most clearly.

**`scene_cut` starts over.** It clears the scene memory and begins independent content from the new prompt. Use it for a different location, cast, composition or a jump in time, and describe the new frame completely, because nothing carries over: `Inside a night train, close-up of a traveler watching snow pass the window, warm cabin light.`

An older `transition: "hard"` value on `set_prompt` is treated as soft, so a cut always needs `scene_cut`.

| Goal | Command | Prompt pattern |
|---|---|---|
| Continue the shot with a change | `set_prompt` | Keep subject and framing; describe the new motion or light |
| Change the scene | `scene_cut` | Restate subject, place, framing, action and treatment |
| Plan a beat | `schedule_prompt` | A future `chunk` index, with a prompt that fits its neighbours |

## Schedule beats ahead of time

`schedule_prompt` applies a prompt at a future chunk index, so a short sequence can be planned before it plays:

```js
await helios.command("schedule_prompt", { chunk: 6, prompt: "The same mountain pass as the sun rises behind the peaks" });
await helios.command("schedule_prompt", { chunk: 12, prompt: "The same pass at midday, a train crossing in the distance" });
```

A scheduled prompt steers the way `set_prompt` does, so keep adjacent prompts visually compatible. Helios treats a `"hard"` transition as soft; to cut at a planned moment, send `scene_cut` when that chunk arrives.

## Know when a prompt has landed

`prompt_accepted` only means the revision was received and ordered. `prompt_applied` arrives when the model actually conditions on it, and `content_visible` (on the WebSocket v3 transport) when the browser shows the first frame of the new content. Judge a prompt after `prompt_applied`, not before. A revision replaced before it was applied comes back as `prompt_superseded`, which is normal when you send several in quick succession.

## Start from a reference image

For image-to-video, upload a reference and stage it with the opening prompt in one `set_conditioning` call before `start`.

- Use a clean frame that already shows the subject and composition you want.
- Write the prompt about motion and change, so the image and the words point the same way.
- Say explicitly what moves: name the action and the camera move.
- `set_image_strength` takes a value from 0.0 to 1.0. Values near 1.0 hold the reference harder; lower values allow more motion. A change during the run applies at the next chunk boundary.

## Tune the response

| Symptom | Likely cause | What to change |
|---|---|---|
| The picture barely changes after `set_prompt` | Scene memory is holding the old content | Make the change concrete and visible; use `scene_cut` if a new scene is acceptable; wait for `prompt_applied` |
| Identity or layout shifts | Conflicting attributes, or too many changes at once | Remove contradictions, change one thing per revision, raise image strength if you use a reference |
| The opening frames are not what you meant | The opening was corrected after `start` | Stage the full opening prompt (and image) before `start` |
| Motion from a reference image is gentler than you want | The reference is anchoring too strongly | Describe the motion explicitly and lower `image_strength` |

## FAQ

### How long should a Helios prompt be?

One to a few sentences that cover subject, action, place, camera and light. Keep it under about 500 model tokens.

### Does set_prompt restart the video?

No. It steers the running scene and keeps its memory. Only `scene_cut` clears the memory and starts independent content.

### Can Helios use a reference image?

Yes. Stage it with the opening prompt using `set_conditioning`, and tune how strongly it holds with `set_image_strength`.
