The young woman on the balcony turns her head slowly toward the camera and smiles softly, long hair flowing in the golden sunset breeze, cinematic warm light. Natural sound: gentle wind, soft distant ambience, a quiet breath. Realistic motion, no text, no logos.
Sora 2 Pro Image to Video API
openai/sora-2-pro/image-to-videoSora 2 Pro(Image to Video)将高保真静态首帧图片演化为最高 1080p 全高清动态视频,支持 auto 原生画幅与多档分辨率。它能够在严格锁定原图主体身份、微观纹理与精妙光影的同时,赋予画面平滑的三维镜头调度与物理动力学演变。
请先上传一张参考图片,再运行此任务。
生成的视频会显示在这里
填写提示词并添加所需素材,确认设置后点击“运行”。
示例
REST API
快速开始
配置 API Key 与首帧图片,提交旗舰 1080p 图生视频任务并轮询成片。
第一步:配置 API 鉴权
在请求头中携带 Authorization: Bearer <VIDGO_API_KEY> 完成身份验证。
- 任务提交端点
- POST
https://api.vidgo.ai/api/generate/submit - 鉴权请求头
- Authorization: Bearer VIDGO_API_KEY
第二步:提交图生视频任务
向 /api/generate/submit 发起 POST 请求,指定 model 为 openai/sora-2-pro/image-to-video 并传入 prompt、image_urls 等参数。
REQUEST_BODY=$(cat <<'JSON'
{
"model": "openai/sora-2-pro/image-to-video",
"input": {
"prompt": "The young woman on the balcony turns her head slowly toward the camera and smiles softly, long hair flowing in the golden sunset breeze, cinematic warm light. Natural sound: gentle wind, soft distant ambience, a quiet breath. Realistic motion, no text, no logos.",
"duration": 4,
"resolution": "1080p",
"aspect_ratio": "auto",
"image_urls": [
"https://cdn.vidgo.ai/apis/models/openai/sora-2-pro/image-to-video/v1/01/input.png"
]
}
}
JSON
)
RESPONSE=$(curl --silent --show-error --fail-with-body \
--request POST \
--url "https://api.vidgo.ai/api/generate/submit" \
--header "Authorization: Bearer $VIDGO_API_KEY" \
--header "Content-Type: application/json" \
--data "$REQUEST_BODY")
CODE=$(printf '%s' "$RESPONSE" | jq -r '.code // empty')
if [ "$CODE" != "0" ] && [ "$CODE" != "200" ]; then
printf 'API error: %s
' "$RESPONSE" >&2
exit 1
fi
printf '%s
' "$RESPONSE"第三步:轮询获取生成结果
使用 task_id 查询进度;not_started 或 running 时继续轮询,finished 或 failed 时停止。成功后读取 data.files[].file_url,失败时读取 data.error_message。
状态查询端点
GET https://api.vidgo.ai/api/generate/status/{task_id}使用 task_id 查询进度;not_started 或 running 时继续轮询,finished 或 failed 时停止。成功后读取 data.files[].file_url,失败时读取 data.error_message。
not_startedrunningfinishedfailed{
"code": 200,
"data": {
"task_id": "task-sora2-pro-i2v-781923",
"status": "running",
"created_time": "2026-09-17T10:00:00Z"
}
}{
"code": 200,
"data": {
"task_id": "task-unified-...",
"status": "finished",
"files": [
{
"file_url": "https://storage.vidgo.ai/generated/video.mp4",
"file_type": "video"
}
],
"created_time": "2026-08-22T10:00:00Z",
"progress": 100,
"error_message": null
}
}完整代码示例
展开查看包含鉴权、提交、轮询与终态判断的完整脚本代码。
set -euo pipefail
: "${VIDGO_API_KEY:?Set VIDGO_API_KEY in your environment}"
REQUEST_BODY=$(cat <<'JSON'
{
"model": "openai/sora-2-pro/image-to-video",
"input": {
"prompt": "The young woman on the balcony turns her head slowly toward the camera and smiles softly, long hair flowing in the golden sunset breeze, cinematic warm light. Natural sound: gentle wind, soft distant ambience, a quiet breath. Realistic motion, no text, no logos.",
"duration": 4,
"resolution": "1080p",
"aspect_ratio": "auto",
"image_urls": [
"https://cdn.vidgo.ai/apis/models/openai/sora-2-pro/image-to-video/v1/01/input.png"
]
}
}
JSON
)
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
--request POST \
--url "https://api.vidgo.ai/api/generate/submit" \
--header "Authorization: Bearer $VIDGO_API_KEY" \
--header "Content-Type: application/json" \
--data "$REQUEST_BODY")
TASK_ID=$(printf '%s' "$SUBMIT_RESPONSE" | jq -r '.data.task_id // .task_id // empty')
BUSINESS_CODE=$(printf '%s' "$SUBMIT_RESPONSE" | jq -r '.code // empty')
if [ "$BUSINESS_CODE" != "0" ] && [ "$BUSINESS_CODE" != "200" ]; then
printf 'Submit failed:
%s
' "$SUBMIT_RESPONSE" >&2
exit 1
fi
if [ -z "$TASK_ID" ]; then
printf 'Submit response did not include task_id:
%s
' "$SUBMIT_RESPONSE" >&2
exit 1
fi
START_TIME=$(date +%s)
POLL_DELAY=2
while true; do
if [ $(( $(date +%s) - START_TIME )) -ge 600 ]; then
printf 'Timed out after 600 seconds
' >&2
exit 1
fi
STATUS_RESPONSE=$(curl --silent --show-error --fail-with-body \
--url "https://api.vidgo.ai/api/generate/status/$TASK_ID" \
--header "Authorization: Bearer $VIDGO_API_KEY")
STATUS=$(printf '%s' "$STATUS_RESPONSE" | jq -r '.data.status // .status // empty')
BUSINESS_CODE=$(printf '%s' "$STATUS_RESPONSE" | jq -r '.code // empty')
if [ "$BUSINESS_CODE" != "0" ] && [ "$BUSINESS_CODE" != "200" ]; then
printf 'Status request failed:
%s
' "$STATUS_RESPONSE" >&2
exit 1
fi
case "$STATUS" in
finished)
printf '%s' "$STATUS_RESPONSE" | jq -r '(.data.files // .files // [])[]?.file_url'
break
;;
failed)
printf '%s' "$STATUS_RESPONSE" | jq -r '.data.error_message // .error_message // "Generation failed"' >&2
exit 1
;;
not_started|running)
sleep "$POLL_DELAY"
if [ "$POLL_DELAY" -lt 10 ]; then POLL_DELAY=$((POLL_DELAY + 1)); fi
;;
*)
printf 'Unexpected task status: %s
' "$STATUS" >&2
exit 1
;;
esac
done请求参数
向 /api/generate/submit 提交时需传递的 input 参数配置:
| 字段 | 类型 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|---|
| prompt | string | 必填 | — | 动态与动作引导提示词,去除首尾空格后至少包含 1 个字符。 |
| image_urls | array | 必填 | — | 包含恰好 1 个图片 URL 的数组,支持 JPEG、PNG 或 WebP,≤10MB。 |
| duration | integer | 可选 | 4 | 视频时长(秒),支持 4, 8, 12, 16, 20。 |
| aspect_ratio | string | 可选 | 16:9 | 画幅比例,支持 auto, 16:9 或 9:16。 |
| resolution | string | 可选 | 1024p | 输出分辨率,支持 720p, 1024p, 1080p。 |
响应字段
提交任务成功后返回的数据结构,以及状态查询接口响应:
| 字段 | 类型 | 描述 |
|---|---|---|
| code | integer | 业务状态码,200 表示成功。 |
| message | string | 业务返回消息或异常描述。 |
| data.task_id | string | 全局唯一的异步任务标识流水号。 |
| data.status | string | 当前状态:not_started(排队中)、running(生成中)、finished(已完成)、failed(失败)。 |
| data.created_time | string | 任务创建时间(ISO 8601 格式)。 |
| data.files[] | array | 任务成功生成的文件列表。 |
| data.files[].file_url | string | 成片 MP4 文件的下载播放链接。 |
| data.error_message | string | null | 任务失败时的详细错误说明。 |
任务状态流转
轮询过程中,依据 data.status 判断任务执行阶段:
not_started任务已被系统受理入队,正等待旗舰算力节点分配。
running正在执行图片特征提取、1080p 扩散去噪与音轨合成,持续轮询此状态。
finished生成成功,从 data.files[0].file_url 读取成片链接,终止轮询。
failed任务执行异常终止,读取 data.error_message 查看原因并终止轮询。
轮询与重试建议
- 身份认证请求头必须携带 Bearer API Key,若收到 401 请检查密钥有效性。
- 图片与参数校验确保 image_urls 恰好包含 1 个有效图片 URL,resolution 在 720p/1024p/1080p 范围内。
- 轮询频次1080p 旗舰画质处理耗时相对较长,建议以 2–3 秒间隔轮询状态。
- Webhook 回调支持在提交请求顶层配置 callback_url,成片完成后系统将主动推送任务结果。
端点规格
| 规格项 | 取值 | 说明 |
|---|---|---|
| 输入方式 | 文本 + 单张图片 | 通过 prompt 描述动作,image_urls 提供 1 张必填首帧图片。 |
| 输出形式 | MP4 视频(含原生音频) | 异步执行渲染,任务完成后提供成片链接。 |
| 可选时长 | 4 / 8 / 12 / 16 / 20 秒 | 默认预设为 4 秒。 |
| 画幅比例 | auto / 16:9 / 9:16 | 默认预设为 16:9,auto 模式自动适配原图比例。 |
| 原生分辨率 | 720p / 1024p / 1080p | 默认预设为 1024p,最高支持 1080p 全高清。 |
| 图片格式与大小 | JPEG / PNG / WebP,≤ 10MB | 必须提供恰好 1 个有效的公网访问 URL。 |
| 计费基准 | 按分辨率每秒费率 × 时长 | 720p: 48 积分/秒;1024p: 80 积分/秒;1080p: 112 积分/秒。 |
Sora 2 Pro Image to Video
Sora 2 Pro Image to Video 是 OpenAI 研发的旗舰图像生成视频模型。它以单张静态图片作为视觉锚点,结合文本指令将静态画面扩展为包含电影级光影、微表情变化与原生立体声音频的高清视频。支持 auto 画幅智能适配与最高 1080p 全高清输出,专为品牌商业成片、高端电商视觉升级与超清动态资产制作打造。
为什么选择此端点?
旗舰 1080p 全高清细腻呈现提供 1080p 超清画质,深度保留原图的人脸微毛孔、发丝光泽、金属反光与织物肌理,满足大屏商业成片标准。
auto 原生画幅智能跟随独家支持 auto 画幅比例,模型自动识别并严格继承上传图片的原始尺寸比例,帮助保留原图构图。
首帧特征高保真继承与时空稳定基于最强旗舰扩散模型,精准维系角色身份、主体轮廓与空间布光,在大跨度动作演绎中保持形态不畸变崩解。
画面同步原生立体声音频通过对视觉首图与运动提示词的深度联合推理,随视频渲染同步内嵌高动态立体声与环境音场,免去后期配音环节。
多档分辨率与阶梯时长提供 720p/1024p/1080p 三档分辨率及 4 至 20 秒固定时长,可在低成本动态构图测试与商业母带渲染间自由切换。
透明透明的秒级弹性预算按「选定分辨率费率 × 秒数」透明计费,支持按需充值调用,无强制性月费订阅,便于商业项目成本管控。
参数说明
| 参数 | 要求 | 说明 |
|---|---|---|
| prompt | 必填 | 字符串。描述画面动态演进、主体肢体微动、运镜轨迹与声音环境;去除首尾空格后至少包含 1 个字符。 |
| image_urls | 必填 | 字符串数组。包含恰好一张公开可访问的 JPEG、PNG 或 WebP 图片 URL,单图大小不超过 10MB。 |
| duration | 可选 | 整数。设置生成视频的时长(秒);可选 4、8、12、16、20,体验区默认预设为 4 秒。 默认值 48121620 |
| aspect_ratio | 可选 | 字符串。设置视频画幅;可选 auto(自适应原图,默认推荐)、16:9 或 9:16,体验区默认预设为 16:9。 默认值 16:9auto9:16 |
| resolution | 可选 | 字符串。设置输出分辨率;可选 720p、1024p 或 1080p,体验区默认预设为 1024p。 默认值 1024p720p1080p |
使用流程
准备高保真参考图与 API Key获取公网图片链接(JPEG/PNG/WebP,≤10MB),并在请求头中配置 Authorization: Bearer <API_KEY>。
配置画幅与分辨率选用 auto 画幅以原图长宽比指导输出,并选择 720p、1024p 或 1080p 交付规格与 4–20 秒时长。
提交任务获取 1080p 成片向 /api/generate/submit 提交 prompt、image_urls 与参数配置,依据 task_id 轮询至 finished 提取 MP4 成片。
计费规则
Sora 2 Pro 旗舰图生视频与文生视频保持相同的费率基准:720p 每秒 48 积分(4s=192 积分)、1024p 每秒 80 积分(4s=320 积分,默认档位)、1080p 每秒 112 积分(4s=448 积分)。按 2,000 积分 / 10 美元标准折算,即用即付,无月费门槛,大额积分充值享受更优折算单价。
| 规格 | 费率 | 说明 |
|---|---|---|
| 720p 档位(4–20 秒) | 48 积分/秒(4 秒 192 积分起,约 $0.96) | 快速图生动效验证,适合高频测试主体动作走向。 |
| 1024p 档位(4–20 秒,默认) | 80 积分/秒(4 秒 320 积分起,约 $1.60) | 默认预选档位,兼顾顶尖纹理画质与流畅渲染效率。 |
| 1080p 档位(4–20 秒) | 112 积分/秒(4 秒 448 积分起,约 $2.24) | 全高清超清输出,适用于商业成片广告、精品电商动效与大屏展示。 |
推荐应用场景
高端奢侈品与工业设计动效展示将静物珠宝、名表与汽车静态渲染图赋予 1080p 级真实光影流转与物理折射,精准还原贵重材质的光学质感。
品牌商业平面海报活化配合 auto 原生画幅,直接将海报或 KV 拓展为超清动态视频,以原有版面构图与角色外观为参考。
影视概念设计与故事板动态试拍将高精度概念艺术画作转换为带运镜调度与环境立体声的 1080p 连续镜头,供剧组直观感受成片视觉冲击力。
游戏全高清立绘与角色动画演绎激活游戏静态立绘,赋予角色细腻的发丝随风摆动、眼波流转与待机呼吸,输出带原生音效的超清展示资产。
创作技巧
- 建议优先使用 aspect_ratio: "auto",这样能够 1:1 继承输入图片的原始长宽比,避免画面主体被裁剪拉伸。
- 上传图片建议采用无过度锐化与重度压缩的高分辨率源图,有助于 Pro 模型精确提取皮肤微纹理与布光层次。
- 在提示词中集中描述肢体动作幅度与镜头调度,避免过多重复描述原图中已有的静态色彩与服饰样式。
- 描述动作伴随的具体声音细节(如丝绸衣物的摩擦声、红酒倒入玻璃杯的声音),能引导模型生成高保真原生音效。
使用说明
- image_urls 参数必须传入恰好 1 个有效的公网访问图片 URL,支持 JPEG、PNG、WebP,单张大小 ≤ 10MB。
- aspect_ratio 支持 auto、16:9 与 9:16,其中 auto 仅在提供 image_urls 时有效,以原图比例为参考。
- 支持可选 resolution 参数(720p, 1024p, 1080p),默认预选为 1024p,输出带原生音轨的 MP4 视频。
Sora 2 Pro Image to Video API — 常见问题
Sora 2 Pro Image to Video API 是什么?
Sora 2 Pro Image to Video 是 OpenAI 研发用于图像生成视频的旗舰模型。它以单张静态参考图为视觉锚点,结合文本指令将静态画面转化为最高 1080p 全高清、包含原生同步音频的电影质感视频。基于 OpenAI 最强多模态扩散架构,它在严格保留原图主体外观、微观肌理与空间光影的同时,赋予画面平滑的三维运镜与物理动力学演变。你可以通过 API 进行程序化调用,也可以在上方体验区直接在线试用。
Sora 2 Pro 图生视频如何使用 auto 自适应画幅?
在参数中将 aspect_ratio 设为 "auto",模型会自动解析上传图片的原始像素宽高比,以原图画幅指导高清视频生成,减少固定横竖屏比例对构图的约束。
Sora 2 Pro 图生视频支持哪些分辨率?
支持 720p、1024p 与 1080p 三档分辨率(体验区默认预设为 1024p)。1080p 选项专为商业级精细化成片打造,能够完整承载高像素原图的毛孔细节、微小反光与自然阴影过渡。
Sora 2 Pro 图生视频能保持角色面部一致吗?
能。Sora 2 Pro 具备更强的人像面部特征提取与空间投影能力。上传正面清晰且光照均匀的参考图,并在提示词中专注于描述动态动作,模型即可在大幅转头、微笑或走动中始终维持角色面容高度一致。
Sora 2 Pro 图生视频能为静止图片生成环境音效吗?
能。模型具备音画协同推理机制,能识别首帧图像中的场景要素(例如壁炉、海滩、森林或车厢),随画面同步合成真实贴合的立体声环境底噪与动作撞击音效,无需额外音频生成步骤。
Sora 2 Pro 图生视频支持上传几张参考图?
目前端点严格支持输入恰好 1 张首帧参考图片。模型将该图片作为视频的第一帧和主体视觉基准向后平滑展开,image_urls 数组中超过 1 张图片将返回校验错误。
Sora 2 Pro 图生视频单次最长支持多少秒?
单次调用支持生成最长 20 秒视频,提供 4、8、12、16 与 20 秒五档精确时长选择(体验区默认预设为 4 秒)。固定时长档位能够帮助团队在提交任务前准确核算积分开销。