# Previsualizing game cutscenes and concept animations with an AI video API Cutscene previs has always been expensive. Before a single frame is mocapped or keyframed, a team needs to know whether the shot works: whether the camera move sells the reveal, whether the pacing lands, and whether the art direction reads at the intended scale. Traditionally that meant storyboard artists, animatic editors, and rough 3D blockouts. These are valuable steps, but they are slow to iterate. AI video generation doesn't replace that pipeline. It does give narrative designers, cinematic directors, and concept artists a fast way to explore shots before committing production hours. This article walks through using [RelayDance](https://relaydance.com), an OpenAI-compatible API for ByteDance Seedance, HappyHorse, and Grok Imagine models, to build a practical previs workflow for game cutscenes and concept animations. ## Why an API instead of a web app Consumer video generators work fine for one-off experiments. Previs is different. You are generating many variants of the same shot, keeping character and environment references consistent, and ideally feeding results back into a review tool or shot tracker. An API lets you do the following: - Script batches of shot variants from a shot list (CSV, spreadsheet, or your narrative tool's export). - Reuse the same reference images for every shot so characters and locations stay on-model. - Wire results into Slack, ShotGrid, Notion, or an internal review page through webhooks. - Track spend per shot, per sequence, or per milestone. RelayDance's main advantage here is that the integration is minimal. According to the official relaydance.com/docs, you "Set base_url to https://relaydance.com/v1 and keep your OpenAI SDK". You don't need a BytePlus enterprise account or KYC process to reach Seedance. You create a key at the [console](https://relaydance.com/console) and start sending requests. ## The models and what they cost Pricing is pay-as-you-go per generated video. Live rates are on [relaydance.com/models](https://relaydance.com/models). At the time of writing, the Seedance tiers look like this: | Model / tier | Approx. price | 15-second shot | |---|---|---| | Seedance Fast | ~$0.152 / second | ~$2.28 | | Seedance 2.0, 720p | ~$0.190 / second | ~$2.85 | | Seedance 2.0, 1080p | ~$0.470 / second | ~$7.05 | | Seedance 2.5, 1080p (`doubao-seedance-2-5-1080p`, added 2026-10-10) | ~$0.711 / second | ~$10.67 | | Seedance native 4K | ~$4.90 per 5-second clip | ~$14.70 (3 × 5s) | Per-shot figures are simple multiplications of the listed rates. Always confirm current prices on the [models page](https://relaydance.com/models) before budgeting a milestone. The catalog also includes Seedance 1.5 Pro, HappyHorse video models, and Grok Imagine video and image models. For still keyframes, `gpt-image-2` uses an unusual billing model: according to [relaydance.com/models](https://relaydance.com/models), image output is free and only input is billed. Image-to-image starts at about CNY 0.035, and 4K output costs the same as 1K. For concept art and keyframe generation, there is therefore no cost reason to render at low resolution. ### A tiering strategy for previs Previs moves from rough to final, and model choice should follow the same path: 1. **Exploration (Seedance Fast or 2.0 at 720p).** Generate many variants of each beat to find camera angles, blocking, and pacing. Cost per idea is low, and 720p is enough to judge composition. 2. **Selection (Seedance 2.0 at 1080p).** Re-render the shortlisted takes at higher fidelity for director review. 3. **Pitch quality (Seedance 2.5 1080p or native 4K).** Use these only for the handful of shots going into a publisher pitch, vertical slice trailer, or greenlight deck. One detail helps keep exploration cheap. According to the official relaydance.com docs, "Failed or errored requests are never billed". If a batch run hits a content filter or a malformed request, you don't pay for the failure. ## Building the workflow ### Step 1: Lock your references with still keyframes Consistency is the hardest part of AI previs. A hero who changes jacket color between shots breaks the read of the sequence. Start by producing a small reference set: - Character turnarounds or hero portraits for each speaking character - Key environment establishing frames - A style frame showing lighting and palette You can paint these, pull them from existing concept art, or generate them through the images endpoint: python from openai import OpenAI client = OpenAI( api_key="YOUR_API_KEY", base_url="https://relaydance.com/v1", ) img = client.images.generate( model="gpt-image-2", prompt=( "Style frame: ruined cathedral interior at dusk, volumetric light " "through broken stained glass, muted teal and amber palette, " "painterly game concept art" ), ) print(img.data[0].url) Because output is free on `gpt-image-2` and 4K costs the same as 1K, render your reference frames at the highest resolution available. ### Step 2: Submit shots as video tasks Video generation is asynchronous. You POST a task to `/v1/video/generations` with `model`, `prompt`, `seconds`, and a `metadata` object, then poll or receive a webhook when the task finishes. Full parameter details are in the [docs](https://relaydance.com/docs). Reference media go in `metadata.content[]`, and the prompt cites them as `@image1` through `@imageN`. Each request can include up to 9 reference images, 3 reference videos, and 3 audio tracks, and clips can run up to 15 seconds. That covers most cutscene beats. python import requests API = "https://relaydance.com/v1" HEADERS = {"Authorization": "Bearer YOUR_API_KEY"} payload = { "model": "doubao-seedance-2-5-1080p", # see /models for all model IDs "prompt": ( "Slow dolly-in through the ruined cathedral from @image2. " "The knight from @image1 kneels before the altar, head bowed. " "Light shafts shift as clouds pass. Match the palette of @image3. " "Cinematic, 35mm, shallow depth of field." ), "seconds": 10, "metadata": { "ratio": "16:9", "resolution": "1080p", "generate_audio": False, "content": [ {"type": "image_url", "image_url": {"url": "https://cdn.example.com/knight.png"}}, {"type": "image_url", "image_url": {"url": "https://cdn.example.com/cathedral.png"}}, {"type": "image_url", "image_url": {"url": "https://cdn.example.com/style.png"}}, ], }, } r = requests.post(f"{API}/video/generations", json=payload, headers=HEADERS) r.raise_for_status() task_id = r.json()["id"] *(Check the [docs](https://relaydance.com/docs) for the exact shape of `content[]` entries and the response fields.)* ### Step 3: Poll or use webhooks For a quick script, poll until the task finishes: python import time while True: t = requests.get(f"{API}/video/generations/{task_id}", headers=HEADERS).json() if t["status"] in ("succeeded", "failed"): break time.sleep(5) if t["status"] == "succeeded": print("Video:", t["url"]) # see docs for the exact result field For batch previs, webhooks scale better. Set `metadata.callback_url`, and the final task state is POSTed to your server. A small endpoint can receive these callbacks, download each clip, name it by shot ID (`SEQ030_SH040_v03.mp4`), and push it to your review tool. A sequence of 40 shots × 4 variants then runs unattended overnight. ### Step 4: Drive it from a shot list Generating from a shot list is the most useful part of the workflow. A minimal CSV might look like this: shot_id,seconds,camera,action,refs SEQ030_SH010,6,wide establishing crane down,cathedral exterior in storm,cathedral_ext;style SEQ030_SH020,8,tracking low behind,knight walks through doors,knight;cathedral;style SEQ030_SH030,10,slow dolly-in,knight kneels at altar,knight;cathedral;style A short script turns each row into a prompt and a `content[]` array from the reference library. It submits N variants per shot at Fast or 720p, and records the task IDs. Multiply seconds by the per-second rate, and you know the budget before you press go. ## Tips specific to game cinematics - **Write prompts like shot descriptions.** Lens, camera move, subject, action, mood. "Low-angle 24mm push-in, villain turns to camera, rim light, menace" works better than prose. - **Cite references explicitly.** Name `@image1` for the character and `@image2` for the location in every prompt. Unreferenced subjects drift. - **Keep beats short.** Even though clips can run to 15 seconds, 4 to 8 second beats edit together more cleanly and cost less to re-roll. - **Use reference video for camera language.** A rough blockout render or a grey-box capture from your engine can go in as a reference video to guide motion. This is useful when your layout artist already has a camera path. - **Treat audio as a scratch track.** Turning on `generate_audio` can give temp ambience for the animatic. Plan to replace it. - **Cut the animatic in your NLE.** The generated clips are raw material. Editing is where the sequence gets its rhythm. ## Practical notes - **Auth:** `Authorization: Bearer YOUR_API_KEY`. Keys are created at [relaydance.com/console](https://relaydance.com/console). - **Payments:** USDT or Stripe card. - **Protocol:** OpenAI-compatible. Existing SDK code needs only the base URL changed. Details are in the [docs](https://relaydance.com/docs). - **Rights and IP:** AI previs is for internal exploration. Check your studio's policy on generated assets, and don't let previs frames leak into shipped content without legal review. ## Wrapping up AI video won't replace a cinematics team, but it changes the economics of the earliest stage of the work. Testing a camera idea costs a couple of dollars and a few minutes instead of a day of blockout time. Start cheap with Seedance Fast or 2.0 at 720p, lock consistency with reference images, and save Seedance 2.5 and 4K for the shots that need to impress. Because failed requests aren't billed, aggressive iteration carries little risk. Current model IDs and rates are on [relaydance.com/models](https://relaydance.com/models), and the full API reference is at [relaydance.com/docs](https://relaydance.com/docs).
According to the official relaydance.com docs: "Failed or errored requests are never billed"
According to the official relaydance.com/docs docs: "Set base_url to https://relaydance.com/v1 and keep your OpenAI SDK"

Key facts and figures

ItemValueSource
Seedance 2.0 720p priceabout $0.190 / secondrelaydance.com/models
Seedance 2.0 1080p priceabout $0.470 / secondrelaydance.com/models
Seedance 2.5 1080p priceabout $0.711 / second, added 2026-10-10, model doubao-seedance-2-5-1080prelaydance.com/models
Seedance Fast priceabout $0.152 / secondrelaydance.com/models
Seedance native 4K priceabout $4.90 per 5-second cliprelaydance.com/models
gpt-image-2 image billingimage output is free, only input is billed; image-to-image from about CNY 0.035; 4K and 1K output cost the samerelaydance.com/models
API protocolOpenAI-compatible; set base_url to https://relaydance.com/v1relaydance.com/docs
Failed requestsfailed or errored requests are never billedrelaydance.com/docs

Data verified 2026-06-29; live prices are on the official /models page.


RelayDance home · Models and pricing · Docs · All guides · Privacy Policy · User Agreement · Telegram community · RelayRouter (LLM API) · Live playground