AI Video Generation API for Cosmetics Brands — Clip Cost Guide

Oct 13, 2026·5 min read

A makeup brand is adding twelve lipstick shades to its catalog. Each shade has a clean packshot, but the product pages and short-form ads need motion: the bullet twisting up from the tube, a swatch dragging across skin tone, a compact lid opening to reveal the pan. Shooting that for every shade means a macro setup and a lighting crew repeated twelve times. Animating the existing packshots through an API answers "what does this look like in motion" without a new shoot.

Direct answer: GenRelay's image-to-video models animate an existing cosmetics photo into a short clip with described motion, such as a twist-up, a lid opening, or a swatch stroke, 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 Cosmetics 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 $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 packshot into a twist-up or lid-open clip
Grok Imagine 1.0 (t2v) Per second $0.05 $0.08 Generic texture footage from text, no source photo
Veo 3.1 Lite, 720p Per second $0.30 $0.48 Finer shine and texture 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 shade that needs a simple motion clip, Grok Imagine 1.5 is the practical default: it takes the packshot as input and keeps the tube shape and label consistent while generating motion. Veo 3.1 Lite fits a few hero clips where gloss and texture realism justify the higher per-second price.

How Do I Animate a Cosmetics 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("lipstick_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": (
                "A matte black lipstick tube standing on a pale pink "
                "surface, the bullet slowly twisting up, soft studio "
                "light, 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 Shade Range?

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

import concurrent.futures

shades = ["ruby-red", "dusty-rose", "berry", "nude-beige"]

def submit_and_wait(shade):
    with open(f"packshots/{shade}.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": "lipstick bullet slowly twisting up, soft studio light, macro 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":
            return shade, 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, shades))

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

What Does a Full Shade-Range Launch Cost?

A brand with 12 shades needing one twist-up clip each pays $1.32 at Grok Imagine 1.5's 5-second rate. The same 12 clips on Veo 3.1 Lite at 720p cost $3.60; 3 hero shades at 1080p cost $1.80.

Scope Clips Model Total cost
12 shades × 1 twist-up clip 12 Grok Imagine 1.5, 5s $1.32
Same range, higher fidelity 12 Veo 3.1 Lite 720p, 5s $3.60
3 hero shades, 1080p clip 3 Veo 3.1 Lite 1080p, 5s $1.80
12 shades, 1 clip each 12 Omni Flash 720P (flat) $1.20

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

FAQ

Will the clip show the exact shade of my product?
The model starts from your packshot, but color can drift during motion. Check the first and last frames against the real product color before publishing, since shade accuracy matters to buyers.

Can I generate texture 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 texture or mood footage.

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 skincare brands?
Yes. The skincare video guide covers pump, pour, and texture 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 Cosmetics Brands — Clip Cost Guide — GenRelay