AI Video Generation API for Perfume Brands — Showcase Clip Costs

Oct 12, 2026·6 min read

A fragrance brand has a polished studio photo of its new eau de parfum — faceted glass bottle, gold collar, amber liquid catching the light — but the product page and paid social creative need short clips: a mist spraying from the atomizer, light sliding across the glass as the bottle turns, a slow push-in on the cap. Fragrance video usually means a studio, macro lenses, and careful lighting for glass, and that overhead repeats for every new scent or limited edition. Turning the existing bottle photo into a short motion clip via API answers "what does this fragrance look like in motion" without booking a shoot.

Direct answer: GenRelay's image-to-video models animate an existing perfume bottle photo into a short clip with described motion — a mist spray, a slow rotation, a light sweep across the glass — 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 Perfume 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 bottle photo into a rotation or mist clip
Grok Imagine 1.0 (t2v) Per second $0.05 $0.08 Generic mood footage from text, no source photo
Veo 3.1 Lite, 720p Per second $0.30 $0.48 Finer glass refraction and liquid detail
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 bottle that needs a rotation or mist clip, Grok Imagine 1.5 is the practical default: it takes the studio photo as input and keeps the bottle shape, label, and collar 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 glass and liquid realism matter more than cost per clip, such as a launch-page banner.

How Do I Animate a Perfume 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("perfume_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 faceted glass perfume bottle slowly rotating on a "
                "reflective surface, soft light sliding across the glass, "
                "fine mist drifting from the atomizer, dark gradient "
                "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 Scent Line?

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

import concurrent.futures

variants = [
    "bottle slowly rotating, light sweeping across the faceted glass",
    "mist spraying from the atomizer in slow motion, dark background",
    "close-up push-in on the gold collar and cap, soft reflections",
]

def submit_and_wait(prompt):
    with open("perfume_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 bottle shipping to customers.

What Does a Full Scent-Line Launch Cost?

A fragrance house with 5 scents needing one rotation or mist clip each — 5 clips — 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 scents at 1080p cost $1.20, reserved for the highest-traffic pages.

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

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

FAQ

Can I generate fragrance mood footage 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 bottle, so it suits general atmosphere footage — petals, silk, light — 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?
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.

Do you have a similar guide for other home and lifestyle brands?
Yes. The candle and home fragrance video guide covers flame, pour, and mist 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 Perfume Brands — Showcase Clip Costs — GenRelay