Calling Runway Gen-4.5 from code
Updated 2026-10-02
Runway Gen-4.5 is reachable through VideoRouter's standard video endpoint under the model id runway/gen-4.5. You do not need a Runway developer account; a VideoRouter key is enough. This guide covers the request shapes, what to expect from the hosts that serve it, and how to evaluate it against other models using identical code.
Text-to-video
Video generation is an asynchronous job. You create it with POST /videos, then poll GET /videos/{id} through queued, in_progress and finally completed or failed. Polling is free.
import requests, time
BASE = "https://videorouter.sh/api/v1"
H = {"Authorization": "Bearer llmr_sk_live_...", "Content-Type": "application/json"}
job = requests.post(f"{BASE}/videos", headers=H, json={
"model": "runway/gen-4.5",
"prompt": "a lighthouse in a storm, waves breaking over the rocks, slow aerial orbit",
"duration_secs": 5,
"aspect_ratio": "16:9",
}).json()
while True:
j = requests.get(f"{BASE}/videos/{job['id']}", headers=H).json()
if j["status"] in ("completed", "failed"):
break
time.sleep(5)
print(j)
Image-to-video
Add start_image_url, either a public https:// URL or an inline data:image/...;base64,... URI. The rest of the request is unchanged:
job = requests.post(f"{BASE}/videos", headers=H, json={
"model": "runway/gen-4.5",
"prompt": "the camera pushes in slowly as the character turns toward us",
"start_image_url": "https://example.com/frame.jpg",
"duration_secs": 5,
}).json()
For image-to-video, keep the prompt about motion and camera, not about re-describing the image. The same advice applies to every model on the platform.
Duration: expect snapping
duration_secs is snapped to the nearest value the model actually supports. The host that serves a given request can restrict this further; VideoRouter's documentation shows the Replicate-hosted row as taking 5 or 10 seconds, so a request for 7 snaps to one of those. Billing happens once at creation from the snapped duration, so look at what the job returns before you assume what you will be charged for. Do not re-submit a slow job: polling is free, a second submission is a second charge. A job that fails upstream is not billed.
Hosts, pinning and failover
Gen-4.5 is hosted by only a small number of providers, far fewer than models like Seedance or Kling. That has two consequences:
- Little price spread. With few hosts, the gap between cheapest and priciest is narrow, sometimes nonexistent. Check the live table rather than assuming a hosting discount exists.
- Less failover headroom. A request that is unpinned goes to the cheapest healthy host and fails over to the other if it is down, but there may be only one alternative. For anything customer-facing, have a second model ready as a fallback in your own code.
No matching models in the live catalog right now.
To pin a host, append its slug to the id as runway/gen-4.5/<host>. Look up the host slugs on the model page. The platform also adds a 2% fee on image and video usage.
Pitfalls
- Silent parameter fallback. An unsupported
aspect_ratioandresolutioncombination is ignored and the model default is used, not rejected. Inspect the output file to confirm what you got. - One input mode at a time. The editing field
input_video_urlcannot be combined with a start image or references, and Gen-4.5 is a generation model. For editing see editing options. - Unreachable image URLs. Expired presigned links are the commonest cause of a failed image-to-video job.
- Errors are OpenAI-style:
{"error": {"message", "type", "code"}}. Handle one shape for every model.
Comparing Gen-4.5 with other models using identical code
Because everything goes through the same endpoint, a comparison is a loop over model ids on the same prompt set:
for model in ["runway/gen-4.5", "bytedance/seedance-2.0-fast", "google/veo-3.1-fast"]:
r = requests.post(f"{BASE}/videos", headers=H, json={
"model": model, "prompt": PROMPT, "duration_secs": 5,
})
print(model, r.json().get("id"))
Do this honestly: use the same duration and aspect ratio, keep every output, and judge against criteria you wrote down before you looked. Check each model's page first; supported durations and resolutions differ, and a model that snaps your 5 seconds to something else is not billed the same. The decision framework walks through the selection criteria.
Prompt and input tips for Gen-4.5
Start simple. A single subject, a single action and one camera instruction give you a baseline you can reason about; add detail one element at a time. For image-to-video, the frame you supply dominates the result, so choose a sharp, well-composed image at the aspect ratio you plan to request. If the output does not match the ratio you asked for, remember that an unsupported combination is ignored rather than rejected. Keep a log of the request body next to each job id, because reproducing a good result later depends on knowing exactly what you sent.
For production use, wrap the create and poll calls in a function with a timeout, store the job id before you start polling, and resume polling after a restart instead of creating a new job. Since billing happens at creation, a crash-and-retry loop that re-submits is the most expensive bug you can ship here.
Next steps
Read the quickstart for the basic request, or create a key and run the snippets above. See the pricing page for the Runway rows in the live catalog.
Frequently asked questions
What is the model id for Runway Gen-4.5?
It is runway/gen-4.5. Append a host slug to pin it, for example runway/gen-4.5/<host>; the model page lists the hosts.
Does Gen-4.5 support image-to-video?
Yes. Add start_image_url with a public URL or a base64 data URI to the same request you use for text-to-video.
Do I need a Runway account to call it?
No. A VideoRouter API key is enough, and usage draws from a single prepaid balance.
Why is there little price difference between hosts for Gen-4.5?
Only a small number of providers host it, so there is less room for spread than on models sold by many hosts. The live table shows the current gap.
Keep reading
- Editing Video with Runway Aleph 2 over API — Request Format and Limits
- Runway vs Kling vs Veo API: How to Choose Between Them
- Video-to-Video Editing API Options: Aleph 2 and Alternatives
- Runway Gen-4.5 Python Tutorial: Generate, Poll and Save Video
VideoRouter puts it next to dozens of other video and image models behind one API key, so you can compare providers, prices and fail over automatically. Compare providers on VideoRouter →