Runway API - the complete, practical guide to building AI video, image, and audio features in your product

Runway provides developer APIs for running their generative models in your own apps and workflows. The Runway API is designed around asynchronous “tasks”: you start a generation (like image-to-video), then poll the task endpoint until it completes, and finally download the outputs. This guide walks you through keys, authentication, required version headers, uploads, core endpoints, pricing in credits, usage tiers, SDKs, and production patterns.

1) What the Runway API is

Overview

The Runway API is a developer platform for integrating Runway’s generative models into your own products. The official documentation describes it as a way to bring Runway’s models directly into apps, products, platforms, and websites. You call REST endpoints to start a generation, then retrieve outputs when the generation is finished. The API is designed for building real product features: video generation from images or videos, text/image generation workflows, and audio tasks like voice dubbing and speech-to-speech conversion.

A core idea you should adopt early is that Runway API calls are not always “instant responses.” For generations that take seconds (or longer), the API commonly returns a task identifier. Your job is to treat the generation as an asynchronous workflow: start a task, store its ID, poll its status, and deliver the output to your users when it completes.

Best mental model

You submit a job (generation task). Then you watch the job. Then you fetch and display results. This is similar to a “render farm” or a background processing queue.

What you can build

Image→Video, Video→Video stylization, speech conversion, voice dubbing, voice isolation, plus supporting workflows like uploads, usage reporting, and credit monitoring.

Official anchor points you should keep handy

Hostname: the Runway API FAQs state the hostname is api.dev.runwayml.com.
API reference: endpoints and required headers are documented in the API reference (see below in “Sources”).
Pricing: the Pricing & Costs guide states API usage costs credits, and credits can be purchased for $0.01 per credit.

2) How the Runway API works: the task-based architecture

Tasks

Runway’s API is designed to support tasks that can take time: generating video frames, performing transformations, converting voices, or processing uploaded media. The API reference describes a “Start generating” group of endpoints that kick off tasks to create generations, and a “Task management” group for checking a task’s status and details.

That architecture has two big benefits:

  • Reliability under load: your app can queue requests and check status later instead of holding open long-running HTTP connections.
  • Scalability: you can control concurrency and rate limits separately from the user experience (for example, letting users submit 20 jobs but processing 3 at a time).

Practically, your integration will revolve around a few recurring patterns:

Start task

Call a generation endpoint (like POST /v1/image_to_video) with inputs and settings. Receive a response containing a task ID.

Poll task

Call GET /v1/tasks/{id} until status becomes “succeeded” (or “failed”). The API reference notes you shouldn’t expect updates more frequent than once every five seconds for a given task.

Consume output

When the task completes, extract output URLs (or artifact descriptors) and store them or stream them to users. Handle expiry rules for uploads and outputs in your product design.

Design your UI around asynchronous results

The fastest way to make a Runway API integration feel “premium” is a great progress UX: queued → running → final, with previews, notifications, and retry options. If you hide this behind a spinner, users will think the app is broken.

3) Quickstart: get an API key → upload media → start a generation → poll results

Quickstart

This quickstart is the standard end-to-end flow for most Runway API projects. We’ll keep it generic so you can apply it to image-to-video, video-to-video, or audio endpoints. If you only remember one thing: uploads + tasks + polling.

  1. Create a Runway developer account and open the developer portal to create an API key for your organization.
  2. Use the correct hostname: the Runway API FAQs specify api.dev.runwayml.com for API requests.
  3. Set the required headers including the version header X-Runway-Version (see Versioning section).
  4. Upload your media using POST /v1/uploads if your generation needs a file input.
  5. Start a generation task (for example POST /v1/image_to_video or POST /v1/video_to_video).
  6. Poll task status with GET /v1/tasks/{id} until it completes, then use the output URLs.
Required version header (official)

Runway’s API reference shows X-Runway-Version is required and, for the documented version, it “must be set to the exact value 2024-11-06.” Treat this like a required contract: pin it in your HTTP client and update intentionally when Runway releases a newer version.

Example: start image-to-video (cURL template)

curl -X POST "https://api.dev.runwayml.com/v1/image_to_video" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "X-Runway-Version: 2024-11-06" \
  -H "Content-Type: application/json" \
  --data '{
    "image": "UPLOAD_REFERENCE_OR_URL",
    "prompt": "A cinematic slow push-in, soft daylight, realistic motion",
    "model": "runway_gen3_or_gen4_model_name_here"
  }'

Your exact body will depend on the endpoint and model. The API reference lists parameters per endpoint. The pattern stays the same: start a task and capture its ID.

Example: poll a task (cURL template)

curl -X GET "https://api.dev.runwayml.com/v1/tasks/TASK_ID" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "X-Runway-Version: 2024-11-06"
Don’t poll too fast

The task detail endpoint notes consumers shouldn’t expect updates more frequent than once every five seconds for a given task. Polling faster wastes credits and increases the chance you’ll hit usage limits or throttling.

4) Authentication: Bearer API keys

Auth

Runway’s developer docs describe authenticating requests by sending an API key with the Authorization header using the Bearer scheme. Some docs also show API keys passed via an X-API-Key header in other contexts (notably older/alternate docs), so the safest approach is: follow the current dev docs for the product you’re integrating and keep your auth logic configurable.

Recommended header (dev docs)

Authorization: Bearer <API_KEY>
plus X-Runway-Version (required).

Where keys live

Keys are managed in the developer portal per organization. Store them server-side only (never in a browser).

Never ship your API key to the client

Treat the API key like a password. If you put it in front-end JavaScript, anyone can extract it and run generations on your bill. Always call Runway from your backend, or from a secure serverless function that never exposes secrets.

In a production system, you’ll typically wrap Runway calls behind your own API: your users authenticate to your app, and your app calls Runway on their behalf. This lets you enforce per-user quotas, audit usage, and build a stable interface even if Runway updates their endpoints.

5) Versioning: X-Runway-Version header (required)

Versioning

Runway’s dev API reference shows a required header named X-Runway-Version. For the documented release, it states the value must be exactly 2024-11-06. This is Runway’s way of ensuring stable behavior as they evolve models and request/response formats.

Versioning headers are a gift for production engineers, because they allow you to:

  • Pin behavior for your production integration.
  • Upgrade intentionally with staging tests and canary deployments.
  • Support multiple versions temporarily if you need a long migration window.
Best practice: centralize the version constant

Put X-Runway-Version in a single configuration file and include it in every request. Log it on every request so debugging is easier. When you upgrade, roll it out gradually and keep a rollback option.

6) Models & capabilities: what the Runway API can do

Models

Runway positions the API as an “AI video generation API for developers,” and the developer docs highlight that you can integrate their generative models into your products. In the docs and marketing pages you’ll see references to models such as Gen-4 Turbo, Gen-4 Images, and earlier generations like Gen-2 and Gen-3. Specific availability may vary by your organization, product access, and usage tier.

The easiest way to think about capabilities is by “I/O shape”:

Image → Video

Start from a still image and generate motion. Common product uses: animated thumbnails, short ads, social clips, product shots with camera motion.

Video → Video

Transform an existing video into a new style or motion pattern while keeping some structure. Common product uses: stylization, brand looks, creative editing.

Audio / voice

Convert speech to speech, dub to a target language, isolate voice from background audio. Common product uses: localization, accessibility, content pipelines.

From a product perspective, you’ll often want to bundle these into “creator features” rather than raw endpoints. For example, a “Video stylizer” feature might include: upload video → choose style preset → set strength slider → generate → preview → regenerate variations → export.

Tip: build presets on top of raw parameters

Raw model parameters are powerful, but most users want simple controls. Define safe presets (Fast, Balanced, Cinematic) and map them to endpoint parameters. You can still offer an “Advanced” panel for power users.

7) Endpoint map: generations, tasks, uploads, organization

Endpoints

Runway’s API reference organizes endpoints into a few categories: “Start generating” endpoints that kick off tasks, “Task management” endpoints for checking those tasks, “Uploads” endpoints for file handling, and “Organization” endpoints for usage and tier information. Below is a developer-focused summary of the most important pieces.

Category Endpoints (examples) What you use them for
Generations POST /v1/image_to_video
POST /v1/video_to_video
POST /v1/speech_to_speech
POST /v1/voice_dubbing
POST /v1/voice_isolation
Kick off an asynchronous task that produces output media. These requests generally return a task ID.
Tasks GET /v1/tasks/{id} Check task status and retrieve outputs; the reference notes not to expect updates more frequent than ~5 seconds.
Uploads POST /v1/uploads Upload temporary media that can be referenced by generation requests; docs note uploads expire after a period of time.
Organization GET /v1/organization
POST /v1/organization/usage
Fetch tier and credit balance; query credit usage broken down by model and day (up to 90 days per query window).
Takeaway

Almost every production integration needs: uploads (for file inputs), tasks (to poll results), and organization usage (to prevent surprise spend). Even if you only use one generation endpoint, you’ll still rely on these supporting endpoints.

8) Task lifecycle: queued → running → succeeded/failed (and how to poll correctly)

Tasks

Because Runway generations can take time, tasks are central. The API reference includes GET /v1/tasks/{id} (“Get task detail”) and notes that consumers of the endpoint should not expect updates more frequent than once every five seconds for a given task. That’s effectively a polite “please don’t hammer this endpoint.”

A robust polling algorithm (recommended)

  • Initial delay: wait 2–3 seconds after creating a task before the first poll.
  • Poll interval: poll every 5 seconds (or slower for long tasks).
  • Backoff: if the task is still running after N polls, increase interval to 10–15 seconds.
  • Timeout: stop polling after a sensible max time, mark as “delayed,” and notify the user.
  • Retry on network errors: retry idempotent GET calls with exponential backoff.

In production, you typically poll from a backend job queue rather than from the browser. Your UI can subscribe to your backend (WebSocket, SSE, long-poll) for status updates. That way you control API usage, handle rate limits centrally, and avoid leaking API keys.

Don’t tie polling directly to “page open”

If a user closes the tab, you still want the job to complete and be available later. Queue the task in your system, poll in the background server-side, and notify users when it’s done.

Example: task state machine (simple)

CREATED -> QUEUED -> RUNNING -> SUCCEEDED -> DELIVERED
                     \-> FAILED  -> ERROR_SHOWN

Plus: CANCELLED (optional), EXPIRED (if outputs/links expire)

Even if Runway’s response fields change over time, this state machine remains a helpful product design. Your backend translates Runway responses into a stable internal status and a consistent UI experience.

9) Uploads: temporary media files for generation requests

Uploads

Most video features require inputs: an image to animate, a video to transform, or an audio track to dub. Runway’s API reference includes an “Upload a file” endpoint (POST /v1/uploads) described as uploading a temporary media file that can be referenced in generation requests. The reference also states uploaded files are automatically expired and deleted after a period of time, and it strongly recommends using Runway SDKs for simplified upload interfaces.

Why temporary uploads exist

It keeps the platform secure and manageable: uploads aren’t meant to be permanent storage. Your product should store originals in your own storage (S3, GCS, etc.) if you need long-term persistence.

Practical workflow

User uploads to your storage → your backend uploads to Runway as needed → start generation task referencing the Runway upload token/reference.

Design for expiration

Because uploads expire, avoid flows that assume you can regenerate a week later from the same upload reference. If you need “re-generate later,” keep the original file in your storage and re-upload to Runway when needed.

Also consider file size limits, content types, and user-provided media quality. Even when an endpoint accepts “video,” you’ll want to enforce sensible constraints in your UI: maximum duration, recommended resolution, audio sample rates, etc. If you don’t, you’ll spend most of your support time debugging why someone’s 4K, 3-hour file fails.

10) Inputs & outputs: designing stable features on top of changing models

I/O

Runway’s endpoints accept a combination of:

  • Media inputs (image, video, audio) — either via upload references or URLs (depending on endpoint).
  • Prompts — text descriptions, style directions, or transformation instructions.
  • Controls — parameters like transformation strength, structure preservation, output duration, or voice/language choices.
  • Model selectors — which internal model or variant to run, based on your account access.

Outputs are generally media artifacts: a video file, image(s), or audio file(s). Your product should decide:

  • Do we store outputs in our own storage or only link them temporarily?
  • Do we automatically transcode outputs for web playback?
  • Do we provide multiple formats (MP4/WebM, different resolutions, poster images)?
  • Do we generate thumbnails and metadata (duration, size, codecs) for a better library experience?
Pro tip: create an internal “GenerationSpec”

Don’t let your product depend directly on Runway’s raw request bodies everywhere. Create an internal spec object like: {type:"image_to_video", prompt, seed, strength, duration, inputAssetId, modelPreset}. Then write one adapter that converts the spec into the correct Runway endpoint body. If Runway changes parameter names or adds a new model, you update one adapter, not your whole app.

This is how big apps keep stable behavior while models evolve. You control your UX and business logic; Runway is a backend service that can change. You can adopt improvements when it benefits users, without breaking old projects.

11) Organization endpoints: credit balance, tier, and usage reporting

Org

Production integrations need guardrails. Runway’s API reference includes an organization endpoint GET /v1/organization which returns usage tier and credit balance for the organization tied to your API key. It also includes POST /v1/organization/usage to fetch credit usage broken down by model and day, with up to 90 days queryable at a time.

Why this matters

  • Billing safety: show “credits remaining” in your admin UI so you never get surprised by a large bill.
  • Cost attribution: if you run multiple products or environments, track spend by API key/org and by internal feature.
  • Usage analytics: learn which features users actually use, and optimize those pathways first.
Build a “circuit breaker”

If your credit balance drops below a threshold, pause generation requests automatically and warn admins. This prevents runaway spend if your product experiences abuse or a bug triggers endless generations.

A good admin dashboard for Runway integrations typically includes: daily credit usage graph, top models by spend, success rate vs failure rate, average generation time, and queue depth. Those metrics improve reliability and reduce support overhead dramatically.

12) Pricing & credits: how Runway API costs are calculated

Pricing

Runway’s official “API Pricing & Costs” guide states that each generation costs credits, and credits can be purchased for $0.01 per credit in the developer portal for an organization (sales tax may apply depending on location). The same guide includes model-specific pricing sections (video generation, image generation, audio generation) and a cost calculator.

What you should assume

Each endpoint/model has a credit cost that can change over time. Your app should treat costs as data you can update, not a constant baked into UI text.

What you can control

Duration, resolution, model choice, and number of variations are the biggest levers. Your product should make cost-visible decisions easy (e.g., “Fast preview” vs “Final render”).

A practical credit budget model

In many products, you’ll want three layers of cost control:

  • Per-user quota: each user gets X credits/day or X generations/day.
  • Per-workspace quota: teams get a shared pool of credits/month.
  • Admin-level cap: a hard maximum monthly spend or maximum daily generations (aligned with your Runway tier limits).
Best practice: store cost metadata per generation

Whenever you start a task, store: model name, endpoint, requested duration/resolution, estimated cost, and actual cost (when available). This lets you build accurate billing, refunds for failures, and cost optimization dashboards.

Example: “preview vs final” UX that saves money

Stage Goal Typical settings Why it helps
Preview Validate prompt & motion idea Short duration, lower resolution, faster model variant Users iterate cheaply and quickly
Final render High-quality deliverable Longer duration, higher quality, best model Spend credits only when the idea is approved

This approach is how professional tools keep costs predictable. If your product only offers “final render,” users will either burn through credits fast or become afraid to iterate (which kills engagement).

13) Usage tiers & limits: concurrency, daily generations, and monthly spend caps

Limits

Runway’s “API Usage Tiers & Limits” documentation explains that organizations are subject to limits that govern how many generations you can create. It describes tier-based limits as per model, per organization, and highlights concurrency limits (how many generations can run at the same time), plus guidance about maximum daily generations and maximum monthly spend.

The key insight is that Runway’s limiting system is not just “requests per minute.” It’s primarily about how many concurrent generations each model can run for your organization, plus volume/spend constraints. This is much closer to cloud rendering limits than to a simple text-generation rate limit.

Concurrency limit

How many tasks of a given model can be running simultaneously (per organization, per model). Higher tiers allow more parallel generations across supported models.

No max RPM (per docs)

The tiers doc explicitly mentions “No maximum requests-per-minute limit,” but you still must respect practical concurrency and task polling guidance.

What this means for your app

  • You need a queue. If your concurrency is 3 and 30 users submit jobs, 27 jobs will wait.
  • You need transparent statuses. Show queued position and estimated start time.
  • You need prioritization. Decide whether paid users jump ahead, whether admins can “boost,” or whether everything is FIFO.
  • You need backpressure. If your queue is too long, temporarily disable submissions or suggest lower-cost preview mode.
Avoid “thundering herd” submissions

If you trigger generations automatically (like “generate on every keystroke”), you will overload concurrency quickly. Add debouncing, explicit “Generate” actions, and caps on simultaneous user requests.

The tier system also suggests a smart scaling plan: start with a low tier while you validate product-market fit, then increase tier as demand grows. In parallel, optimize your UX to reduce unnecessary generations (preview mode, caching, deduplicated tasks, and reusing inputs).

14) SDKs: Node & Python clients (and why you should use them)

SDKs

Runway provides official SDKs that wrap the REST API for server-side applications. The docs include an SDK page that maps REST endpoints to SDK methods, and GitHub repositories exist for both the TypeScript/Node SDK and the Python SDK.

TypeScript / Node

Official repo: runwayml/sdk-node. Install via npm and call generation endpoints using typed methods. Good for Next.js/Node backends, serverless functions, and API gateways.

Python

Official repo: runwayml/sdk-python. Includes type definitions and supports sync/async patterns. Great for pipelines, batch processing, and ML-adjacent tooling.

Why SDKs help in production

  • Fewer payload mistakes: typed request/response models reduce “invalid field” errors.
  • Better uploads: docs recommend SDKs for simplified upload handling.
  • Faster upgrades: when the API version changes, SDKs often update quickly.
  • Consistency: you can share a single client wrapper across services.
Best practice: wrap the SDK anyway

Even when you use official SDKs, create your own small wrapper that enforces: required headers, version pinning, retries, logging, and rate limiting. This keeps your codebase consistent and makes it easy to swap SDK versions later.

15) Content moderation: building safe, compliant apps

Safety

The Runway developer docs include a “Content moderation” area in the guides. Even if you’re building a private tool, you should treat moderation as part of your product design. Modern creative AI apps are vulnerable to abuse: policy-violating prompts, harassment content, non-consensual use, and more.

A production moderation strategy usually has three layers:

Prompt moderation

Before sending prompts to Runway, run them through your own checks (keyword filters + ML moderation if needed), especially if you serve the public.

Input media checks

If users upload images/videos, use your own content scanning tools and enforce consent rules, especially for faces and sensitive contexts.

Output moderation

For public platforms, scan outputs and implement reporting + takedown flows. This is important for user trust and platform compliance.

Make moderation user-friendly

If you block content, explain the rule in plain language and allow users to revise prompts. Silent failures or cryptic errors lead to frustration and support tickets.

Your approach should match your product: an internal design team tool needs different controls than a public social app. But in every case, safety and policy compliance belong in your architecture from day one.

16) Security best practices: keys, tenancy, and data handling

Security

When you integrate Runway into a product, you’re effectively building a “generation service” that can create media on demand. That means security matters: API keys, user quotas, abuse prevention, and storage of sensitive user inputs.

Non-negotiable rules

  • Never expose API keys in the browser. Call Runway only from your backend.
  • Use least privilege by design. If you use multiple keys (dev/staging/prod), isolate them and restrict usage.
  • Encrypt secrets at rest. Store keys in a secret manager, not in environment variables on a shared machine.
  • Log carefully. Avoid logging raw prompts or user media URLs in plaintext if they contain private data.
  • Rate-limit users. Even if Runway doesn’t impose a “requests per minute” cap in tiers, your product should.
  • Protect uploads. Store originals in secure storage with expiring signed URLs and strict access control.
Abuse risk: public endpoints + expensive generations

If your app lets anonymous users trigger generations, attackers can burn your credits quickly. Require authentication, set strict quotas, and add safeguards like captcha or email verification for public apps.

17) Production architecture: how to ship a Runway API integration that scales

Production

Runway’s docs include a “Go-live checklist” for production readiness. In practice, the best production architecture treats Runway as a background rendering engine and uses your system to handle user experience, concurrency, storage, and billing.

Core components

1) API gateway / backend service (Runway client + version header)
2) Job queue (polling + retries + backoff)
3) Storage (original uploads + generated outputs + thumbnails)
4) Database (jobs, users, quotas, costs, status history)
5) Frontend (progress UI + library + export)

Recommended request flow

Client → your backend creates job → backend uploads assets → backend starts Runway task → queue polls status → outputs stored → client notified (push).

Performance and cost optimizations that matter

  • Deduplicate identical requests: if the same user submits the same spec repeatedly, reuse results or require a “variation” toggle.
  • Offer preview mode: shorter and cheaper generations for iteration.
  • Queue by priority: paid users can get better throughput without increasing total concurrency.
  • Store derived assets: thumbnails, low-res proxies, and captions improve UX without extra Runway calls.
  • Use organization usage endpoints: display credit balance and usage to prevent surprises.
Production UX checklist

✅ Clear progress states (queued/running/done) • ✅ Retry + “duplicate as new” buttons • ✅ Credit estimate before generating • ✅ Library of past outputs • ✅ Export formats • ✅ “Regenerate from original” flow (re-upload if needed).

If you do these basics well, your Runway integration feels like a real product feature rather than a fragile demo. And you’ll spend your time improving creativity and results instead of fighting outages and unexpected billing.

18) FAQs (Runway API)

FAQ
What is the Runway API hostname?

Runway’s API FAQs state the hostname is api.dev.runwayml.com, and API requests should be directed to that endpoint. Source: Runway Help Center “Runway API FAQs”.

Do I need to include a version header?

Yes. The Runway API reference shows a required header X-Runway-Version and indicates it must be set to the exact value 2024-11-06 for the documented version. Pin this header in your client and upgrade intentionally.

How is billing calculated?

The Pricing & Costs guide states each generation costs credits, and credits can be purchased for $0.01 per credit in the developer portal. Costs vary by model/task type, so read the pricing guide for the current credit costs.

Are generations synchronous?

Most generation endpoints start a task (asynchronous). You create a generation task, then call the task endpoint to check status and retrieve outputs.

How fast should I poll the task endpoint?

The API reference notes you should not expect updates more frequent than once every five seconds for a given task. Polling faster generally wastes resources and may contribute to throttling.

Do uploads last forever?

No. The Uploads reference states uploaded files are temporary and will be automatically expired and deleted after a period of time. If your product needs long-term storage, store originals in your own storage and re-upload when needed.

What SDKs are available?

Runway provides official SDKs for Node/TypeScript and Python. Repositories include runwayml/sdk-node and runwayml/sdk-python. The docs also include an SDK guide that maps endpoints to methods.

How do usage tiers affect my product?

The usage tiers documentation highlights concurrency limits per model and per organization, plus daily generation and monthly spend constraints. This means you should build a queue, show “queued” states, and manage concurrency in your backend.

19) Sources (official)

Sources
Note

Runway’s models and pricing can evolve. For any production build, confirm the latest endpoint parameters, version headers, pricing, and tier limits in official docs before launch.