AI Video Generation API for Outdoor and Camping Gear Brands
A camping gear brand launching a new tent line has clean studio product shots — the tent pitched on a white backdrop — but the marketing calendar calls for short clips showing it set up on a ridge at sunset, in a forest clearing, and in light rain, for a product page and a round of paid social creative. Booking a location shoot for three environments for a single tent model costs more than most outdoor brands spend on an entire seasonal catalog shoot, and the gear ships to retailers before a location crew could even be scheduled. Turning the existing studio photo into environment-specific motion clips via API answers "what would this look like in the field" without a field trip.
Direct answer: GenRelay's image-to-video models animate an existing product photo into a short clip with a described environment and camera motion, 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 environment, per product variant, before committing to a real location shoot.
How Much Does an Outdoor Product Clip Cost?
Cost depends entirely on billing model and resolution, not on how complex the described environment is. 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 scene |
| Grok Imagine 1.0 (t2v) | Per second | $0.05 | $0.08 | Generating a scene from a text description, no source photo |
| Veo 3.1 Lite, 720p | Per second | $0.30 | $0.48 | Higher-fidelity motion, camera pans, realistic lighting |
| 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 tent photo that needs to end up pitched on a windswept ridge, Grok Imagine 1.5 is the practical default — it takes the studio photo as input and holds the product's shape and color consistent while generating the surrounding environment and camera 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 lighting realism and camera movement quality matter more than cost per clip — a homepage banner clip, for instance, versus fifty social ad variants.
How Do I Animate a Product Photo Into an Environment Clip?
Submit the source photo and a motion prompt describing both the environment and the camera behavior — 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("tent_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": (
"Tent pitched on a mountain ridge at sunset, wind "
"gently moving the rainfly, warm golden 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 the Same Product Across Multiple Environments?
Batch the same source photo against a list of environment 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
environments = [
"pitched on a mountain ridge at sunset, wind moving the rainfly",
"set up in a misty forest clearing at dawn",
"pitched in light rain, water beading on the rainfly, headlamp glow inside",
]
def submit_and_wait(prompt):
with open("tent_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, environments))
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 retailers.
What Does a Full Seasonal Catalog Cost?
A camping brand with 10 products needing 3 environment clips each — 30 clips total — at Grok Imagine 1.5's 5-second rate costs $3.30 for the full batch. Upgrading to Veo 3.1 Lite at 720p for the same 30 clips costs $9.00; at 1080p for a small set of 5 hero products (15 clips) it costs $9.00 as well, reserved for the highest-traffic product pages rather than the full catalog.
| Scope | Clips | Model | Total cost |
|---|---|---|---|
| 10 products × 3 environments | 30 | Grok Imagine 1.5, 5s | $3.30 |
| Same catalog, higher fidelity | 30 | Veo 3.1 Lite 720p, 5s | $9.00 |
| 5 hero products × 3 environments | 15 | Veo 3.1 Lite 1080p, 5s | $9.00 |
| 10 products, 1 environment each | 10 | Omni Flash 720p (flat) | $1.00 |
Omni Flash's flat per-generation rate makes sense when one representative environment clip per product is enough — a single "in the field" clip per SKU for a catalog page — while per-second models earn their cost when a product needs multiple environment variants or a longer hero clip.
FAQ
Can I generate the environment 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 product to match, so it works for general brand/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?
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 event photography API guide for the image-side equivalent of this workflow.