AI Video Generation API for Handbag and Accessory Brands
An accessory brand has a clean studio photo of its new leather tote — strap draped over the flap, hardware catching the light, stitching crisp in frame — but the product page and a round of paid social creative call for short clips the studio can't shoot on demand: the flap opening to reveal the lined interior, the strap swinging as the bag is lifted, the bag slowly rotating to show every stitch and hardware detail before a shopper decides to buy. Booking a lifestyle videographer every time a new colorway or leather finish launches costs more than most accessory brands budget for a seasonal drop, and a full lifestyle shoot takes days most small brands don't have between sample approval and launch. Turning the existing studio photo into an opening or rotating clip via API answers "what does this bag actually look like in motion" without scheduling a shoot.
Direct answer: GenRelay's image-to-video models animate an existing handbag or accessory photo into a short clip with described motion — a flap opening, a strap swinging, a bag rotating, a clasp clicking shut — billed either per second or per generation, and a single 5-second clip costs between $0.05 and $0.90 depending on model and resolution, cheap enough to generate a clip per colorway before committing to a real lifestyle shoot.
How Much Does a Handbag Product Clip Cost?
Cost depends entirely on billing model and resolution, not on how much flap or strap motion the described clip involves. As of October 2026, GenRelay's video pricing: 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 or $0.120/second at 1080p (and $0.180/second at 4K), and Gemini Omni Flash a flat $0.10 per generation at 720p or $0.15 at 1080p regardless of length.
| Model | Billing | 5s clip cost | 8s clip cost | Best for |
|---|---|---|---|---|
| Grok Imagine 1.5 (i2v) | Per second | $0.11 | $0.176 | Animating an existing bag photo into an opening or rotating clip |
| Grok Imagine 1.0 (t2v) | Per second | $0.05 | $0.08 | Generating generic lifestyle B-roll from a text description, no source photo |
| Veo 3.1 Lite, 720p | Per second | $0.30 | $0.48 | Higher-fidelity hardware and stitching detail, close-up texture shots |
| Veo 3.1 Lite, 1080p | Per second | $0.60 | $0.96 | Hero shots for the product page or a paid ad |
| Omni Flash, 720p | Per generation | $0.10 | $0.10 | Fixed-length clips regardless of duration |
For a tote that needs to end up as a flap-opening-and-rotating clip, Grok Imagine 1.5 is the practical default — it takes the studio bag photo as input and holds the silhouette, strap length, and hardware placement consistent while generating the opening motion, strap swing, and surrounding lighting, at a fraction of Veo 3.1 Lite's per-second cost. Veo 3.1 Lite earns its higher price for a small number of hero clips where motion realism and camera movement quality matter more than cost per clip — a homepage banner clip, for instance, versus a dozen colorway-launch social clips.
How Do I Animate a Handbag Photo Into an Opening or Rotating Clip?
Submit the source photo and a motion prompt describing both the product's motion and the camera movement — image-to-video jobs are asynchronous, so the response returns a job ID to poll rather than a direct result:
import requests
import time
API_KEY = "YOUR_KEY"
BASE = "https://genrelay.ai/v1"
with open("tote_studio.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": (
"A leather tote bag's flap slowly opening to reveal "
"a lined interior, strap swaying gently, soft studio "
"light catching the hardware, slow tracking camera "
"movement circling the bag."
),
"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 Colorway Line?
Batch the same source photo against a list of motion prompts, submitting jobs concurrently and polling each one, rather than running the loop sequentially and waiting on each clip before submitting the next:
import concurrent.futures
variants = [
"flap slowly opening to reveal the lined interior",
"strap swinging as the bag is lifted off a table, close-up",
"bag rotating 360 degrees on a turntable, studio lighting",
]
def submit_and_wait(prompt):
with open("tote_studio.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": prompt, "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 status["output_url"]
if status["state"] == "failed":
raise RuntimeError(status.get("error"))
time.sleep(3)
with concurrent.futures.ThreadPoolExecutor(max_workers=3) as pool:
clips = list(pool.map(submit_and_wait, variants))
Three 5-second clips at Grok Imagine 1.5's $0.022/second rate cost $0.33 total — less than the cost of a single stock video license, for a set of clips that actually show the exact bag and colorway shipping to customers.
What Does a Full Colorway Line Launch Cost?
An accessory brand with 5 colorways needing 1 opening or rotating clip each — 5 clips total — at Grok Imagine 1.5's 5-second rate costs $0.55 for the full batch. Upgrading to Veo 3.1 Lite at 720p for the same 5 clips costs $1.50; at 1080p for a small set of 2 hero colorways (2 clips) it costs $1.20, reserved for the highest-traffic product pages rather than the full line.
| Scope | Clips | Model | Total cost |
|---|---|---|---|
| 5 colorways × 1 opening/rotating clip | 5 | Grok Imagine 1.5, 5s | $0.55 |
| Same line, higher fidelity | 5 | Veo 3.1 Lite 720p, 5s | $1.50 |
| 2 hero colorways, 1080p hero clip | 2 | Veo 3.1 Lite 1080p, 5s | $1.20 |
| 5 colorways, 1 clip each | 5 | Omni Flash 720p (flat) | $0.50 |
Omni Flash's flat per-generation rate makes sense when one representative opening or rotating clip per colorway is enough — a single "here's how it opens" clip per product for a launch page — while per-second models earn their cost when a colorway needs a longer hero clip or more elaborate strap or hardware motion.
FAQ
Can I generate generic lifestyle B-roll from text only, without a product photo?
Yes — Grok Imagine 1.0 generates from a text prompt alone at $0.010/second, but without a source photo the model has no exact bag to match, so it works for general lifestyle-ambience footage rather than clips depicting your actual SKU.
Does the API support longer clips for a hero video?
Duration is set per request up to each model's maximum; check the /videos/generations endpoint docs for current per-model duration limits, and expect cost to scale linearly for per-second models.
Does the video include audio, like a clasp click or zipper sound?
Veo 3.1 supports synchronized audio generation on some modes; see the Veo 3.1 audio API guide for details. Grok Imagine and Omni Flash clips are silent.
How do I handle a failed generation job?
Check the state field in the polling response — a failed state includes an error field describing the cause. Retry with a simplified prompt if the failure relates to prompt content rather than a transient server error.
Can the same source photo generate both an opening clip and a rotating clip?
Yes — submit the same reference image with a different motion prompt for each job; the silhouette and hardware stay consistent across clips since both jobs anchor to the same source photo.
See the image-to-video pipeline guide for the full async pattern, or the AI luggage and travel gear photography API guide for a related accessory-category workflow.