AI Video Generation API for Wall Art Brands — Clip Cost Guide

Oct 22, 2026·5 min read

A wall art shop sells one botanical print in five frame finishes and four sizes. Each listing has a flat mockup, but shoppers want to see how the piece looks in a room as daylight moves across the wall. Filming twenty combinations means hanging, leveling, and re-lighting a set for every one. Animating the existing mockups through an API gives shoppers a sense of scale and light without a new shoot.

Direct answer: GenRelay's image-to-video models animate an existing framed-print photo into a short clip with described motion, such as a slow push-in, a gentle parallax drift, or morning light sliding across the frame, billed per second or per generation, and a 5-second clip costs between $0.05 and $0.96 depending on model and resolution.

How Much Does a Wall Art 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 room mockup into a push-in or drift clip
Grok Imagine 1.0 (t2v) Per second $0.05 $0.08 Generic gallery-wall ambience footage from text, no source photo
Veo 3.1 Lite, 720p Per second $0.30 $0.48 Finer frame-edge and canvas 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 print that needs a simple motion clip, Grok Imagine 1.5 is the practical default: it takes the mockup as input and keeps the artwork consistent while generating motion. Veo 3.1 Lite fits a few hero clips where frame texture and light detail justify the higher per-second price.

How Do I Animate a Framed Print Into a Clip?

Submit the source photo with a prompt describing the movement and light. 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("print_botanical_oak.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": (
                "Botanical print in an oak frame on a plaster wall, slow "
                "camera push-in, soft morning light sliding across the "
                "frame, artwork unchanged."
            ),
            "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 Frame Range?

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

import concurrent.futures

finishes = ["oak", "walnut", "black", "white"]

def submit_and_wait(finish):
    with open(f"photos/print_{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": "slow push-in, soft light sliding across the frame, artwork unchanged",
                "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 Range Launch Cost?

A shop with 5 frame finishes needing one push-in 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 push-in 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 artwork inside the frame stay exactly the same?
Not reliably. Fine linework and small text can warp during motion. Say "artwork unchanged" in the prompt and check each clip against the original file before publishing.

Can the model show true print size on a wall?
No. Apparent scale in a generated clip is approximate. State dimensions in the listing text and use a reference object in the source photo if scale matters.

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 music or sound design in post.

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 curtain brands?
Yes. The curtain video guide covers breeze-sway, fold-pan, and daylight-shift 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 Wall Art Brands — Clip Cost Guide — GenRelay