AI Video Generation API for Curtain Brands — Clip Cost Guide
A curtain brand sells one linen panel in six colors and three lengths. Each listing has a still photo, but shoppers want to see how the fabric drapes, how it moves in a breeze, and how daylight filters through it. Filming eighteen combinations means hanging, steaming, and re-lighting a window set for every one. Animating the existing photos through an API gives shoppers a sense of drape and light without a new shoot.
Direct answer: GenRelay's image-to-video models animate an existing curtain photo into a short clip with described motion, such as a gentle breeze sway, a slow pan along the fold line, or daylight shifting through the weave, billed per second or per generation, and a 5-second clip costs between $0.05 and $0.96 depending on model and resolution.
How Much Does a Curtain Clip Cost?
Cost depends on billing model and resolution, not on how complicated the described motion is. As of October 2026, GenRelay video pricing is: Grok Imagine 1.0 (text-to-video) $0.010/second, Grok Imagine 1.5 (image-to-video) $0.022/second, Veo 3.1 Lite $0.060/second at 720p, $0.120/second at 1080p, and Gemini Omni Flash a flat $0.10 per generation at 720P or $0.15 at 1080P.
| Model | Billing | 5s clip cost | 8s clip cost | Best for |
|---|---|---|---|---|
| Grok Imagine 1.5 (i2v) | Per second | $0.11 | $0.176 | Animating an existing curtain photo into a sway or pan clip |
| Grok Imagine 1.0 (t2v) | Per second | $0.05 | $0.08 | Generic window ambience footage from text, no source photo |
| Veo 3.1 Lite, 720p | Per second | $0.30 | $0.48 | Finer fabric texture and fold detail |
| Veo 3.1 Lite, 1080p | Per second | $0.60 | $0.96 | Hero clips for a launch page or paid ad |
| Omni Flash, 720P | Per generation | $0.10 | $0.10 | Fixed-price clips regardless of duration |
For a color that needs a simple motion clip, Grok Imagine 1.5 is the practical default: it takes the photo as input and keeps the curtain design consistent while generating motion. Veo 3.1 Lite fits a few hero clips where sheer fabric and light detail justify the higher per-second price.
How Do I Animate a Curtain Photo Into a Clip?
Submit the source photo with a prompt describing the movement and light. Image-to-video jobs are asynchronous, so the response returns a job ID to poll:
import requests
import time
API_KEY = "YOUR_KEY"
BASE = "https://genrelay.ai/v1"
with open("curtain_linen_oat.jpg", "rb") as f:
r = requests.post(
f"{BASE}/videos/generations",
headers={"Authorization": f"Bearer {API_KEY}"},
files={"image": f},
data={
"model": "grok-imagine-1.5",
"prompt": (
"Oat-colored linen curtain panel at a bright window, gentle "
"breeze making the fabric sway softly, daylight shifting "
"through the weave, steady camera."
),
"duration": 5,
},
)
job_id = r.json()["id"]
while True:
status = requests.get(
f"{BASE}/videos/generations/{job_id}",
headers={"Authorization": f"Bearer {API_KEY}"},
).json()
if status["state"] == "completed":
video_url = status["output_url"]
break
if status["state"] == "failed":
raise RuntimeError(status.get("error"))
time.sleep(3)
How Do I Generate Clips Across a Full Color Range?
Submit jobs concurrently and poll each one, rather than waiting on each clip before sending the next:
import concurrent.futures
colors = ["oat", "sage", "charcoal", "terracotta"]
def submit_and_wait(color):
with open(f"photos/curtain_{color}.jpg", "rb") as f:
r = requests.post(
f"{BASE}/videos/generations",
headers={"Authorization": f"Bearer {API_KEY}"},
files={"image": f},
data={
"model": "grok-imagine-1.5",
"prompt": "gentle breeze sway, soft daylight shift through the fabric, steady camera",
"duration": 5,
},
)
job_id = r.json()["id"]
while True:
status = requests.get(
f"{BASE}/videos/generations/{job_id}",
headers={"Authorization": f"Bearer {API_KEY}"},
).json()
if status["state"] == "completed":
return color, status["output_url"]
if status["state"] == "failed":
raise RuntimeError(status.get("error"))
time.sleep(3)
with concurrent.futures.ThreadPoolExecutor(max_workers=4) as pool:
clips = dict(pool.map(submit_and_wait, colors))
Four 5-second clips at Grok Imagine 1.5's $0.022/second cost $0.44 in total.
What Does a Full Color Launch Cost?
A brand with 6 colors needing one sway clip each pays $0.66 at Grok Imagine 1.5's 5-second rate. The same 6 clips on Veo 3.1 Lite at 720p cost $1.80; 2 hero colors at 1080p cost $1.20.
| Scope | Clips | Model | Total cost |
|---|---|---|---|
| 6 colors × 1 sway clip | 6 | Grok Imagine 1.5, 5s | $0.66 |
| Same range, higher fidelity | 6 | Veo 3.1 Lite 720p, 5s | $1.80 |
| 2 hero colors, 1080p clip | 2 | Veo 3.1 Lite 1080p, 5s | $1.20 |
| 6 colors, 1 clip each | 6 | Omni Flash 720P (flat) | $0.60 |
Omni Flash's flat rate fits when one clip per color is enough, while per-second models earn their cost when a hero piece needs a longer clip.
FAQ
Will the clip show the exact drape and pleat of my curtain?
Not reliably. The model starts from your photo, but pleat count and fold depth can shift during motion. Check each clip against the real panel before publishing.
Can the model show true fabric opacity or light blocking?
No. Generated light transmission is a visual approximation, not a measurement. State opacity and blackout ratings in the listing text.
Does the video include audio?
Veo 3.1 supports synchronized audio on some modes; see the Veo 3.1 audio API guide. Grok Imagine and Omni Flash clips are silent, so add music or sound design in post.
How do I handle a failed generation job?
Check the state field in the polling response. A failed state includes an error field; retry with a simplified prompt if the cause is prompt content rather than a transient server error.
Do you have a similar guide for rug brands?
Yes. The rug video guide covers pile-pan, glide, and light-shift clips with the same pricing math.
See the image-to-video pipeline guide for the full async pattern, or the Veo model page for parameter docs.