Is Higgsfield Genjutsu in your Sume catalog? Check, then price it
higgsfield-genjutsu appears in the catalog only when its provider is configured. List your models, then price a 4 to 30 second source at 480p or 720p.

Higgsfield Genjutsu (higgsfield-genjutsu) is Motion Transfer: one source video plus 1 to 8 reference images, at 480p or 720p, 4 to 30 seconds. The Video generation page says it is in the catalog only when its provider is configured, so list the models before you build on it.
Check the catalog
supported_durations and supported_resolutions come from the same response.
import os, requests
r = requests.get("https://api.sume.com/v1/videos/models",
headers={"Authorization": "Bearer " + os.environ["SUME_API_KEY"]})
r.raise_for_status()
m = {x["id"]: x for x in r.json()["data"]}
g = m.get("higgsfield-genjutsu")
print(g and (g["supported_resolutions"], g["supported_durations"][:1]))
print(sorted(m))Price by source length
Genjutsu preserves the source length, so you pay for the seconds of the clip you upload, rounded up. Send that length as duration; the docs require the inspected source length.
| Source length | 480p | 720p |
|---|---|---|
| 4 s | $1.59 | $3.41 |
| 8 s | $3.18 | $6.81 |
| 15 s | $5.96 | $12.77 |
| 30 s | $11.93 | $25.54 |
Request shape
Genjutsu takes a video_url and reference_image_urls on the Video Router wire. It accepts video references, not audio.
{
"model": "higgsfield-genjutsu",
"prompt": "Replace the dancer with the person in the photo",
"video_url": "https://example.com/dance.mp4",
"reference_image_urls": ["https://example.com/new-person.jpg"],
"resolution": "480p",
"duration": 8,
"mode": "async"
}Before you promise it in a product
Because availability depends on the provider being configured, code against the catalog, not against the id. Hide a Genjutsu option in your UI when the id is absent from GET /v1/videos/models, and show it when it appears.
Sume reserves the full price at submit, so the number in the table is also the amount that must be free in the balance when you send the request. If it is not, the call fails with 402 insufficient_credits before any provider work starts.
- Inspect the source clip first so the duration you send matches its length: Genjutsu preserves source length, 4 to 30 seconds.
- Reference images: 1 to 8 per request.
- Resolution: 480p or 720p; the Sume price at 720p is more than double 480p.
Sources
Related posts
More in Developers
- Jupyter: move Sora cells to Sume, where a cell rerun is a retry
Re-running a notebook cell resubmits the request. Hold one Idempotency-Key per take in a variable so Sume returns the first video job, and show the file inline.
- Kotlin: submit and poll a Sume video job with java.net.http
A Kotlin port of a Sora videos call: POST /v1/videos with an Idempotency-Key, poll every 30 seconds until done, with the JDK client and kotlinx.serialization.
- Kubernetes CronJob that submits a nightly 30-second Wan 3.0 clip
A CronJob manifest using curlimages/curl and a Secret: one dated Idempotency-Key per night, concurrency forbidden, and a month of reserves at each resolution.
- List your Sume Formats in Python and keep the video ones
Page through GET /v1/formats with next_cursor, keep io.output_kind video, and print each vanity_invoke_url. A runnable snippet with field caveats.
Written by Sume