AI Video Generation API for Watch Brands — Showcase Clip Costs

Oct 11, 2026·6 min read

A watch brand has a sharp studio photo of its new automatic — sunburst dial, polished bezel, crown at three o'clock — but the product page and paid social creative need short clips: the second hand sweeping, light rolling across the bezel as the case tilts, the crown being wound. Macro watch video needs a specialist shooter, lighting rigs, and a rented lens, and that overhead repeats for every dial color or strap launch. Turning the existing studio photo into a short motion clip via API answers "what does this watch look like in motion" without booking a shoot.

Direct answer: GenRelay's image-to-video models animate an existing watch photo into a short clip with described motion — a case tilting through light, a rotating turntable shot, a wrist-turn — 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 Watch Showcase Clip Cost?

Cost depends on billing model and resolution, not on how elaborate 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 $0.180/second at 4K, 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 watch photo into a tilt or rotation clip
Grok Imagine 1.0 (t2v) Per second $0.05 $0.08 Generic lifestyle B-roll from text, no source photo
Veo 3.1 Lite, 720p Per second $0.30 $0.48 Finer dial and bezel detail, macro-style shots
Veo 3.1 Lite, 1080p Per second $0.60 $0.96 Hero clips for the product page or a paid ad
Omni Flash, 720p Per generation $0.10 $0.10 Fixed-price clips regardless of duration

For a watch that needs a tilting or turntable clip, Grok Imagine 1.5 is the practical default: it takes the studio photo as input and keeps the dial layout, case shape, and strap consistent while generating the motion and reflections, at a fraction of Veo 3.1 Lite's per-second cost. Veo 3.1 Lite earns its price for a few hero clips where reflection realism and camera quality matter more than cost per clip, such as a homepage banner.

How Do I Animate a Watch Photo Into a Showcase 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("watch_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 luxury automatic watch slowly tilting so light "
                "rolls across the polished bezel and sunburst dial, "
                "dark studio background, slow macro camera 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 Dial Lineup?

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

import concurrent.futures

variants = [
    "watch slowly tilting, light sweeping across the bezel",
    "watch rotating 360 degrees on a turntable, studio lighting",
    "close-up push-in on the dial as the second hand sweeps",
]

def submit_and_wait(prompt):
    with open("watch_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 cost $0.33 in total, for clips that show the actual watch and dial shipping to customers.

What Does a Full Dial-Color Launch Cost?

A watch brand with 4 dial colors needing one tilt or rotation clip each — 4 clips — pays $0.44 at Grok Imagine 1.5's 5-second rate. The same 4 clips on Veo 3.1 Lite at 720p cost $1.20; 2 hero dial colors at 1080p cost $1.20 as well, reserved for the highest-traffic pages.

Scope Clips Model Total cost
4 dial colors × 1 tilt/rotation clip 4 Grok Imagine 1.5, 5s $0.44
Same line, higher fidelity 4 Veo 3.1 Lite 720p, 5s $1.20
2 hero dials, 1080p hero clip 2 Veo 3.1 Lite 1080p, 5s $1.20
4 dial colors, 1 clip each 4 Omni Flash 720p (flat) $0.40

Omni Flash's flat rate fits when one representative clip per dial color is enough, while per-second models earn their cost when a color needs a longer hero clip or more elaborate motion.

FAQ

Can I generate watch B-roll from text only, without a product photo?
Yes. Grok Imagine 1.0 generates from a text prompt at $0.010/second, but with no source photo it can't match your exact dial, so it suits general lifestyle footage rather than clips of 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 docs for current per-model limits; per-second model cost scales linearly with duration.

Does the video include audio, like a ticking sound?
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.

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.

Can I make dial-color photos first, then animate them?
Yes. Generate the variant photo with the watch photography API, then pass that image as the source for an image-to-video job.


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 Watch Brands — Showcase Clip Costs — GenRelay