AI Video Generation API for Speaker Brands — Clip Cost Guide

Oct 17, 2026·6 min read

A home audio brand sells a portable Bluetooth speaker in five finishes. Each finish has a studio packshot, but the product page and short-form ads need motion: the speaker slowly rotating on a turntable, the LED ring pulsing, the fabric grille catching a sweep of light, the carry strap swinging into frame. Filming five finishes means a set, a stylist, and a lighting crew repeated five times. Animating the existing packshots through an API gives shoppers a sense of the product in motion without a new shoot.

Direct answer: GenRelay's image-to-video models animate an existing speaker photo into a short clip with described motion, such as a rotation, an LED pulse, or a light sweep across the grille, billed per second or per generation, and a 5-second clip costs between $0.05 and $0.90 depending on model and resolution.

How Much Does a Speaker 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 packshot into a rotation or LED-pulse clip
Grok Imagine 1.0 (t2v) Per second $0.05 $0.08 Generic lifestyle footage from text, no source photo
Veo 3.1 Lite, 720p Per second $0.30 $0.48 Finer fabric-grille and material 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 finish variant that needs a simple motion clip, Grok Imagine 1.5 is the practical default: it takes the packshot as input and keeps the product shape and color consistent while generating motion. Veo 3.1 Lite fits a few hero clips where the grille texture and metal trim justify the higher per-second price.

How Do I Animate a Speaker Packshot Into a Clip?

Submit the source photo with a prompt describing both the product motion and the camera movement. 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("speaker_packshot.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": (
                "Portable Bluetooth speaker with fabric grille on a dark "
                "gradient surface, slowly rotating, soft light sweeping "
                "across the grille, LED ring gently pulsing, slow push-in."
            ),
            "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 Finish Range?

Submit jobs concurrently and poll each one, rather than waiting on each clip before sending the next:

import concurrent.futures

finishes = ["graphite", "sand", "olive", "coral"]

def submit_and_wait(finish):
    with open(f"packshots/{finish}.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": "speaker slowly rotating on a turntable, soft studio light, 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 finish, 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, finishes))

Four 5-second clips at Grok Imagine 1.5's $0.022/second cost $0.44 in total.

What Does a Full Finish-Range Launch Cost?

A brand with 5 finishes needing one rotation clip each pays $0.55 at Grok Imagine 1.5's 5-second rate. The same 5 clips on Veo 3.1 Lite at 720p cost $1.50; 2 hero finishes at 1080p cost $1.20.

Scope Clips Model Total cost
5 finishes × 1 rotation clip 5 Grok Imagine 1.5, 5s $0.55
Same range, higher fidelity 5 Veo 3.1 Lite 720p, 5s $1.50
2 hero finishes, 1080p clip 2 Veo 3.1 Lite 1080p, 5s $1.20
5 finishes, 1 clip each 5 Omni Flash 720P (flat) $0.50

Omni Flash's flat rate fits when one clip per finish is enough, while per-second models earn their cost when a hero piece needs a longer clip.

FAQ

Will the clip show the exact finish of my speaker?
The model starts from your packshot, but color can shift during motion and lighting changes. Check the first and last frames against the real product before publishing.

Can I generate generic lifestyle footage from text only?
Yes. Grok Imagine 1.0 generates from a text prompt at $0.010/second, but with no source photo it cannot match your actual SKU, so it suits general mood footage such as a living-room scene.

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 your own sound design in post. For a speaker, that is usually the better route, since you can use your own audio demo.

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 headphone brands?
Yes. The headphone video guide covers cup-swivel, rotation, and light-sweep 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.

Related posts

Join our DiscordAI Video Generation API for Speaker Brands — Clip Cost Guide — GenRelay