前置条件
- 1已注册 Runway 账号(https://dev.runwayml.com)
- 2已获取 Runway API Key
- 3方式 A 需安装 Python 3.8+
- 4电脑能访问国际网络(Runway 需要梯子)
Runway API 视频生成接入完整指南
Runway 是全球领先的 AI 视频生成平台,凭借 Gen-4 Turbo、Gen-4.5 和 Seedance 2.5 等模型在画面质量与运动一致性上持续领跑。本教程将带你从零开始调用 Runway API,把一句文字或一张图片变成高质量视频。我们提供两种接入方式,任选其一即可。
两种方式对比
| 维度 | 方式 A:Python SDK | 方式 B:REST API + curl |
|---|---|---|
| 难度 | ⭐ 入门 | ⭐⭐⭐ 进阶 |
| 适用人群 | Python 开发者、AI 新手 | 任何技术栈开发者、运维 |
| 认证处理 | SDK 自动注入 Bearer Token | 手动构造 Authorization 头 |
| 轮询机制 | 可调用 SDK 内置方法 | 需自行写循环轮询 |
| 灵活性 | 中等(封装好的方法) | 最高(任意自定义请求) |
| 集成成本 | 低,3 行代码起步 | 中,需处理 HTTP 细节 |
提示
💡 小白提示:如果你是第一次接触视频生成 API,强烈建议从 方式 A(Python SDK) 开始。它把认证、请求构造、任务轮询这些繁琐细节都封装好了,你只需要关注提示词和参数。等熟悉整个流程后,再切到方式 B 做生产集成会更顺手。
为什么选择 Runway API
- 顶级画质:Gen-4.5 在细节、光影、人物一致性上属行业第一梯队,接近影视级表现
- 多模型可选:Gen-4 Turbo 速度更快、Seedance 2.5 支持 1080p,按需选择性价比最优
- 多种生成模式:文生视频、图生视频、视频扩展(Video Extension)全覆盖
- 灵活的参数控制:5/10 秒时长、6 种宽高比、720p/1080p 分辨率自由组合
- 异步任务模型:创建即返回 task_id,适合后台批量生成与长任务调度
- 官方双语言 SDK:Python 和 Node.js 都有官方维护,开箱即用
- 透明的 Credit 计费:$0.01/credit,按视频时长和模型计费,无隐藏费用
前置准备
开始前请确认以下条件已就绪:
- 已注册 Runway 账号(https://dev.runwayml.com)
- 电脑能访问国际网络(Runway API 服务器在海外,国内需使用代理)
- 方式 A:已安装 Python 3.8+ 或 Node.js 18+
- 方式 B:系统已安装 curl(macOS/Linux 自带,Windows 10+ 自带)
警告
⚠️ 重要提示:Runway 的 API 域名 api.dev.runwayml.com 部署在海外。国内用户调用前必须配置代理(HTTP_PROXY / HTTPS_PROXY 环境变量),否则请求会超时。
步骤一:注册并获取 Runway API Key
Runway 的视频生成 API 需要通过开发者门户单独申请 Key,和网页版账号是打通的,但 Key 要在开发者页面创建。
- 访问 Runway 开发者门户 https://dev.runwayml.com,使用你的 Runway 账号登录
- 进入左侧导航的 API Keys 页面
- 点击 Create API Key,给 Key 起个名字(如
my-video-bot) - 复制生成的 API Key(形如
sk-xxxxxxxxxxxx),关闭弹窗后无法再查看,请立即保存到安全位置 - 在 Billing 页面充值 Credits(最低充值 $10 起步,可生成约 100 个 Gen-4 5秒视频)
提示
💡 小白提示:API Key 等同于你的钱包钥匙,泄露后他人可消耗你的 Credits。建议存入环境变量 RUNWAYML_API_SECRET,切勿硬编码到代码或提交到 Git 仓库。
下面进入两种调用方式,你可以根据自身技术栈选择阅读。
方式 A:使用 Python SDK 生成视频
适合 Python 开发者和第一次接触视频 API 的新手。SDK 已封装好认证、请求、轮询全流程。
步骤二:安装 Python SDK
Runway 官方提供 runwayml 包,纯 Python 实现,无额外编译依赖。
1# 安装官方 SDK
2pip install runwayml
3
4# 验证安装
5python -c "import runwayml; print(runwayml.__version__)"安装完成后,把 API Key 写入环境变量(推荐):
1# macOS / Linux
2export RUNWAYML_API_SECRET="你的-api-key"
3
4# Windows PowerShell
5$env:RUNWAYML_API_SECRET="你的-api-key"SDK 默认读取 RUNWAYML_API_SECRET 环境变量,无需在代码里显式传参。
步骤三:文生视频(Text-to-Video)
下面用 Gen-4 Turbo 生成一段 5 秒的 16:9 视频。新建 text_to_video.py:
1import time
2from runwayml import RunwayML
3
4# 初始化客户端(自动读取 RUNWAYML_API_SECRET)
5client = RunwayML()
6
7# 创建文生视频任务
8response = client.image_to_video.create(
9 model="gen4_turbo", # 模型:gen4_turbo / gen45 / seedance_2.5
10 prompt_text="一只金毛犬在金色夕阳下的沙滩上奔跑,海浪轻拍海岸,毛发随风飘动,电影级运镜", # 文字描述
11 duration=5, # 时长:5 或 10 秒
12 ratio="16:9", # 宽高比:16:9 / 9:16 / 1:1 / 4:3 / 3:4 / 21:9
13)
14
15task_id = response.id
16print(f"任务已创建,ID: {task_id}")
17
18# 轮询任务状态(建议间隔 ≥ 5 秒)
19while True:
20 task = client.tasks.retrieve(task_id)
21 print(f"当前状态: {task.status}")
22
23 if task.status == "SUCCEEDED":
24 # 成功,输出视频地址
25 video_url = task.output[0]
26 print(f"✅ 视频生成成功: {video_url}")
27 break
28 elif task.status == "FAILED":
29 raise Exception(f"任务失败: {task.failure_code} - {task.failure}")
30
31 time.sleep(5) # 避免 429 限流运行:
1python text_to_video.py成功后会在控制台打印一个视频 URL,浏览器打开即可预览。
步骤四:图生视频(Image-to-Video)
图生视频需要一张输入图片,SDK 支持传入图片 URL。新建 image_to_video.py:
1import time
2from runwayml import RunwayML
3
4client = RunwayML()
5
6# 图生视频:传入图片 URL + 运动提示
7response = client.image_to_video.create(
8 model="gen4_turbo",
9 prompt_image="https://example.com/your-photo.jpg", # 输入图片的公网 URL
10 prompt_text="镜头缓缓推进,人物微微转头微笑,背景树叶随风摇曳", # 可选:运动描述
11 duration=5,
12 ratio="16:9",
13)
14
15task_id = response.id
16print(f"图生视频任务已创建,ID: {task_id}")
17
18while True:
19 task = client.tasks.retrieve(task_id)
20 if task.status == "SUCCEEDED":
21 print(f"✅ 视频地址: {task.output[0]}")
22 break
23 elif task.status == "FAILED":
24 print(f"❌ 失败原因: {task.failure}")
25 break
26 time.sleep(5)警告
⚠️ 重要提示:prompt_image 必须是可公网访问的 URL,不能是本地文件路径。如果图片在本地,需先上传到图床或对象存储(如阿里 OSS、AWS S3),再把 URL 传给 API。
步骤五:下载并保存视频
API 返回的视频 URL 有效期仅 24 小时,过期后无法访问,必须及时下载到本地。下面用 requests 下载:
1import os
2import requests
3from urllib.parse import urlparse
4
5def download_video(video_url, save_dir="videos"):
6 """下载 Runway 生成的视频到本地"""
7 os.makedirs(save_dir, exist_ok=True)
8
9 # 用 URL 末尾的文件名作为保存名
10 file_name = os.path.basename(urlparse(video_url).path) or "runway_video.mp4"
11 save_path = os.path.join(save_dir, file_name)
12
13 response = requests.get(video_url, stream=True)
14 response.raise_for_status()
15
16 with open(save_path, "wb") as f:
17 for chunk in response.iter_content(chunk_size=8192):
18 f.write(chunk)
19
20 print(f"✅ 视频已保存: {save_path}")
21 return save_path
22
23# 配合上面的文生视频代码使用
24# download_video(video_url)把 download_video(video_url) 加到任务成功的分支里,就能自动把视频存到本地 videos/ 目录。
方式 B:使用 REST API 调用
适合想把 Runway 集成到非 Python 技术栈(Go、Java、PHP、Shell 脚本等)的开发者。下面用 curl 演示全流程,其他语言的 HTTP 客户端照搬即可。
步骤二:用 curl 创建生成任务
Runway API 的认证方式是 Bearer Token,所有请求都要带两个头:
Authorization: Bearer $RUNWAYML_API_SECRET:API KeyX-Runway-Version: 2024-11-06:API 版本号(必填,否则报错)
先设置环境变量:
1export RUNWAYML_API_SECRET="你的-api-key"创建文生视频任务:
1curl -X POST https://api.dev.runwayml.com/v1/image_to_video \
2 -H "Authorization: Bearer $RUNWAYML_API_SECRET" \
3 -H "X-Runway-Version: 2024-11-06" \
4 -H "Content-Type: application/json" \
5 -d '{
6 "model": "gen4_turbo",
7 "promptText": "一只金毛犬在金色夕阳下的沙滩上奔跑,海浪轻拍海岸,电影级运镜",
8 "duration": 5,
9 "ratio": "16:9"
10 }'返回示例:
1{
2 "id": "2e5e2e23-7f7a-4e8d-b6c5-3e9c0e0e3e3e",
3 "createdAt": "2026-08-21T10:00:00.000Z",
4 "status": "THROTTLED",
5 "model": "gen4_turbo"
6}记下返回的 id 字段,下一步要用它查状态。THROTTLED 表示任务已入队,等待执行。
步骤三:轮询任务状态
用上一步拿到的 task_id 轮询:
1TASK_ID="2e5e2e23-7f7a-4e8d-b6c5-3e9c0e0e3e3e"
2
3curl https://api.dev.runwayml.com/v1/tasks/$TASK_ID \
4 -H "Authorization: Bearer $RUNWAYML_API_SECRET" \
5 -H "X-Runway-Version: 2024-11-06"任务状态流转:
| status | 含义 | 下一步动作 |
|---|---|---|
THROTTLED | 已入队,等待执行 | 继续轮询 |
RUNNING | 正在生成 | 继续轮询 |
SUCCEEDED | 生成成功 | 取 output[0] 下载视频 |
FAILED | 生成失败 | 查看 failure 字段排错 |
建议每 5-10 秒轮询一次,下面是完整的 Shell 轮询脚本:
1#!/bin/bash
2# poll_task.sh:轮询 Runway 任务直到完成
3TASK_ID=$1
4API_KEY=$RUNWAYML_API_SECRET
5
6while true; do
7 RESULT=$(curl -s https://api.dev.runwayml.com/v1/tasks/$TASK_ID \
8 -H "Authorization: Bearer $API_KEY" \
9 -H "X-Runway-Version: 2024-11-06")
10
11 STATUS=$(echo $RESULT | python -c "import sys,json; print(json.load(sys.stdin)['status'])")
12
13 echo "当前状态: $STATUS"
14
15 if [ "$STATUS" = "SUCCEEDED" ]; then
16 echo "✅ 任务成功"
17 echo $RESULT
18 break
19 elif [ "$STATUS" = "FAILED" ]; then
20 echo "❌ 任务失败"
21 echo $RESULT
22 break
23 fi
24
25 sleep 5
26done使用方式:
1chmod +x poll_task.sh
2./poll_task.sh 2e5e2e23-7f7a-4e8d-b6c5-3e9c0e0e3e3e步骤四:下载生成结果
任务成功后,响应的 output 数组里是视频 URL:
1{
2 "id": "2e5e2e23-...",
3 "status": "SUCCEEDED",
4 "output": ["https://runwayml-prod-videos.s3.amazonaws.com/xxx.mp4"]
5}直接用 curl 下载:
1VIDEO_URL="https://runwayml-prod-videos.s3.amazonaws.com/xxx.mp4"
2curl -o my_video.mp4 "$VIDEO_URL"警告
⚠️ 重要提示:视频 URL 有效期只有 24 小时,过期返回 403。生产环境务必在拿到 URL 后立即异步下载,别存数据库就不管了。
步骤五:错误处理
Runway API 常见错误码与处理建议:
| HTTP 状态码 | 含义 | 排查方向 |
|---|---|---|
| 400 Bad Request | 请求参数错误 | 检查 model、duration、ratio 是否合法 |
| 401 Unauthorized | API Key 无效或过期 | 确认 Key 无多余空格,环境变量已正确设置 |
| 403 Forbidden | 账户 Credits 不足或权限不够 | 到 dev.runwayml.com 充值 Credits |
| 404 Not Found | task_id 错误 | 复制完整的任务 ID,注意大小写 |
| 429 Too Many Requests | 触发频率限制 | 降低轮询频率,建议间隔 ≥ 5 秒 |
| 500/502/503 | 服务器内部错误 | 等待 30 秒后重试,持续失败联系官方 |
建议在代码中加入指数退避重试:
1import time
2import requests
3
4def poll_with_retry(task_id, api_key, max_retries=20):
5 """带指数退避的任务轮询"""
6 for i in range(max_retries):
7 resp = requests.get(
8 f"https://api.dev.runwayml.com/v1/tasks/{task_id}",
9 headers={
10 "Authorization": f"Bearer {api_key}",
11 "X-Runway-Version": "2024-11-06",
12 },
13 )
14
15 if resp.status_code == 429:
16 wait = min(2 ** i, 60) # 指数退避,最长 60 秒
17 print(f"触发限流,{wait} 秒后重试")
18 time.sleep(wait)
19 continue
20
21 resp.raise_for_status()
22 data = resp.json()
23
24 if data["status"] == "SUCCEEDED":
25 return data["output"][0]
26 elif data["status"] == "FAILED":
27 raise Exception(f"任务失败: {data.get('failure')}")
28
29 time.sleep(5)
30
31 raise TimeoutError("任务超时未完成")场景应用示例
Runway API 的视频生成能力可以应用在多种实际业务场景,下面是三个典型例子。
场景一:产品宣传视频生成
电商团队需要为新品快速产出宣传短视频,传统拍摄成本高、周期长。用 Runway 图生视频,一张产品图 + 一句运镜描述就能出片。
输入准备:一张产品主图 + 一句运镜描述
1response = client.image_to_video.create(
2 model="gen4_turbo",
3 prompt_image="https://cdn.shop.com/products/sneaker-001.jpg",
4 prompt_text="运动鞋特写,镜头绕鞋身 360 度缓慢旋转,背景纯白,柔和影棚光,高端商品广告质感",
5 duration=5,
6 ratio="16:9",
7)业务效果:
- 单条视频成本从外包拍摄的 ¥3000+ 降到约 ¥0.35(5 credits)
- 上新当天即可产出视频,投放到详情页和短视频平台
- 配合批量脚本,一次可为 50 个 SKU 生成视频
场景二:社交媒体短视频制作
自媒体创作者需要高频产出竖屏短视频。用 Runway 文生视频 + 9:16 比例,批量生成素材后拼接剪辑。
输入准备:文案脚本分镜 + 每个镜头的文字描述
1# 批量生成 9:16 竖屏视频的分镜镜头
2shots = [
3 "城市夜景航拍,霓虹灯闪烁,车流如银河",
4 "咖啡杯特写,热气升腾,背景虚化",
5 "书页翻动特写,光影流转,复古质感",
6]
7
8for i, prompt in enumerate(shots):
9 response = client.image_to_video.create(
10 model="gen4_turbo",
11 prompt_text=prompt,
12 duration=5,
13 ratio="9:16", # 竖屏适配抖音/小红书
14 )
15 # 后续下载后用剪映/PR拼接业务效果:
- 3 个镜头 15 秒素材,成本约 ¥1,传统拍摄至少 ¥500
- 日更创作者可把素材准备时间从 2 小时压到 10 分钟
- 画面一致性高,适合做系列账号
场景三:教育演示视频生成
在线教育平台需要为知识点生成动画演示,传统动画制作门槛高。用 Runway 文生视频直接产出教学片段。
输入准备:知识点描述 + 教学场景设定
1response = client.image_to_video.create(
2 model="gen45",
3 prompt_text="地球绕太阳公转的 3D 动画演示,太阳在中心发光,地球沿椭圆轨道缓慢移动,背景为深空星云,教学示意图风格",
4 duration=10,
5 ratio="16:9",
6)业务效果:
- 把抽象的天体运动、化学反应、生物过程可视化,提升课堂理解率
- 教研团队无需动画技能,写清描述即可出片
- Gen-4.5 画质更适合教育场景对准确性的要求
最佳实践
提示词技巧
- 描述画面而非描述任务:写"一只金毛在沙滩奔跑",不要写"生成一个狗跑步的视频"
- 加入运镜与光影:补充"电影级运镜""柔和侧光""金色夕阳"等词,画质明显提升
- 指定风格与质感:如"胶片质感""影棚广告光""3D 渲染风格",让结果更可控
- 控制复杂度:单镜头聚焦一个主体,多主体容易出现画面混乱
成本控制
- 按需选模型:日常素材用 Gen-4 Turbo(便宜快),最终成片用 Gen-4.5(画质高)
- 先用 5 秒试片:确认效果满意后再生成 10 秒版本,避免浪费 Credits
- 图生视频优于文生:有参考图时优先用图生视频,可控性更高、返工率更低
- 设置用量告警:在 dev.runwayml.com 的 Billing 页面开启余额提醒,防止超支
安全建议
- API Key 存环境变量:用
RUNWAYML_API_SECRET,切勿硬编码到代码或提交到 Git - 后端代理调用:前端不要直接调 API,应通过自己的后端转发,避免 Key 泄露
- 及时下载视频:生成结果 URL 24 小时过期,务必在成功后立即异步下载
故障排查
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 401 Unauthorized | API Key 错误或带空格 | 重新复制 Key,确认环境变量无多余字符 |
| 403 Forbidden | Credits 余额不足 | 到 dev.runwayml.com 充值 Credits |
| 429 Too Many Requests | 轮询频率过高 | 轮询间隔调到 5 秒以上,加入指数退避 |
| 任务一直 THROTTLED | 高峰期排队 | 等待 1-2 分钟,错峰调用(北美夜间) |
| 视频 URL 返回 403 | URL 已过期(超 24h) | 重新发起任务生成,或提前做好下载 |
| 画面出现多余肢体 | 提示词复杂度过高 | 简化描述,聚焦单一主体,改用图生视频 |
扩展与进阶
高级功能探索
- 视频扩展(Video Extension):传入已有视频的最后一帧,让 Runway 续写后续 5/10 秒,适合做长视频
- Seedance 2.5 1080p:对画质要求高的成片场景,用 Seedance 2.5 生成 1080p 视频
- Node.js SDK:前端/全栈开发者可用
npm install @runwayml/sdk,API 与 Python 版一致 - Webhook 回调:生产环境可配置任务完成回调,免去轮询开销(需公网可达的回调地址)
- 批量任务调度:结合队列系统(如 Celery、Bull)做批量生成,配合并发数控制避免 429
团队协作建议
- 统一用密钥管理工具(如 Vault、AWS Secrets Manager)管理 API Key,按环境隔离
- 把提示词沉淀成团队模板库,标注适用场景和模型,提升复用率
- 监控 Credit 消耗,按项目/部门分账,设置月度预算告警
- 建立素材审核流程,AI 生成视频上线前需人工审核画面合规性
常见问题
QRunway API 需要梯子吗?
需要。Runway 的 API 服务在海外,国内用户需要使用代理/梯子才能访问 api.dev.runwayml.com。
QAPI 调用一次大概多少钱?
Runway 采用 Credit 计费,$0.01/credit。Gen-4 Turbo 5秒视频约 5 credits($0.05),Gen-4.5 5秒视频约 10 credits($0.10),10秒视频翻倍。
Q视频生成要等多久?
通常 30-90 秒,具体取决于模型、时长和当前排队情况。建议轮询间隔不少于 5 秒,避免触发频率限制。
Q生成的视频有水印吗?
通过 API 生成的视频不含水印。注意:API 生成的视频 URL 有效期为 24 小时,需及时下载保存。