HiAPI
Blog

Guide

FLUX 3 Prompt Recipes: Copy-Paste Examples for Video Generation

Practical prompt patterns for scene setup, camera motion, and audio cues

Oct 31, 2026 10 min read
FLUX 3 提示词配方指南的博客封面图:近黑背景上,薄荷绿圆点如半调数据集般逐渐加密,并点缀深青色颗粒。
A FLUX 3 video recipe: scene setup, slow dolly-in plus focus pull, with native rain and sizzle audio cues.

Why recipe-style prompts work better than freeform ones

Freeform prompting feels productive because you can type whatever is in your head. It is also the fastest way to generate output you cannot reproduce. When a clip comes back wrong, you have no clean way to tell which part of a 60-word paragraph caused the problem.

A recipe is a prompt with fixed slots. Every request fills the same fields in the same order, so the only thing that changes between runs is the value you deliberately changed. That gives you three practical benefits:

  • Lower variance. Stable phrasing for scene and style means the model is not re-interpreting your intent on every call.
  • Faster debugging. If the camera is wrong, you look at the camera slot — not at the whole string.
  • Reusability. A recipe built for a product shot can be re-filled with a different subject and still behave predictably.

Treat recipes as a small internal DSL for video generation. You write the template once, then pass values in at request time. The rest of this guide builds that DSL slot by slot, with copy-paste examples you can adapt to your own subjects.

The anatomy of a FLUX 3 prompt recipe

A reliable FLUX 3 recipe has six slots, composed in a fixed order. Order matters: earlier slots set the frame, later slots refine it.

  1. Subject — what the shot is about, with concrete visual attributes.
  2. Environment — where it happens: location, time of day, weather, background elements.
  3. Style — the look: lighting quality, color palette, lens character, render intent.
  4. Motion — what moves inside the frame and how.
  5. Camera — how the viewpoint itself moves, or stays still.
  6. Audio — ambience and discrete sounds that should accompany the clip.

A generic template looks like this:

Subject: <one clear subject with 2-3 visual attributes>
Environment: <location, time of day, background detail>
Style: <lighting, palette, lens and render character>
Motion: <what moves, direction, speed, and continuity>
Camera: <static or the exact camera move>
Audio: <ambient bed>; <discrete action sounds>

Keep each slot to one or two short clauses. Long slot values are the most common cause of dropped detail, because the later clauses compete with the earlier ones for attention. If a slot needs more than a sentence, it usually contains two ideas that should be split into separate slots or separate runs.

Scene setup recipes

Before you animate anything, confirm the base scene. Generate with motion and camera set to minimal or static values and check that the subject, environment, and style land together. A scene that is wrong when still will not improve when it moves.

Recipe: interior product scene

Subject: a matte ceramic mug, rounded handle, faint speckled glaze
Environment: a wooden kitchen counter, soft morning light from a window on the left, blurred shelves behind
Style: natural light, warm neutral palette, shallow depth of field, photorealistic
Motion: none
Camera: static
Audio: quiet room tone

Recipe: exterior establishing shot

Subject: a lone stone lighthouse on a low cliff
Environment: overcast coastal evening, wet rocks, distant whitecaps, heavy cloud layer
Style: desaturated cool palette, wide lens, cinematic realism
Motion: none
Camera: static
Audio: steady wind, distant surf

What makes a scene slot stable

  • Anchor the subject with countable attributes. "Rounded handle" and "speckled glaze" narrow the space more than "beautiful mug."
  • Name the light source and direction. "Soft morning light from the left" is checkable; "good lighting" is not.
  • Describe the background as depth-separated layers. Foreground, midground, and background phrasing keeps the frame from collapsing into a flat backdrop.
  • Keep style slot consistent across a series. If two clips should cut together, reuse the exact same style value.

Once the still scene reads correctly, you can freeze the subject, environment, and style slots and treat them as constants while you tune motion.

Motion and camera language recipes

The most common prompt failure is mixing subject motion and camera movement into one sentence. "Slowly pushing in as the model turns toward the camera" is two variables in one clause, and you cannot tell which one the model honored.

Split them. Motion describes what happens inside the frame. Camera describes how the viewpoint behaves. Debug them independently: change motion with a static camera, then change camera with a fixed subject.

Motion phrasing patterns

Motion: the steam above the mug drifts up and slightly right, slow and continuous
Motion: the flag ripples in short gusts, fabric folding toward the viewer
Motion: the subject turns their head from left to right over the shot, unhurried

Useful motion vocabulary: drifts, ripples, swells, settles, sweeps, pulses, unhurried, continuous. Pair a verb with a direction and a pace, and you get something reproducible.

Camera phrasing patterns

Camera: static, locked-off tripod shot
Camera: slow dolly in, ending close on the subject
Camera: gentle pan left to right, constant speed
Camera: slow orbit around the subject, keeping it centered
Camera: slight handheld sway, no travel

Rules of thumb

  • One move per shot. Two camera moves in one clip usually produce something in between and neither.
  • State the endpoint for moves with a target. "Dolly in, ending close on the handle" gives the model a destination.
  • Say "static" explicitly. An empty camera slot is an invitation for unrequested drift.
  • Keep speed adverbs consistent. If a series uses "slow" everywhere, do not switch to "rapid" in one clip and expect matching pacing elsewhere.

When a clip misbehaves, run the same recipe twice: once with motion zeroed and camera active, once with camera static and motion active. The slot that breaks is your bug.

Native audio cue recipes

Audio is a slot, not an afterthought. Write it in the prompt the same way you write the scene: descriptive, concrete, and ordered by prominence.

Structure audio as an ambient bed followed by discrete events, separated by semicolons:

Audio: <continuous background sound>; <one-off action sound>; <one-off action sound>

Recipe: ambient-dominant clip

Audio: low room hum with faint refrigerator cycling; a single ceramic clink near the middle

Recipe: environment-dominant clip

Audio: layered coastal wind, distant surf rolling in and out; one sharp gull call early

Writing cues that land

  • Name the source, not the mood. "Wind through dry grass" is renderable; "peaceful atmosphere" is not.
  • Use timing words sparingly but deliberately. near the middle, early, at the end map a cue to a moment in the clip.
  • Separate ambience from events. A continuous bed plus one or two punctuating sounds reads more clearly than a list of five equal-weight noises.
  • Keep the bed genre-consistent with the scene. Interior room tone under an exterior cliff shot is a contradiction the model has to resolve somehow.

If the audio slot is doing too much, cut it down before you touch motion. Sound is often the cheapest slot to simplify and the fastest signal of whether your recipe is over-specified.

Iterating on a recipe: one variable at a time

Iteration discipline is what separates a prompt engineer from someone rerolling until it looks fine.

The loop

  1. Freeze baseline. Save the current recipe in full and record its output.
  2. Change exactly one slot. Not one sentence — one slot. "Camera: static" to "Camera: slow dolly in" is one change.
  3. Generate and compare against the baseline, on the same subject and scene.
  4. Record the delta. If it improved, promote the change into the baseline recipe.
  5. Repeat until the recipe holds for your target shot type.

Practical habits

  • Keep a scratch file per recipe family. Note what you changed and what visibly differed.
  • Batch three variations of one slot rather than one variation of three slots; you learn more per generation.
  • Revert aggressively. If a change is ambiguous after two runs, drop it. Ambiguous improvements are regressions waiting to compound.
  • Re-test after any slot change, even in a slot you did not touch. Slots interact through attention, and a larger motion clause can crowd out scene detail.

A recipe is done not when one clip looks good, but when three different fills of the same template all look correct.

Versioning and reusing prompt recipes in code

Store recipes as structured data, not as strings scattered through your codebase. A small JSON or YAML file per recipe gives you diffing, templating, and rollback for free.

{
  "id": "product-mug-v3",
  "slots": {
    "subject": "a matte ceramic mug, rounded handle, faint speckled glaze",
    "environment": "wooden kitchen counter, soft morning light from the left, blurred shelves behind",
    "style": "natural light, warm neutral palette, shallow depth of field, photorealistic",
    "motion": "steam drifts up and slightly right, slow and continuous",
    "camera": "static, locked-off tripod shot",
    "audio": "low room hum; a single ceramic clink near the middle"
  }
}

Compose the prompt at request time from a fixed slot order so you never hand-assemble strings:

def compose(recipe):
    slots = recipe["slots"]
    return "\n".join([
        f"Subject: {slots['subject']}",
        f"Environment: {slots['environment']}",
        f"Style: {slots['style']}",
        f"Motion: {slots['motion']}",
        f"Camera: {slots['camera']}",
        f"Audio: {slots['audio']}",
    ])

Versioning rules

  • Bump the id on any behavioral change. product-mug-v2 to product-mug-v3 tells you which clips came from which recipe.
  • Keep a changelog beside the file. One line per version: which slot changed and why.
  • Never edit a version in place once it has produced shipped output. Add a new version and keep the old one available for comparison.
  • Validate required slots before sending. A missing audio slot silently changes output more than you expect.

With recipes in version control, a regression becomes a git bisect problem instead of a memory test.

Putting recipes into a pipeline

Recipes scale because they are data. That makes them easy to feed into an automated generation workflow.

Pipeline shape

  1. Recipe store — versioned recipe files, one per shot family.
  2. Fill step — inject per-run variables (subject, product name, location) into the frozen slots.
  3. Compose step — render the prompt from the fixed slot order.
  4. Generation step — send to FLUX 3 through the HiAPI.ai unified API, with the recipe id logged alongside the request.
  5. Quality check — automated review plus spot checks against the recipe's own acceptance criteria.
  6. Record — store output reference, recipe id, and any per-run variables together.

Batching guidance

  • Batch by recipe, not by subject. Runs that share a template are easier to compare and cheaper to reason about.
  • Cap concurrency per recipe while tuning; parallel runs of an unstable recipe only multiply the noise.
  • Reuse constants. Subject, environment, and style slots are usually shared across a batch; only motion and camera vary per shot.

Quality checks that actually catch problems

  • Slot fidelity: does the output contain the named subject attributes and the specified light direction?
  • Single-motion test: if the camera moves, is it the one move you asked for?
  • Audio match: is the ambient bed present, and are the discrete cues roughly where you placed them?
  • Cut compatibility: do adjacent clips in the sequence share palette and pacing?

Start with one recipe, one subject, and a static camera. Confirm the scene, layer in motion, add the audio bed, then automate. The recipe format stays the same whether you are generating one clip by hand or a hundred in a pipeline.

Related articles

View all articles →

Start building with persistent AI artifacts

Get your API key and call image, video and audio models through one task-based API.

Read the API docs