Recast prompt limit is 2,000 characters: what to write, what it costs

The H3 Max Recast prompt is optional and capped at 2,000 characters. See what to put in it for a person swap and why the length never changes the price on Sume.

5 min readSume
All posts

The H3 Max Recast prompt is optional and may be at most 2,000 characters; a longer one is refused with "H3 Max Recast prompt must be at most 2000 characters". The price does not depend on the prompt at all: it is set by the source length and the resolution, for example $4.50 for a 12-second source at 768p.

What the prompt is for

Recast already knows the job: replace the people in the source video with the people in your photos, one photo per person. Photos map to people left to right by default. The prompt is only for exceptions, and a short one is enough.

  • Who becomes whom, when left to right is wrong: "The man on the right becomes the person in photo 1."
  • What to keep: "Keep the red jacket and the studio background."
  • What else to change: "Make the new presenter wear glasses."

Length, price and fields that are not allowed

Prompt length is the only free-text limit. The fields below are the ones recast does not take at all, and each returns a message such as "H3 Max Recast does not support generate_audio."

H3 Max Recast request fields, as of 2026-10-08
FieldAllowedNote
promptYes, optionalAt most 2,000 characters
reference_image_urlsYes, 1 to 4One public HTTPS photo per new person
video_urlYes, exactly one5 to 30 seconds, no shot over 15 seconds
resolution768p or 1080p768p by default
aspect_ratio, generate_audio, bitrate_mode, seedNoOutput follows the source
frame_images, audio referencesNoOutput keeps the source soundtrack

Check the length before you submit

A character count in your own code avoids a round trip. The snippet builds a Video Router request and stops if the prompt is too long. It sends nothing unless a key is set.

import json, os, urllib.request

prompt = "The woman at the desk becomes the person in photo 1. Keep the camera and the soundtrack."
if len(prompt) > 2000:
    raise SystemExit("prompt too long: %d characters" % len(prompt))

body = {
    "model": "h3-max-recast",
    "prompt": prompt,
    "duration": 12,
    "video_url": "https://media.sume.com/artifacts/artf_demo/ad.mp4",
    "reference_image_urls": ["https://example.com/new-presenter.jpg"],
}
key = os.environ.get("SUME_API_KEY")
if not key:
    raise SystemExit("set SUME_API_KEY first")
req = urllib.request.Request(
    "https://api.sume.com/v1/video-router/generate",
    data=json.dumps(body).encode(),
    headers={"Authorization": "Bearer " + key,
             "Content-Type": "application/json",
             "Idempotency-Key": "recast-demo-001"},
)
print(urllib.request.urlopen(req).read().decode())

Practical advice

Write the prompt last. First run the swap with no prompt at 768p, which costs $4.50 for 12 seconds, and look at the result. Add a sentence only for what went wrong, for instance a wrong left-to-right order. Long prompts add nothing the photos do not already say.

Examples of good and bad prompts

A good recast prompt names a person and an outcome. "The presenter on the left becomes the person in photo 1; keep the blue shirt" is 62 characters and says everything the model needs. A weak prompt tries to describe the whole scene again: lighting, lens, mood, music. Recast keeps the source camera, cuts and soundtrack, so those words do nothing except push you towards the 2,000-character limit. If you want a different background or a new outfit, say so in one sentence and check the result at 768p for $4.50 before paying for 1080p at $6.75.

For a batch, store the prompt once and reuse it for each job. A shared prompt also makes results easier to compare across presenters. If a prompt works at 768p, send the same text at 1080p; the extra resolution is a separate setting, not a different instruction. That keeps the second run predictable.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume