AI Video Generation API for Coffee and Beverage Brands

Oct 3, 2026·7 min read

A coffee brand has clean studio photos of a new bag of beans and the finished pour-over in a glass mug, but the product page and a round of paid social creative call for short clips — steam rising off a fresh pour, coffee streaming into the mug, condensation beading on a cold-brew can — for a drink the team photographed once and doesn't want to re-shoot per flavor variant or seasonal release. Booking a food videographer and a barista for a half-day shoot every time a new roast or flavor ships costs more than most beverage brands budget for a single launch, and the release calendar doesn't wait for a studio day to open up. Turning the existing product photo into a pour or steam clip via API answers "what does drinking this actually look like" without a re-shoot.

Direct answer: GenRelay's image-to-video models animate an existing product photo into a short clip with described motion — a pour, steam, condensation, foam settling — 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 flavor variant before committing to a real video shoot.

How Much Does a Beverage Product Clip Cost?

Cost depends entirely on billing model and resolution, not on how much liquid 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 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 product photo into a pour or steam clip
Grok Imagine 1.0 (t2v) Per second $0.05 $0.08 Generating lifestyle B-roll from a text description, no source photo
Veo 3.1 Lite, 720p Per second $0.30 $0.48 Higher-fidelity liquid motion, close-up pours, realistic steam
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 bag of beans that needs to end up as a pour-over clip, Grok Imagine 1.5 is the practical default — it takes the studio photo as input and holds the packaging and mug consistent while generating the pour, steam, and surrounding motion, 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 liquid realism and camera movement quality matter more than cost per clip — a homepage banner clip, for instance, versus twenty flavor-variant social clips.

How Do I Animate a Product Photo Into a Pour or Steam Clip?

Submit the source photo and a motion prompt describing both the liquid behavior 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("pourover_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": (
                "Coffee streaming from a kettle into the glass mug, "
                "steam rising gently, warm morning light, slow "
                "push-in camera movement."
            ),
            "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 Flavor Lineup?

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 = [
    "coffee streaming into the mug, steam rising, warm morning light",
    "cold-brew can being opened, condensation beading on the surface",
    "milk being poured into espresso, forming visible latte art swirl",
]

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

What Does a Full Seasonal Launch Cost?

A coffee brand with 8 flavor or roast variants needing 1 pour clip each — 8 clips total — at Grok Imagine 1.5's 5-second rate costs $0.88 for the full batch. Upgrading to Veo 3.1 Lite at 720p for the same 8 clips costs $2.40; at 1080p for a small set of 3 hero flavors (3 clips) it costs $1.80, reserved for the highest-traffic product pages rather than the full lineup.

Scope Clips Model Total cost
8 flavors × 1 pour clip 8 Grok Imagine 1.5, 5s $0.88
Same lineup, higher fidelity 8 Veo 3.1 Lite 720p, 5s $2.40
3 hero flavors, 1080p hero clip 3 Veo 3.1 Lite 1080p, 5s $1.80
8 flavors, 1 clip each 8 Omni Flash 720p (flat) $0.80

Omni Flash's flat per-generation rate makes sense when one representative pour or steam clip per flavor is enough — a single "this is what it looks like" clip per SKU for a catalog page — while per-second models earn their cost when a flavor needs a longer hero clip or more elaborate liquid motion.

FAQ

Can I generate 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 packaging or mug to match, so it works for general cafe/lifestyle 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.

What's the difference between per-second and per-generation billing?
Per-second models (Grok, Veo 3.1 Lite) charge proportional to clip duration — cheaper for short clips, more expensive as duration grows. Per-generation models (Omni Flash) charge a flat fee per clip regardless of duration, which is cheaper for longer clips and simpler to budget per SKU.

Does the video include audio, like a pour or steam 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.


See the image-to-video pipeline guide for the full async pattern, or the AI food photography API guide for the image-side equivalent of this workflow.

Related posts

Join our DiscordAI Video Generation API for Coffee and Beverage Brands — GenRelay