Appearance
video.opencodex.uk 视频与图片模型接口调用文档
本文档说明如何调用 https://video.opencodex.uk 上的 NewAPI 实例生成视频和图片。
video.opencodex.uk是视频与图片 API 站点,不提供通用 Codex/install/入口。Codex 用户请从 安装入口总览 选择自己使用的 API 站点。
入口选择
| 场景 | Base URL | 路由 |
|---|---|---|
| 普通调用 | https://video.opencodex.uk | 共享负载均衡入口 |
| 高并发或希望直连新加坡源站 | https://videosgp.opencodex.uk | Cloudflare 橙云直接指向 sgp001,不经过共享 LB 的另外两台边缘 VPS |
两个入口连接同一个 NewAPI 3006 实例,API key、模型、任务、额度和请求路径完全一致。高并发业务可直接把 Base URL 改为 https://videosgp.opencodex.uk;供应商并发限制和 3006 自身容量不会因为切换域名而增加,遇到 429 或临时 5xx 仍需退避重试。完整直连示例见 videosgp.opencodex.uk 专用文档。
视频生成必须使用异步任务接口。当前兼容三个提交入口:
text
POST https://video.opencodex.uk/v1/video/generations
GET https://video.opencodex.uk/v1/video/generations/{task_id}
POST https://video.opencodex.uk/v1/videos
GET https://video.opencodex.uk/v1/videos/{task_id}
POST https://video.opencodex.uk/v1/videos/generations
GET https://video.opencodex.uk/v1/videos/{task_id}/v1/video/generations 是历史 JSON 任务接口;/v1/videos 是 NewAPI/Sora 兼容接口;/v1/videos/generations 是 Grok JSON 兼容提交入口。三者创建的任务都使用 GET /v1/videos/{task_id} 或对应历史查询入口轮询。视频生成通常需要几分钟。同步 chat/completions 长连接可能被 Cloudflare 或 Nginx 在约 120 秒左右切断,工具站不要用同步接口等待视频完成。图片模型同时支持 Chat Completions、Images Generations 和 Images Edits 形式。
基础信息
| 项目 | 值 |
|---|---|
| Base URL | https://video.opencodex.uk |
| 视频提交 | /v1/video/generations |
| 视频查询 | /v1/video/generations/{task_id} |
| OpenAI/Sora 兼容视频提交 | /v1/videos |
| OpenAI/Sora 兼容视频查询 | /v1/videos/{task_id} |
| Grok JSON 兼容视频提交 | /v1/videos/generations |
| Chat Completions | /v1/chat/completions |
| Images Generations | /v1/images/generations |
| Images Edits | /v1/images/edits |
| 模型列表 | /v1/models |
| 鉴权方式 | Authorization: Bearer sk-你的API_KEY |
| 内容类型 | 文生视频 application/json;图生视频推荐 multipart/form-data |
| 视频提交超时 | 30 到 90 秒 |
| 视频轮询间隔 | 10 到 20 秒 |
| 图片推荐超时 | 60 到 180 秒 |
请使用已开通视频和图片模型权限的 API key。部分 key 可能能通过鉴权,但调用模型时返回 model_not_found。不要把 API key 写进前端代码、公开仓库、日志或报错截图。
视频模型支持文生视频、图生视频、Chat 接口和 /v1/videos 异步任务接口。固定时长模型直接按模型名展示,例如 sora-2-4s 为 4 秒视频模型,seedance-1.5-pro-5s 和 seedance-1.0-fast-5s 为 5 秒视频模型。
Seedance 2.0 标准版 seedance-2.0 和轻量版 seedance-2.0-mini 仍是 4–15 秒可变时长模型。原无后缀 Fast 名称 seedance-2.0-fast 已下线,Fast 改为三个固定时长名称:seedance-2.0-fast-5s、seedance-2.0-fast-10s、seedance-2.0-fast-15s。三款 Fast 均为 Seedance 2.0 Fast、HD 720p,支持 16:9、9:16、1:1,以及文生视频、单图和多图参考。
图片和对话模型按本站当前可用模型展示。部分模型提供兼容名称,例如 image-2 可按 gpt-image-2 能力调用,gemini-3.1-flash-image-preview 可按 nano-banana-2 能力调用,gemini-3-pro-image-preview 可按 nano-banana-pro-vt 能力调用。
快速测试
先确认 key 能看到模型:
bash
curl -sS https://video.opencodex.uk/v1/models \
-H "Authorization: Bearer sk-你的API_KEY"最小视频生成请求分两步。第一步提交任务,接口会秒级返回 task_id:
bash
curl -sS --max-time 90 https://video.opencodex.uk/v1/video/generations \
-H "Authorization: Bearer sk-你的API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "sora-2-4s",
"prompt": "生成一个4秒视频:海边日落,镜头缓慢推进,真实摄影风格,16:9",
"duration": 4
}'典型提交返回:
json
{
"task_id": "task_xxx",
"status": "processing"
}第二步轮询任务状态,完成后读取返回中的 url:
bash
curl -sS https://video.opencodex.uk/v1/video/generations/task_xxx \
-H "Authorization: Bearer sk-你的API_KEY"Seedance 2.0 Mini 的 15 秒 720p 文生视频示例:
bash
curl -sS --max-time 120 https://video.opencodex.uk/v1/videos \
-H "Authorization: Bearer sk-你的API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.0-mini",
"prompt": "一只穿黄色雨衣的柯基在屋顶迷你厨房主持料理秀,把巨型荷包蛋抛向空中,电影感运镜,无字幕",
"duration": 15,
"resolution": "720p",
"aspect_ratio": "16:9",
"audio": true
}'创建成功后读取响应中的 id 或 task_id,轮询 GET /v1/videos/{task_id};完成后可使用 GET /v1/videos/{task_id}/content 下载成片。
最便宜的 Seedance 2.0 Fast 5 秒 720p 示例:
bash
curl -sS --max-time 120 https://video.opencodex.uk/v1/videos/generations \
-H "Authorization: Bearer sk-你的API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.0-fast-5s",
"prompt": "一只戴厨师帽的迷你机器人在月球路边摊翻炒会发光的星星面条,突然有一颗面条星球从锅里升起,电影感运镜,无字幕",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "16:9"
}'该模型固定 5 秒,默认组价格为 2/条。也可把提交路径改为 /v1/videos,请求 JSON 保持不变。
最小图片生成请求:
bash
curl -sS --max-time 180 https://video.opencodex.uk/v1/images/generations \
-H "Authorization: Bearer sk-你的API_KEY" \
-H "Idempotency-Key: image-order-20260724-0001" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "海报级商业产品图,一瓶香水放在黑色镜面台面上,柔和高光,16:9",
"n": 1,
"size": "1024x1024"
}'图片结果持久化、历史与下载
Images Generations 和 Images Edits 成功后,本站会把供应商临时 URL 下载到专用私有对象存储,或把 b64_json 解码后保存同一份图片。当前使用私有 Cloudflare R2 Bucket opencodex-video-generated-assets,r2.dev 和公开自定义域名均未开放,默认保留 30 天。
成功响应包含稳定的 img_... 任务 ID:
json
{
"created": 1784894400,
"task_id": "img_xxx",
"data": [
{
"task_id": "img_xxx",
"url": "https://video.opencodex.uk/v1/images/tasks/img_xxx/content"
}
]
}多图请求中,每个 data[] 项都有自己的任务 ID,顶层 task_id 指向第一张图。用户可以使用自己的 API Key 查询图片历史、任务信息和内容:
bash
curl -sS 'https://video.opencodex.uk/v1/images/tasks?page=1&page_size=20' \
-H "Authorization: Bearer sk-你的API_KEY"
curl -sS https://video.opencodex.uk/v1/images/tasks/img_xxx \
-H "Authorization: Bearer sk-你的API_KEY"
curl -L https://video.opencodex.uk/v1/images/tasks/img_xxx/content \
-H "Authorization: Bearer sk-你的API_KEY" \
-o result.pngGET /v1/images/tasks/{task_id}/content 会先校验任务属于当前用户,再跳转到约 5 分钟有效的签名 URL。R2 始终保持私有;其他用户访问同一任务 ID 返回 404,已过期内容返回 410。
当前内容响应使用 Content-Disposition: inline,浏览器会直接预览,用户仍可保存图片;目前不是强制下载的 attachment 响应。浏览器、curl、Go 和 Python requests 已验证可用;Python 裸 urllib 的默认 User-Agent 可能触发 Cloudflare 1010,遇到此问题请改用 requests 或设置正常的 User-Agent。
图片请求幂等与重试
正式业务调用必须为每个逻辑图片请求生成一个稳定的 Idempotency-Key,重试时复用同一个 key 和完全相同的请求体。也可使用 X-Request-Id 或 X-Oneapi-Request-Id。
- 同 key、同请求:返回已保存结果,响应头包含
X-Idempotent-Replay: true,不会再次生成或扣费。 - 同 key、不同请求体:返回
409 idempotency_key_conflict。 - 原请求仍处理中或结果未知:返回
409,不会换渠道重复生成。 - 原请求失败:返回原失败状态,不会自动再次生成。
- 已保存结果过期:返回
410,不会自动再次生成。
需要重新生成时,应在确认业务意图后使用新的幂等 key。不要在超时或未知结果后立即换 key 重试,否则无法阻止供应商侧重复生成。
已接入模型
截至 2026-07-20,认证 /v1/models 返回 43 个模型。公开模型广场展示模型名、价格和能力描述。
视频模型
| 模型 | 接口 | 模型说明 |
|---|---|---|
seedance-2.0 | /v1/videos | Seedance 2.0 标准版,4.8/条。文生/图生/多模态/首尾帧,480p / HD 720p,4–15 秒。 |
seedance-2.0-fast-5s | /v1/videos 或 /v1/videos/generations | 实际模型为 Seedance 2.0 Fast,2/条。固定 5 秒,HD 720p;支持 16:9 / 9:16 / 1:1,支持文生视频及单图/多图参考,更快出片。 |
seedance-2.0-fast-10s | /v1/videos 或 /v1/videos/generations | 实际模型为 Seedance 2.0 Fast,4/条。固定 10 秒,HD 720p;支持 16:9 / 9:16 / 1:1,支持文生视频及单图/多图参考,更快出片。 |
seedance-2.0-fast-15s | /v1/videos 或 /v1/videos/generations | 实际模型为 Seedance 2.0 Fast,6/条。固定 15 秒,HD 720p;支持 16:9 / 9:16 / 1:1,支持文生视频及单图/多图参考,更快出片。 |
seedance-2.0-mini | /v1/videos | Seedance 2.0 Mini,2.3/条。轻量版,文生/图生/多模态/首尾帧,480p / HD 720p,4–15 秒。 |
sora-2 | /v1/video/generations | Sora 2 4 秒视频模型,支持文生视频、图生视频、Chat 接口和 /v1/videos 异步任务接口。 |
sora-2-4s | /v1/video/generations | Sora 2 4 秒视频模型,支持文生视频、图生视频、Chat 接口和 /v1/videos 异步任务接口。 |
sora-2-8s | /v1/video/generations | Sora 2 8 秒视频模型,支持文生视频、图生视频、Chat 接口和 Sora 异步接口。 |
sora-2-12s | /v1/video/generations | Sora 2 12 秒视频模型,支持文生视频、图生视频、Chat 接口和 Sora 异步接口。 |
seedance-1.5-pro | /v1/video/generations | Seedance 1.5 Pro 5 秒视频模型,支持文生视频、图生视频和 /v1/videos 异步任务接口。 |
seedance-1.5-pro-5s | /v1/video/generations | Seedance 1.5 Pro 5 秒视频模型,支持文生视频、图生视频和 /v1/videos 异步任务接口。 |
seedance-1.5-pro-10s | /v1/video/generations | Seedance 1.5 Pro 10 秒视频模型,适合更完整的镜头变化和分段运镜。 |
seedance-1.5-pro-12s | /v1/video/generations | Seedance 1.5 Pro 12 秒视频模型,适合长一点的运镜和复杂场景表达。 |
seedance-1.0-fast | /v1/video/generations | Seedance 1.0 Fast 5 秒视频模型,支持文生视频、图生视频和 /v1/videos 异步任务接口。 |
seedance-1.0-fast-5s | /v1/video/generations | Seedance 1.0 Fast 5 秒视频模型,支持文生视频、图生视频和 /v1/videos 异步任务接口。 |
seedance-1.0-fast-10s | /v1/video/generations | Seedance 1.0 Fast 10 秒视频模型,支持 Chat 接口和 v1/videos 异步接口。 |
seedance-1.0-mini | /v1/video/generations | Seedance 1.0 Mini 公开模型名,支持 Chat 接口和 v1/videos 异步接口。 |
seedance-1.0-mini-10s | /v1/video/generations | Seedance 1.0 Mini 10 秒视频模型,支持 Chat 接口和 v1/videos 异步接口。 |
seedance-1.0-pro | /v1/video/generations | Seedance 1.0 Pro 公开模型名,支持 Chat 接口和 v1/videos 异步接口。 |
seedance-1.0-pro-10s | /v1/video/generations | Seedance 1.0 Pro 10 秒视频模型,支持 Chat 接口和 v1/videos 异步接口。 |
jimeng-agent | /v1/chat/completions | 即梦 agent 模型,支持图文任务、图片生成和上下文创意任务。 |
2026-07-20 Seedance 2.0 Fast 固定时长验证
- 原无后缀模型
seedance-2.0-fast已下线,固定时长模型为seedance-2.0-fast-5s、seedance-2.0-fast-10s、seedance-2.0-fast-15s,默认组价格分别为2/条、4/条、6/条。 - 三款模型均为 Seedance 2.0 Fast,固定 HD 720p,支持
16:9、9:16、1:1,支持文生视频及公网 HTTPS 单图/多图参考。 - 真实付费验证通过公网
POST /v1/videos/generations仅调用一次 5 秒型号;任务创建、GET /v1/videos/{task_id}轮询和/content下载均成功。 - 实际媒体为
5.085s、1280×720、24fps、HEVC,并包含 44.1kHz AAC 双声道非静音音轨。 - 5 秒任务按固定价
2/条计费,没有再按时长二次乘价。固定时长与模型后缀不一致时会在提交阶段返回400。 .20.1发布后的 30 分钟观察通过26/26,随后停止旧.19.1回滚容器;新后端继续通过直接、普通公网及sgp003/jp002强制边缘的200/401健康门禁。
2026-07-13 Seedance 2.0 上线验证
- 三款模型已出现在认证
/v1/models和公开模型广场;2026-07-15 起固定价格分别为4.8、3.2、2.3每条。 - 真实付费验证仅调用
seedance-2.0-mini,请求为 15 秒、720p、16:9、原生音频。 - 任务通过公网
/v1/videos完成,实际媒体为15.104s、1280×720、H.264、24fps,并包含 AAC 双声道音轨。 - Mini 当前固定计费为
2.3/条,15 秒任务不会再按时长二次乘价。 - 本轮只验证了文生视频。图生、多模态和首尾帧字段已按接口透传,正式业务使用前建议先做小样。
2026-06-10 同步验证
以下结果使用同一个已授权测试 key 通过公网 https://video.opencodex.uk 验证,输出已脱敏:
| 项目 | 结果 | 说明 |
|---|---|---|
认证 /v1/models | 返回 28 个模型 | 已包含 seedance-1.0-fast、seedance-1.0-mini、seedance-1.0-pro、sora-2、gpt-image-2、image-2。 |
/api/pricing 模型广场 | 已同步 | 不可用的 dance2-fast-*、seedance-1.0-5s、seedance-1.0-10s、veo-3.1-8s 已移除。 |
TASK_PRICE_PATCH | 已更新 | 固定价视频模型列表已去掉下线模型,并加入新增 Seedance/Sora 模型,避免异步视频按秒二次乘价。 |
同日历史实测中,seedance-1.5-pro-5s 与 sora-2-4s 文生视频任务可完成并返回视频 URL;POST /v1/videos 使用 multipart/form-data 字段 image=@input.png、模型 sora-2-4s 可成功创建图生视频任务并完成。
2026-06-12 模型合并与描述更新
2026-06-12 将高规格图片模型统一为 gpt-image-2-pro。公开 /api/pricing 展示模型名、价格和能力描述。
| 项目 | 结果 | 说明 |
|---|---|---|
认证 /v1/models | 返回 44 个模型 | 已包含 gpt-image-2-pro、nano-banana-fast、gemini-3.1-pro、sora-2-4s。 |
/api/pricing 模型广场 | 已同步 | 展示模型名、价格和能力描述。 |
| 视频与图片模型 | 已同步 | 保留视频、Seedream、即梦和当前图片模型。 |
计费按美元口径设置到默认组。NewAPI 3006 当前 GroupRatio 为 {"default":1,"0.8":0.8};内部 ModelPrice/ModelRatio 同按美元口径存储。已下线模型不再展示。
当前固定价图片模型中,gpt-image-2 和兼容名称 image-2 为 $0.06/次;gpt-image-2-pro 为 $0.1/次。
2026-06-10 兼容模型复测
以下 3 个模型使用公网 POST /v1/videos、multipart/form-data、字段 image=@start.png 进行图生视频复测,3 条任务均完成并返回视频 URL。
| 模型 | 此前是否测过 | 本轮图生视频结果 | 图片/首尾帧能力记录 |
|---|---|---|---|
sora-2-4s | 已测过文生视频成功;已测过 image=@input.png 图生视频成功。 | completed,有视频 URL。 | 单张图片首帧/参考图可用,字段使用 image。 |
seedance-1.5-pro-5s | 已测过文生视频成功。 | completed,有视频 URL。 | 单张图片首帧/参考图可用,字段使用 image。 |
seedance-1.0-fast-5s | 已通过 OpenNana smoke 生成成功。 | completed,有视频 URL。 | 单张图片首帧/参考图可用,字段使用 image。 |
结论:这 3 个模型都支持 image 单图输入,可作为首帧/参考图使用。不要把尾帧或首尾双图能力标成稳定支持;当前未验证 last_image、end_frame 或双图字段的稳定效果。
图片模型
| 模型 | 接口 | 模型说明 |
|---|---|---|
gpt-image-2-pro | Chat / Generations / Edits | 当前渠道 GPT Image 2 高规格绘图模型,支持文生图、图生图、1K、2K、4K。 |
gpt-image-2 | Chat / Generations / Edits | 当前渠道 GPT Image 2 绘画模型,支持文生图、图生图、1K。 |
image-2 | Chat / Generations / Edits | 兼容 gpt-image-2 能力。 |
nano-banana-fast | Chat / Generations / Edits | 当前渠道特价版 nano-banana,基于 gemini-2.5-flash-image,支持文生图、图生图。 |
nano-banana | Chat / Generations / Edits | 当前渠道官方直连 nano-banana,基于 gemini-2.5-flash-image,支持文生图、图生图和 OpenAI 兼容接口。 |
nano-banana-2 | Chat / Generations / Edits | 当前渠道 gemini-3.1-flash-image-preview 图像模型,支持 1K、2K、4K。 |
nano-banana-2-cl | Chat / Generations / Edits | 当前渠道 nano-banana 2 稳定渠道,支持 1K、2K。 |
nano-banana-2-4k-cl | Chat / Generations / Edits | 当前渠道 nano-banana 2 4K 渠道,支持 4K。 |
nano-banana-pro | Chat / Generations / Edits | 当前渠道高质量图像模型,支持 1K、2K、4K。 |
nano-banana-pro-vt | Chat / Generations / Edits | 当前渠道gemini-3-pro-image-preview VT 渠道,支持 1K、2K、4K。 |
nano-banana-pro-cl | Chat / Generations / Edits | 当前渠道Pro 备用稳定渠道,支持 1K、2K、4K。 |
nano-banana-pro-vip | Chat / Generations / Edits | 当前渠道Pro 高成本稳定渠道,支持 1K、2K。 |
nano-banana-pro-4k-vip | Chat / Generations / Edits | 当前渠道Pro 4K 高成本稳定渠道。 |
gemini-3.1-flash-image-preview | Chat / Generations / Edits | 兼容 nano-banana-2 能力。 |
gemini-3-pro-image-preview | Chat / Generations / Edits | 兼容 nano-banana-pro-vt 能力。 |
seedream-4.6 | Chat / Generations / Edits | Seedream 系列绘图修图模型,适合海报级商用生图和 P 图,默认高分辨率,支持自定义比例。 |
seedream-4.7 | Chat / Generations / Edits | Seedream 系列绘图修图模型,适合海报级商用生图和 P 图,默认高分辨率,支持自定义比例。 |
seedream-5.0 | Chat / Generations / Edits | Seedream 5.0 旗舰绘图修图模型,适合海报级商用生图、P 图和连续编辑,支持自定义比例。 |
jimeng-4.0 | Chat / Generations / Edits | 即梦 4.0 中文绘图修图模型,适合海报级商用生图、P 图和连续编辑。 |
jimeng-4.1 | Chat / Generations / Edits | 即梦 4.1 中文绘图修图模型,适合海报级商用生图、P 图和连续编辑。 |
jimeng-4.5 | Chat / Generations / Edits | 即梦 4.5 中文绘图修图模型,适合海报级商用生图、P 图和连续编辑。 |
对话模型
| 模型 | 接口 | 模型说明 |
|---|---|---|
gemini-3.1-pro | Chat | 当前渠道Gemini 3.1 Pro,对话、识图、推理。 |
gemini-3.1-flash-lite | Chat | 当前渠道Gemini 3.1 Flash Lite,对话、识图、推理。 |
gemini-3.5-flash | Chat | 当前渠道Gemini 3.5 Flash,对话、识图、推理。 |
gemini-3-flash | Chat | 当前渠道Gemini 3 Flash,对话、识图。 |
gemini-3-pro | Chat | 当前渠道Gemini 3 Pro,对话、识图、推理。 |
gemini-2.5-flash | Chat | 当前渠道Gemini 2.5 Flash,对话、识图。 |
gemini-2.5-pro | Chat | 当前渠道Gemini 2.5 Pro,对话、识图、推理。 |
视频调用示例
视频统一使用异步任务接口。提交阶段只负责创建任务,查询阶段轮询 status、progress 和最终视频 URL。
提交任务
bash
curl -sS --max-time 90 https://video.opencodex.uk/v1/video/generations \
-H "Authorization: Bearer sk-你的API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "sora-2-4s",
"prompt": "生成一个4秒视频:一杯咖啡放在木桌上,窗外阳光照进来,蒸汽缓慢升起,真实摄影风格,16:9",
"duration": 4
}'查询任务
bash
curl -sS https://video.opencodex.uk/v1/video/generations/task_xxx \
-H "Authorization: Bearer sk-你的API_KEY"完成后的响应通常是 NewAPI 任务包装结构,视频地址在以下字段之一:
data.result_urldata.data.urldata.data.video_url- 兼容响应里的顶层
url或video_url
调用方不要只读取顶层 url,应按上面的顺序兼容解析。
可替换的模型和推荐时长:
| 模型 | duration | 提示词时长 |
|---|---|---|
seedance-2.0 | 4–15 | 与 duration 一致 |
seedance-2.0-fast-5s | 5 | 固定 5 秒;省略 duration 时自动使用 5 |
seedance-2.0-fast-10s | 10 | 固定 10 秒;省略 duration 时自动使用 10 |
seedance-2.0-fast-15s | 15 | 固定 15 秒;省略 duration 时自动使用 15 |
seedance-2.0-mini | 4–15 | 与 duration 一致 |
sora-2 | 4 | 写 4秒 |
sora-2-4s | 4 | 写 4秒 |
sora-2-8s | 8 | 写 8秒 |
sora-2-12s | 12 | 写 12秒 |
seedance-1.5-pro | 5 | 写 5秒 |
seedance-1.5-pro-5s | 5 | 写 5秒 |
seedance-1.5-pro-10s | 10 | 写 10秒 |
seedance-1.5-pro-12s | 12 | 写 12秒 |
seedance-1.0-fast | 5 | 写 5秒 |
seedance-1.0-fast-5s | 5 | 写 5秒 |
seedance-1.0-fast-10s | 10 | 写 10秒 |
seedance-1.0-mini | 5 | 写 5秒 |
seedance-1.0-mini-10s | 10 | 写 10秒 |
seedance-1.0-pro | 5 | 写 5秒 |
seedance-1.0-pro-10s | 10 | 写 10秒 |
jimeng-agent 当前走 Chat 接口,更适合轻量图文/视频 agent 任务;工具站的视频生成主流程建议优先使用上表固定时长视频模型。
Python 异步调用示例
python
import os
import time
import requests
API_KEY = os.environ["VIDEO_OPEN_CODEX_API_KEY"]
BASE_URL = "https://video.opencodex.uk"
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
}
payload = {
"model": "sora-2-4s",
"prompt": "生成一个4秒视频:海边日落,镜头缓慢推进,真实摄影风格,16:9",
"duration": 4,
}
resp = requests.post(
f"{BASE_URL}/v1/video/generations",
headers=headers,
json=payload,
timeout=90,
)
resp.raise_for_status()
data = resp.json()
task_id = data["task_id"]
def get_status(task):
payload = task.get("data") if isinstance(task.get("data"), dict) else task
return str(payload.get("status", "")).lower()
def get_video_url(task):
payload = task.get("data") if isinstance(task.get("data"), dict) else task
nested = payload.get("data") if isinstance(payload.get("data"), dict) else {}
return (
payload.get("result_url")
or payload.get("url")
or payload.get("video_url")
or nested.get("url")
or nested.get("video_url")
)
while True:
task_resp = requests.get(
f"{BASE_URL}/v1/video/generations/{task_id}",
headers={"Authorization": f"Bearer {API_KEY}"},
timeout=30,
)
task_resp.raise_for_status()
task = task_resp.json()
status = get_status(task)
print(status, task.get("progress") or task.get("data", {}).get("progress"))
if status in ("success", "succeeded", "completed"):
print(get_video_url(task))
break
if status in ("failure", "failed", "error", "cancelled", "canceled"):
raise RuntimeError(task)
time.sleep(20)Node.js 异步调用示例
javascript
const apiKey = process.env.VIDEO_OPEN_CODEX_API_KEY;
const baseUrl = "https://video.opencodex.uk";
const createResp = await fetch(`${baseUrl}/v1/video/generations`, {
method: "POST",
headers: {
Authorization: `Bearer ${apiKey}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "sora-2-4s",
prompt: "生成一个4秒视频:海边日落,镜头缓慢推进,真实摄影风格,16:9",
duration: 4,
}),
signal: AbortSignal.timeout(90000),
});
if (!createResp.ok) {
throw new Error(`${createResp.status} ${await createResp.text()}`);
}
const created = await createResp.json();
const taskId = created.task_id;
function getTaskPayload(task) {
return task?.data && typeof task.data === "object" ? task.data : task;
}
function getVideoUrl(task) {
const payload = getTaskPayload(task);
const nested = payload?.data && typeof payload.data === "object" ? payload.data : {};
return payload?.result_url || payload?.url || payload?.video_url || nested.url || nested.video_url;
}
while (true) {
const taskResp = await fetch(`${baseUrl}/v1/video/generations/${taskId}`, {
headers: { Authorization: `Bearer ${apiKey}` },
signal: AbortSignal.timeout(30000),
});
if (!taskResp.ok) {
throw new Error(`${taskResp.status} ${await taskResp.text()}`);
}
const task = await taskResp.json();
const payload = getTaskPayload(task);
const status = String(payload.status || "").toLowerCase();
console.log(status, payload.progress);
if (["success", "succeeded", "completed"].includes(status)) {
console.log(getVideoUrl(task));
break;
}
if (["failure", "failed", "error", "cancelled", "canceled"].includes(status)) {
throw new Error(JSON.stringify(task));
}
await new Promise((resolve) => setTimeout(resolve, 20000));
}图片参考生成视频
Seedance 2.0 Fast 固定时长模型使用 JSON 图片 URL。单图写成 image.url:
bash
curl -sS --max-time 120 https://video.opencodex.uk/v1/videos/generations \
-H "Authorization: Bearer sk-你的API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.0-fast-5s",
"prompt": "保持参考图中的角色、服装和构图,镜头缓慢推进,动作自然,无字幕",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "16:9",
"image": {"url": "https://cdn.example.com/reference.jpg"}
}'多图参考使用 images[].url,数组顺序就是参考顺序:
json
{
"model": "seedance-2.0-fast-10s",
"prompt": "参考人物、服装和场景,生成自然连贯的镜头",
"duration": 10,
"resolution": "720p",
"aspect_ratio": "9:16",
"images": [
{"url": "https://cdn.example.com/person.jpg"},
{"url": "https://cdn.example.com/clothes.jpg"},
{"url": "https://cdn.example.com/scene.jpg"}
]
}Fast 参考图必须是服务端可访问的公网 HTTPS URL;不接受本地文件直接上传。旧的字符串写法 "image":"https://..." 和 "images":["https://..."] 仍兼容。
图片输入建议使用 OpenAI/Sora 兼容入口 POST /v1/videos,并使用 multipart/form-data 上传图片。2026-06-10 已实测 sora-2-4s、seedance-1.5-pro-5s、seedance-1.0-fast-5s 使用 image=@start.png 可以完成图生视频任务。
bash
curl -sS --max-time 120 https://video.opencodex.uk/v1/videos \
-H "Authorization: Bearer sk-你的API_KEY" \
-F "model=sora-2-4s" \
-F "prompt=基于这张图片生成一个4秒视频:让主体轻微运动,保持原图风格,无文字,16:9" \
-F "duration=4" \
-F "size=1280x720" \
-F "image=@/path/to/input.png"也可以传入服务端可访问的图片 URL:
bash
curl -sS --max-time 120 https://video.opencodex.uk/v1/videos \
-H "Authorization: Bearer sk-你的API_KEY" \
-F "model=sora-2-4s" \
-F "prompt=基于这张图片生成一个4秒视频:镜头轻微推进,保持原图风格,无文字,16:9" \
-F "duration=4" \
-F "size=1280x720" \
-F "image=https://example.com/reference.jpg"注意:
- 图片 URL 必须能被服务端访问。
- 图片文件字段按 Sora 兼容格式使用
image;本地源码同时保留input_reference、images、image字段的 JSON 兼容处理,但公网实测通过的是/v1/videosmultipartimage。 image可作为单张首帧/参考图输入。尾帧或首尾双图字段暂不标注为稳定能力;如需接入 UI,应先单独验证具体字段名和实际生成效果。- 如果模型暂不支持图生视频,接口可能返回
400、model_not_found、unsupported、503或普通文本错误。 - 建议先用
sora-2-4s做小样测试,再切换到更长时长或更贵模型。
视频参数
/v1/videos 按 Sora 兼容格式提交异步视频任务。当前建议使用以下参数:
| 参数 | 类型 | 说明 |
|---|---|---|
model | string | 必填。使用本站模型名,如 seedance-2.0-fast-5s、sora-2-4s、seedance-1.5-pro-5s。 |
prompt | string | 必填。视频提示词。 |
aspect_ratio | string | Fast 固定时长模型支持 16:9、9:16、1:1;标准版/Mini 另支持 21:9、3:4、4:3。 |
resolution | string | Fast 固定时长模型固定 720p;标准版/Mini 支持 480p 或 720p。均不支持 1080p / 4K。 |
audio | boolean | Seedance 2.0 可选。是否生成原生音频,默认 true。 |
image | file、string 或 {url} | 可选。Fast 使用公网 HTTPS image.url;其他兼容模型可使用图片文件或 URL。 |
images | string[] 或 {url}[] | Fast 多图参考数组;推荐 { "url": "https://..." },字符串数组继续兼容。 |
image_url | string | Seedance 2.0 主参考图;支持 HTTPS 直链或 data:image/...;base64,...。 |
reference_image_urls | string[] | Seedance 2.0 多模态额外参考图;与 image_url 合计最多 4 张。 |
reference_videos | string[] | Seedance 2.0 参考视频 HTTPS 数组;最多 3 条,总时长不超过 15 秒。 |
reference_audios | string[] | Seedance 2.0 参考音频 HTTPS 数组;最多 1 条且不超过 15 秒。 |
first_image_url / last_image_url | string | Seedance 2.0 首尾帧,必须成对使用;与多模态参考素材互斥。 |
input_reference | string | 可选。JSON 兼容字段,本地会识别为图片输入;公网已稳定实测的是 multipart image。 |
duration | number | 可选。视频秒数;固定时长模型建议与模型名一致。 |
seconds | string | 可选。兼容部分写法;与 duration 二选一即可。 |
size | string | 可选。推荐 1280x720 或 720x1280。 |
width / height | number | 可选。Sora 兼容字段,按具体模型能力决定是否生效。 |
fps | number | 可选。按具体模型能力决定是否生效。 |
seed | number | 可选。按具体模型能力决定是否生效。 |
n | number | 可选。按具体模型能力决定是否生效。 |
response_format | string | 可选。按具体模型能力决定是否生效。 |
metadata | object/string | 可选。任务元数据。 |
图片模型调用示例
图片模型支持三种常用入口:
text
POST /v1/chat/completions
POST /v1/images/generations
POST /v1/images/edits图片生成
bash
curl -sS --max-time 180 https://video.opencodex.uk/v1/images/generations \
-H "Authorization: Bearer sk-你的API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "海报级商业产品图:一瓶香水放在黑色镜面台面上,背景有柔和金色光斑,文字留白区域清晰,16:9",
"n": 1,
"size": "1024x1024"
}'Chat 方式生成图片
bash
curl -sS --max-time 180 https://video.opencodex.uk/v1/chat/completions \
-H "Authorization: Bearer sk-你的API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedream-5.0",
"messages": [
{
"role": "user",
"content": "生成一张海报级商用图片:红色跑车停在夜晚城市街头,霓虹灯反射在车身上,电影感,16:9"
}
]
}'图片编辑
/v1/images/edits 使用 multipart/form-data,字段名按 OpenAI 兼容格式传入:
bash
curl -sS --max-time 180 https://video.opencodex.uk/v1/images/edits \
-H "Authorization: Bearer sk-你的API_KEY" \
-F "model=gpt-image-2" \
-F "image=@/path/to/input.png" \
-F "prompt=把图片中的产品背景改成高级黑金商业海报风格,保留主体轮廓和文字清晰度"图片模型提示词建议包含:
- 用途:海报、产品图、头像、插画、修图、P 图
- 主体:产品、人物、场景、文字内容
- 风格:商业摄影、电影感、极简、国潮、赛博朋克、写实插画
- 画幅或尺寸:
1:1、16:9、9:16、2K、4K - 编辑约束:保留主体、替换背景、增强文字清晰度、不要改变人物五官
提示词建议
视频模型对提示词里的结构化信息比较敏感,建议包含:
- 时长:
5秒、8秒、10秒、12秒、15秒 - 主体:人物、产品、动物、场景
- 动作:走动、旋转、推近、环绕、慢动作
- 风格:真实摄影、电影感、商业广告、纪录片、动漫
- 画幅:
16:9、9:16、1:1 - 镜头:特写、远景、低机位、跟拍、航拍、缓慢推近
示例:
text
生成一个8秒视频:一名登山者站在雪山山脊上,风吹动外套,镜头从背后缓慢推近,真实摄影风格,清晨冷色调,16:9返回结果解析
提交任务的典型返回结构:
json
{
"task_id": "task_xxx",
"status": "processing"
}查询任务时,未完成通常返回:
json
{
"task_id": "task_xxx",
"status": "processing",
"progress": 35
}完成后通常会在 data.result_url、data.data.url 或 data.data.video_url 字段里返回视频地址:
json
{
"code": "success",
"data": {
"task_id": "task_xxx",
"status": "SUCCESS",
"progress": "100%",
"result_url": "https://example.com/video.mp4",
"data": {
"url": "https://example.com/video.mp4",
"video_url": "https://example.com/video.mp4"
}
}
}调用方应以 status 为准:processing 继续轮询,succeeded 或 completed 读取视频 URL,failed、error、cancelled 进入失败处理。
常见错误
| HTTP 状态 | 可能原因 | 处理方式 |
|---|---|---|
401 | API key 错误或没带 Authorization | 检查 Bearer sk-... |
403 | key 无权限或额度不足 | 检查账号额度和 key 是否可用 |
404 | 路径错误 | 视频使用 /v1/video/generations |
408 / 超时 | 提交或轮询请求超时 | 提交超时设为 30 到 90 秒,轮询请求设为 30 秒 |
429 | 请求过快或限流 | 降低并发,稍后重试 |
500 / 502 / 503 | 生成失败、生成资源池暂不可用或模型暂不可用 | 换模型或稍后重试;如果返回“号池额度已耗尽正在切换号池,请重试”,通常是生成资源池临时不可用 |
model_not_found | 模型名不可用或当前 key 不支持该模型 | 使用本文档中的模型名,并确认 key 可用 |
并发和超时建议
- 提交任务请求建议超时:
30s到90s。 - 轮询任务请求建议超时:
30s,轮询间隔10s到20s。 - 不要用同步长连接等待视频完成,Cloudflare 或 Nginx 可能在约 120 秒左右切断连接。
- 客户端不要短时间大量并发提交视频任务。
- 如果业务需要排队,建议在调用方自己做队列,一次只放少量并发请求。
异步视频接口
工具站视频生成必须使用以下异步接口:
text
POST /v1/video/generations
GET /v1/video/generations/{task_id}提交接口返回任务 ID,查询接口返回状态、进度和最终 URL。工具站推荐流程是:提交任务、把 task_id 入库、后台定时轮询、完成后通知用户或更新页面。
正式业务接入前,建议先用一个小样任务验证响应字段和轮询流程。
OpenAI SDK 兼容写法
OpenAI SDK 的 Chat Completions 写法可用于部分图片模型或 jimeng-agent,但不推荐用于视频生成主流程。视频生成请直接按本文档示例调用 /v1/video/generations 并轮询任务状态。