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

# How to write prompts for AI video and images

> Write prompts that fit how Percify's chat, Playground and lip-sync tools read them: subject first, then style, light, camera, length and shape.

A good Percify prompt says what is in the shot first, then how it should look: style, light, camera movement, and for video, what moves. In the Home chat, anything you leave out is asked as a quick question, so a short prompt still works. In the Playground, each model has its own fields, so check the model's **README** tab for what it accepts before you spend credits.

## Start with the subject, then add the look

Write one clear subject and what it is doing, then add the details that change the result. The prompt box on Home suggests the shape of a good prompt with its rotating examples:

| Mode   | Example from the prompt box                    |
| ------ | ---------------------------------------------- |
| Avatar | "A confident presenter in a charcoal blazer"   |
| Image  | "A lighthouse standing in a storm"             |
| Video  | "A slow push in on a lighthouse in a storm..." |

A video prompt also needs motion. "A lighthouse in a storm" is a still. "A slow push in on a lighthouse in a storm, waves breaking" tells the model what the camera and the scene do.

## Say what you are making on Home

On **Home**, pick what you are making before you type:

* **Avatar**: a person you can reuse, and give a voice
* **Image**: a single still, any subject
* **Video**: a short clip from a description

Then press **Generate**. The chat asks for anything that changes the result and is not in your prompt yet:

| Making | The chat asks about                                                                                                                                                                                                                  |
| ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Video  | Vibe (Cinematic, Realistic, Anime, Cyberpunk, 3D Render, Analog), length (5s, 10s, 30s, 1min), camera (Static, Slow push in, Pan, Handheld, Orbit), light (Soft daylight, Golden hour, Studio, Moody, Neon), shape (16:9, 9:16, 1:1) |
| Image  | Art style (Photorealistic, Anime, 3D Render, Oil Painting, Cyberpunk, Watercolor), light, how close (Close-up, Portrait, Wide, Overhead), shape (1:1, 16:9, 9:16, 3:4)                                                               |
| Avatar | Gender, ethnicity, framing (Headshot, Waist up, Full body, Character sheet), age, clothing, shape                                                                                                                                    |

<Tip>
  Put the details in your first message to go faster. If your prompt already says the style, length or shape, for example "a 10 second vertical video, handheld, golden hour", the chat can skip those questions.
</Tip>

### Use a reference image

To keep a face, a product or a look, attach an image instead of describing it. Use the upload button next to the prompt box on Home, or, in a chat, press **+** and choose **Add an image** or **Past creation**. On an avatar with a reference photo, the chat does not ask for gender or ethnicity.

### Change a result without starting over

When a render is ready, the chat offers next steps that keep the same subject. Write only what should change:

* **Place in a new setting**: describe the scene. The character stays the same.
* **Turn into video**: describe the motion for that shot.
* **Make it talk**: type the exact line to be spoken.

Stuck for an idea? Press **+** and choose **Surprise me**.

## Write for a specific model in the Playground

In the [Playground](/create/playground), the form is built from the model's own inputs, so fields differ from model to model. Before you run a model:

1. Open its **README** tab to see every input, which ones are required, the allowed values and the defaults.
2. Open **Examples** and press **Use input** on a result you like. It loads that example's prompt and settings into the form, which is a quick way to learn what a model responds to.
3. Change one thing at a time, and keep the rest of the settings fixed, so you can see what made the difference.

These fields appear on many models. Use them when the model offers them:

| Field                     | What it does                                                                              | Examples of models with it                     |
| ------------------------- | ----------------------------------------------------------------------------------------- | ---------------------------------------------- |
| `negative_prompt`         | Lists what you do not want in the result                                                  | Veo 3.1, Wan 2.7, Kling V3.0 Pro, Imagen 4     |
| `seed`                    | A fixed number makes a result reproducible, so you can change only the prompt and compare | Flux Schnell, Flux Kontext Pro, Veo 3.1        |
| `enable_prompt_expansion` | Lets the model rewrite and expand your prompt before it generates                         | Hailuo 2.3, Wan 2.7, Wan 2.5 (Text-to-Video)   |
| `prompt_upsampling`       | Automatic prompt improvement                                                              | Flux Kontext Pro, P-Video Turbo                |
| `generate_audio`          | Adds generated sound to the clip                                                          | Veo 3.1, Seedance 2.5 Text-to-Video, LTX-2 Pro |

Length and resolution fields also set the price on most video models. The **Run** button updates as you change them. See [AI models in Percify](/models) for lengths and prices.

### Compare two ways of writing the same prompt

In **Compare**, **Director mode** keeps one model and has two AI directors rewrite your idea: **Enhanced prompt** turns it into a detailed prompt, and **JSON direction** turns it into a structured treatment with scene, camera, lighting and pacing. The directions are shown under the results. Use it to see which style of prompt a model follows better. Each direction costs 1 to 3 credits.

### Start from an image you like

In **Batch Mode**, drop up to 4 images where it says "Drop an image to extract its prompt" and press **Extract prompt**. Percify writes a prompt that describes the image, and **Use as prompt** puts it in the prompt box for you to edit. Extracting a prompt does not cost credits. Batch Mode also has strategy presets (Social media ads, Banner ads, Product shots, UGC hooks, Thumbnails) that fill in a starting prompt, and you can save your own as a strategy.

## Write scripts for talking videos and speech

The words are the prompt when a face speaks or a voice reads.

* **Length sets the price.** Talking videos and lip-sync are charged per second of audio. The talking-video card on Home estimates length at about 2.4 words a second (roughly 145 words a minute), so a 25-word line is about 10 seconds. The final charge uses the real audio length.
* **Record clean audio.** Use audio without background noise, at a natural pace. Clips of 5 to 60 seconds work best, with a front-facing portrait photo.
* **Use the model's own markup.** Some speech models read tags in the text:

| Model               | Markup it accepts                                                                                                                                  |
| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| Gemini TTS          | `[sigh]`, `[laughing]`, `[whispering]`, `[short pause]`, plus a separate `style_instructions` field such as "warm, unhurried, like a podcast host" |
| Chatterbox Turbo    | `[clear throat]`, `[sigh]`, `[sush]`, `[cough]`, `[groan]`, `[sniff]`, `[gasp]`, `[chuckle]`, `[laugh]` (text up to 500 characters)                |
| Speech-02-HD        | `<#0.5#>` to insert a pause in seconds                                                                                                             |
| Seed Speech TTS 2.0 | A separate `voice_instruction` field for tone, emotion, pace or volume. It is not read aloud.                                                      |
| Seed Audio 1.0      | `@Audio1`, `@Audio2`, `@Audio3` to refer to up to 3 uploaded audio clips                                                                           |

## What gets a prompt rejected?

Prompts and uploaded images are checked by content moderation before a run starts. If a prompt is refused you see "Prompt rejected by content moderation" (or "Image rejected by content moderation" for an image), and no credits are charged. Rewrite the prompt and try again.

## Test cheaply, then scale up

* Try a prompt at the shortest length and lowest quality first. In Compare, **reset to cheapest** sets both models to their lowest price.
* Once the prompt works, raise the length or resolution for the final version.
* A run that fails is refunded, so a failed test does not cost you.

## Related

<CardGroup cols={2}>
  <Card title="Playground and Compare" href="/create/playground">
    Run models and test prompts side by side
  </Card>

  <Card title="AI models in Percify" href="/models">
    Inputs, clip lengths and credit prices for every model
  </Card>

  <Card title="Make your first talking video" href="/quickstart">
    Photo plus voice to a talking clip
  </Card>

  <Card title="Generation failed" href="/troubleshooting/generation-failed">
    What to do when a run does not finish
  </Card>
</CardGroup>
