PL Log inCreate account
Launching in October 2026. Accounts, model catalog, calculator and docs are live. Studio is available in preview; generation is awaiting activation.

Consistent Character in AI Video and Images - Working Method

How to keep the same character across AI images and video: a master portrait, reference images, first-frame video, fixed description and seed.

A consistent character comes from an image, not from a description. Generate one master portrait, then pass it to the model as a reference in image_urls (for images) or as the first frame in image_url (for video). A prompt alone, however detailed, gets you the character's brother at best: in my ten-model test, props stayed put everywhere and faces did not. Below: why faces drift, a four-step method, how many references each model on Jantaris accepts, and what no model guarantees.

Why the face keeps changing

A model has no memory of your previous image. Each generation starts from random noise (the seed), and the prompt only narrows down what comes out of it. Anything the prompt leaves open gets decided again.

Here is my local Z-Image Turbo test: same prompt, three seeds.

text
portrait of a fisherman in a yellow raincoat on a pier, overcast light, 85mm lens, realistic skin texture
Fisherman in a yellow raincoat with a cap under the hood on a pier
seed 11
A different fisherman in a yellow raincoat with the hood up, a boat behind him
seed 22
A third fisherman in a yellow raincoat, short hair, hood down
seed 33

The description was met three times: yellow raincoat, pier, overcast light. But these are three different men, with different face shapes, ages and hair. The only shared trait is a "type" the model picked on its own, because the prompt said nothing about appearance. Every generator works like this: the text sets the category, the face is rolled.

Test: 10 models, one character, 4 scenes

In June 2026 I gave ten models the same character for my blog promptowy.com: Marek, 35, short dark beard, round glasses, messy brown hair, mustard sweater. Four scenes (café, bicycle, office, rain at night), the same description and the same seed, no reference image. Full boards (in Polish): Can AI keep the same face?

FLUX.2 pro: the same bearded man with glasses and a mustard sweater in a café, on a bike, at an office desk and in the rain
Author's test on promptowy.com, June 2026: FLUX.2 [pro]. One person across four scenes, only the beard volume shifts.
Nano Banana 2: a man in a mustard sweater in four scenes, with a noticeably different face in each
Author's test: Nano Banana 2. Sweater, glasses and beard stay, but it looks like nearly three different people.

What came out of it:

  • Every model kept the props. Glasses, beard, sweater and hair survived all four scenes. Consistency of the character type is solved.
  • Faces are another matter. Seedream 4.5 held the face best, followed by Photon and FLUX.2 [pro]. GPT Image 2 drifted slightly in the rain scene.
  • Nano Banana 2 came last, despite being marketed on consistency. Café, bike and rain looked like three people sharing a sweater.

Takeaway: a description gives you someone similar, not the same person. That takes a reference.

The method in four steps

1. A master portrait

First I make one image that becomes the source of truth for the character, ideally a character sheet: front close-up, profile and full body on a neutral background, in even light.

text
Character sheet of the same man on a plain light grey background, even studio light:
front close-up, left profile close-up, full body standing. 35 years old,
short dark beard, round thin metal glasses, messy brown hair, mustard knitted sweater,
dark jeans, white sneakers. Realistic photo, no text.

I use a model with strong faces for this, such as Nano Banana Pro (from $0.0747 per image), generate a few versions and lock one in.

2. A fixed description

The same block of text goes into every prompt, word for word. Not "bearded guy with glasses" in one prompt and "man with stubble" in the next; every changed word is a new instruction to the model. I give the character a name and describe only what must not change: age, face, hair, outfit. The variable part (scene, action, light) is written separately.

3. Scenes with a reference (images)

Upload the portrait to image_urls (in Studio: Reference images (URLs), Upload file button) and tell the model who the person is:

bash
curl "https://jantaris.com/v1/generate?wait=60" \
  -H "Authorization: Bearer $JANTARIS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "nano-banana-pro",
    "input": {
      "prompt": "The man from the reference image, same face, beard, glasses, hair and mustard sweater. He rides a bicycle down a tree-lined street in autumn, late afternoon sun, 50mm lens, realistic photo.",
      "image_urls": ["https://example.com/marek-sheet.png"],
      "aspect_ratio": "16:9",
      "resolution": "1k"
    }
  }'

Set the aspect ratio explicitly: without it, Nano Banana Pro inherits the format of the first reference. Compare every scene with the portrait: eyes, nose, jawline.

4. Video: first frame or references

Two routes for video:

  • First frame (image_url). A scene from step 3 becomes the opening frame and the prompt describes only motion. The safest route, because the first second is exactly your image. More in image to video with AI.
  • Reference images (image_urls). The model builds a new shot from scratch but takes the character's look from your images. More freedom in framing, less certainty.

I tried the second route in September 2026 on Kling 3.0 Omni (through another API; that Kling mode is not on Jantaris). The reference was a frame of a woman at a kitchen table from one of my earlier clips, and the prompt had her stand up, walk to the window and say one line. Face, hair and sweater matched the reference and the model performed the whole action. The catch: she said the line with her back to the camera, so lip sync could not be judged. Write-up (Polish): Kling 4.0 Omni Reference.

My test, 28 Sep 2026: Kling 3.0 Omni, 5 s, one reference image. Look and sweater match the reference. Audio removed.

Reference limits by model

From the Jantaris catalog. Use an image model for the portrait and scenes, a video model for motion.

ModelTypeReference imagesFirst frameSeed
GPT Image 2.5imageup to 16-no
Nano Banana Proimageup to 14-no
Nano Banana 2imageup to 14 (up to 4 character refs recommended)-no
Seedream 5.0 Proimageup to 10-no
FLUX.2 [pro]imageup to 8-no
FLUX.1 Kontext [pro]imageup to 4-yes
Seedance 2.5videoup to 30yesyes
Wan 3.0videoup to 10yesyes
MiniMax H3videoup to 9yesno
HappyHorse 1.1videoup to 9yesno
PixVerse V6videoup to 7yesyes
Kling 3.0video-yes (plus last frame)no

Notes from the model specs:

  • HappyHorse 1.1 lets you address references in the prompt as [Image 1], [Image 2]. Wan 3.0 uses "Image 1", "Video 1", and ByteDance's own Seedance 2.5 example says "@Video 1". Labels help when there are several characters.
  • MiniMax H3 bills reference images six to nine extra.
  • Seedance 2.5 accepts references showing real people, per its spec. Some other models filter real faces out. A rejected task on Jantaris costs $0.

Seedance 2.5 can also extend a finished clip while keeping the characters, another way to stay consistent over a longer scene:

Vendor sample: ByteDance (seed.bytedance.com). Extending a clip from @Video 1 with the same characters and scene. Trimmed to 8 s, no audio.

Motion from your own footage: Motion Control

When the character has to perform a specific movement (a dance, a gesture, a walk), Kling 3.0 Motion Control takes a character image (image_url) and your motion clip (video_url). Appearance comes from the image, motion from the video. It costs $0.249 per second, counted on the length of the source clip.

Vendor sample: Kuaishou (klingai.com), Kling 3.0 Motion Control: the same face from different angles. Trimmed to 8 s, no audio.

What the seed does and does not do

The same seed plus the same prompt in the same model gives the same image. Change the scene and the face moves anyway, which the Marek test showed (one seed for all scenes). I use seeds for:

  • one-word fixes to a frame that already works,
  • comparisons, such as the same seed with and without a reference,
  • repeatability in a series, when the model has the field (see the table).

A seed does not hold a face. A reference does.

What no model guarantees

Even with references, expect that:

  • profiles and distant shots drift more than frontal close-ups,
  • small clothing details (logos, knit patterns, jewelry) change between shots,
  • two characters in one frame can blend, with traits jumping from one to the other,
  • long clips (20-30 s) have more time to drift than 5-second ones,
  • expression and apparent age shift under strong emotions in the prompt.

So I budget two attempts per shot.

What it costs

Example: one character across six 5-second shots for a short video.

StepModelCountCost
Master portraitNano Banana Pro4 versions4 × from $0.0747 per image
Scenes with referenceNano Banana Pro6 scenes × 212 × from $0.0747 per image
First-frame videoSeedance 2.56 × 5 s × 2 tries = 60 s60 × from $0.261 per second

"From" in the Seedance price is the lowest resolution; higher ones cost more (rates on the model page). You see each task's cost before you run it, and the API returns it as estimated_cost. Failed generations cost $0. For per-second math across models see AI video cost per second, and for characters in a music video see AI music video.

FAQ

How do I keep the same character across AI images?

Generate one master portrait and pass it as a reference image (image_urls) in every new scene, together with the same character description. Description and seed alone will not hold the face.

Which model keeps faces most consistent?

Without references, Seedream 4.5, Photon and FLUX.2 [pro] did best in my test and Nano Banana 2 did worst. With references the gap shrinks, so choose by image quality and reference limit.

How many reference images can I use?

It depends on the model: GPT Image 2.5 up to 16, Nano Banana Pro up to 14, FLUX.2 [pro] up to 8; for video, Seedance 2.5 up to 30 and Wan 3.0 up to 10. See the table above.

Is a fixed seed enough for a consistent character?

No. A seed reproduces an image only with the same prompt. Change the scene and the face shifts.

Can I use a photo of a real person?

Technically yes in models that accept it, but only with that person's consent. Some models filter real faces; a rejected task on Jantaris costs nothing.

Is there a free way to do this?

Jantaris has no free plan or signup credit; you pay from the first generation and the minimum top-up is $10. The balance never expires, so you can start with a handful of images in Jantaris Studio.