cf-global 视频接口支持 OpenAI 风格和 xAI 风格两种创建方式。两种请求都会进入同一套异步任务系统:创建任务、轮询状态、下载最终视频。不同模型的输入模式、字段类型、时长、分辨率和下载方式并不完全相同,请先按本页的逐模型规格选择请求结构。
最后更新:2026-08-06
配置核对:2026-08-06(Asia/Shanghai)
1. 当前可用模型与默认最终价
| 模型 | 当前状态 | 主要用途 | cf-global 默认实扣 |
|---|---|---|---|
grok-imagine-video | 可用 | 文生、单图首帧、多图参考 | $0.85 / 次 |
grok-imagine-video-1.5 | 可用 | 单图首帧生视频 | $1.02 / 次 |
veo-3.1 | 可用 | 带原生音频的文生视频 | $1.55 / 次 |
海螺 minimax-h3 当前没有可调度的新上游账号或模型映射,因此仍不可调用;seedance-2.0、seedance-2.0-fast、kling-3.0-omni 和 happyhorse 的旧上游也不属于当前可调用模型。seedance-2.0 新渠道已经完成适配与价格预配置,但上游余额为零,尚未通过真实媒体验收,所以仍未开放。不要根据历史文档、历史价格或预配置价格直接发起请求。
模型权限按 API Key 分组隔离。每次接入前先调用 GET /v1/models,只有返回列表中存在的模型才能使用。Grok 与 Veo 当前按创建任务次数固定计费;账号专属倍率可覆盖组默认值。完整价格口径见官方价格与实际扣费。
2. 先选择输入模式
| 模型 | 文生视频 | 单图首帧 | 多图参考 | 已确认时长 | 已确认分辨率 |
|---|---|---|---|---|---|
grok-imagine-video | 支持 | 支持 | 支持,1–7 张 | 文生/单图 6–15 秒;多图 6–10 秒 | 480P、720P |
grok-imagine-video-1.5 | 不支持 | 支持,必须传图 | 不支持 | 6–15 秒 | 480P、720P、1080P |
veo-3.1 | 支持 | 上游文档支持最多 3 张,cf-global 尚未逐项验收 | 尚未对外确认 | 4、6、8 秒(标准直连) | 720P、1080P;8 秒 16:9 成片已实测为 1920×1080 |
单图与多图是两种不同模式:image 会锁定首帧;reference_images 只约束视频中应出现的主体或风格。不要在一个请求里同时传这两个字段。多图模式的规则与字段来自 xAI Reference-to-Video。
3. grok-imagine-video 详细规格
- 推荐端点:OpenAI 风格
POST /v1/videos;xAI 风格POST /v1/videos/generations。 - 文生视频:只传
prompt,不要传图片字段。 - 单图首帧:OpenAI 风格传
input_reference,xAI 风格传image。 - 多图参考:OpenAI 风格传
images,xAI 风格传reference_images;1–7 张,不能与单图字段同传。 - 时长:文生或单图 6–15 秒;多图参考 6–10 秒。
- 分辨率:已确认 480P、720P;画幅由
size或aspect_ratio指定。 - 下载:优先查询任务后使用响应中的完整签名 URL;裸
/content可能返回 400。
最小文生请求:
{
"model": "grok-imagine-video",
"prompt": "A cinematic slow push-in toward a neon city street at night, no text.",
"seconds": 6,
"size": "1280x720"
}4. grok-imagine-video-1.5 详细规格
- 推荐端点:OpenAI 风格
POST /v1/videos;xAI 风格POST /v1/videos/generations。 - 仅支持单图首帧生视频;请求必须提供一张图片。
- 不支持纯文本生视频,也不支持
reference_images多图参考。 - OpenAI 风格使用
input_reference;xAI 风格使用image: {"url":"..."}。 - 时长:6–15 秒;分辨率:480P、720P、1080P。
- 下载:与
grok-imagine-video相同,优先使用任务响应中的完整签名 URL。
最小单图请求:
{
"model": "grok-imagine-video-1.5",
"prompt": "Preserve the subject identity and colors, add a subtle camera push-in.",
"seconds": 6,
"size": "720x1280",
"input_reference": "https://example.com/input.png"
}5. veo-3.1 详细规格
- 推荐端点:
POST /v1/videos/generations;也兼容POST /v1/videos。 - 当前对外确认文生视频;图片参考、首尾帧和多图输入尚未完成 cf-global 逐项验收,不应作为稳定能力使用。
- xAI 风格使用
duration、resolution、aspect_ratio;OpenAI 风格使用seconds、size。网关会把时长转换成上游要求的字符串,并把规格转换成像素尺寸。 - 标准直连接口支持 4、6、8 秒;2026-08-07 已通过 cf-global 生产链路完成真实付费验收:8 秒、1080P、16:9,最终 MP4 为 8.000 秒、1920×1080,包含 H.264 视频轨和 AAC 音频轨。
- 上游另有独立的延长流程可把视频扩展到 15 秒,但该流程尚未接入 cf-global;因此当前公开模型的直接创建上限是 8 秒,而不是 15 秒。
generate_audio可以传布尔值,但当前渠道实测即使传false仍可能返回音轨。需要静音成片时,应在下载后由客户端移除音轨,不能把该字段当作强保证。- 创建任务按 $1.55 / 次固定计费:当前上游 ¥0.55 / 次,按“直接加 1 个余额单位”定价;当前充值口径为 ¥1 = 1 刀余额。HTTP 200 只表示任务已接受,必须继续轮询到
completed。 - 下载必须使用任务查询响应返回的完整签名 URL,包含所有查询参数;手工拼接裸
/content会返回missing_signature。
已验证的最小请求:
{
"model": "veo-3.1",
"prompt": "晴朗的夏日海岸,一位身穿浅粉色长裙的年轻东亚女性赤脚沿花径缓慢行走,35mm中远景平滑跟随,蓝绿色海水、白色浪花与巨大积云,单镜头写实旅行广告,无文字和水印。",
"seconds": 8,
"resolution": "1080p",
"aspect_ratio": "16:9",
"generate_audio": true
}6. 暂时不可调用的旧模型
以下模型曾接入 AI 视频专业组,但当前账号池不可调度,也不在该组 API Key 的实时 /v1/models 返回中:
| 模型 | 当前处理 | 客户端行为 |
|---|---|---|
minimax-h3(海螺) | 待补新渠道;当前无可调度账号或映射 | 不要发起请求;补齐真实上游并通过 MP4 验收后再开放 |
seedance-2.0 | 新渠道已适配但上游未充值 | 不要发起请求;完成充值和真实 MP4 验收后才会开放 |
seedance-2.0-fast | 旧线路暂停 | 不要发起请求 |
kling-3.0-omni | 旧线路暂停 | 不要发起请求 |
happyhorse | 旧线路暂停 | 不要发起请求 |
历史价格和历史成功记录不代表当前可用。新线路上线后会以实际公开模型 ID、逐模型参数和新价格重新发布。
7. OpenAI 风格创建视频
端点:POST /v1/videos
文生视频 JSON
curl "https://cf-global.junfeiai.com/v1/videos" \
-H "Authorization: Bearer $JUNFEIAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "grok-imagine-video",
"prompt": "A cinematic slow push-in toward a neon city street at night, no text.",
"seconds": 6,
"size": "720x1280"
}'单图生视频 JSON
使用公开 HTTPS 图片地址或 Base64 Data URL:
curl "https://cf-global.junfeiai.com/v1/videos" \
-H "Authorization: Bearer $JUNFEIAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "grok-imagine-video-1.5",
"prompt": "Animate the subject with a subtle camera push-in, preserve identity and colors.",
"seconds": 6,
"size": "720x1280",
"input_reference": "https://example.com/input.png"
}'单图生视频 multipart
上传本地图片时使用 multipart/form-data:
curl "https://cf-global.junfeiai.com/v1/videos" \
-H "Authorization: Bearer $JUNFEIAI_API_KEY" \
-F "model=grok-imagine-video-1.5" \
-F "prompt=Animate the subject with a subtle camera push-in, preserve identity and colors." \
-F "seconds=6" \
-F "size=720x1280" \
-F "input_reference=@input.png"多图参考生视频 JSON
images 数组有 2 张及以上图片时,网关会完整转换为官方 reference_images,不会再只取第一张:
curl "https://cf-global.junfeiai.com/v1/videos" \
-H "Authorization: Bearer $JUNFEIAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "grok-imagine-video",
"prompt": "The person from <IMAGE_1> walks onto the stage wearing the jacket from <IMAGE_2>, cinematic camera movement.",
"seconds": 10,
"size": "1280x720",
"images": [
{"image_url": "https://example.com/person.png"},
{"image_url": "https://example.com/jacket.png"}
]
}'多图参考生视频 multipart
本地多图使用同名 reference_images 字段重复上传,最多 7 张:
curl "https://cf-global.junfeiai.com/v1/videos" \
-H "Authorization: Bearer $JUNFEIAI_API_KEY" \
-F "model=grok-imagine-video" \
-F "prompt=The person from <IMAGE_1> uses the product from <IMAGE_2> in a bright studio." \
-F "seconds=10" \
-F "size=1280x720" \
-F "reference_images=@person.png" \
-F "reference_images=@product.png"OpenAI 风格兼容 seconds、size 和 input_reference。单图还接受 image、image_url;多图还接受 images、image_urls 和 reference_images。带 [] 的 multipart 字段名,例如 reference_images[],也会被识别。上传文件或 Base64 图片时,每张图片最大 20 MiB,网关会临时转成上游可访问的签名图片地址。
8. xAI 风格创建视频
端点:POST /v1/videos/generations
文本生视频
curl "https://cf-global.junfeiai.com/v1/videos/generations" \
-H "Authorization: Bearer $JUNFEIAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "grok-imagine-video",
"prompt": "A cinematic slow push-in toward a neon city street at night, no text.",
"duration": 6,
"resolution": "720p",
"aspect_ratio": "9:16"
}'单图生视频
curl "https://cf-global.junfeiai.com/v1/videos/generations" \
-H "Authorization: Bearer $JUNFEIAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "grok-imagine-video-1.5",
"prompt": "Animate the subject with a subtle camera push-in, preserve identity and colors.",
"image": {
"image_url": "https://example.com/input.png"
},
"duration": 6,
"resolution": "720p",
"aspect_ratio": "9:16"
}'多图参考生视频
curl "https://cf-global.junfeiai.com/v1/videos/generations" \
-H "Authorization: Bearer $JUNFEIAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "grok-imagine-video",
"prompt": "The person from <IMAGE_1> presents the product from <IMAGE_2> in a clean studio commercial.",
"reference_images": [
{"url": "https://example.com/person.png"},
{"url": "https://example.com/product.png"}
],
"duration": 10,
"resolution": "720p",
"aspect_ratio": "16:9"
}'xAI 风格的规范字段是 duration、resolution、aspect_ratio、单图 image 和多图 reference_images。图片对象使用 {"url":"https://..."};兼容写法 {"image_url":"https://..."} 会被网关改成规范格式。网关还识别 durationSeconds、videoSize、videoResolution 和 aspectRatio 等 camelCase 别名。
9. 创建响应
创建成功后会返回视频任务对象。兼容响应通常同时包含 id、task_id 或 request_id 中的一个或多个字段:
{
"id": "task_example",
"request_id": "task_example",
"status": "queued"
}保存任务 ID 用于后续查询。HTTP 200 只表示任务已被接受,不代表最终 MP4 已生成。
创建响应可能直接返回 queued、in_progress 或 processing。轮询时继续接受这些进行中状态;遇到 completed 或 succeeded 表示成功,遇到 failed、cancelled 或 canceled 表示失败终态。
视频任务按创建时的用户和 API Key 隔离。后续查询必须继续使用创建任务的同一个 API Key;同组的另一个 Key 也可能返回 Video request not found。
10. 查询任务
curl "https://cf-global.junfeiai.com/v1/videos/TASK_ID" \
-H "Authorization: Bearer $JUNFEIAI_API_KEY"轮询建议:
- 创建成功后等待 3 至 5 秒再首次查询。
- 使用固定间隔或指数退避,避免高频轮询。
- 进入成功、失败或取消终态后停止轮询。
- 不要把带签名的最终视频 URL 写入公开日志。
11. 下载视频
任务完成后,查询响应通常会返回带时效签名的 url 或 video.url。Grok 与 Veo 视频都必须原样使用该地址,不要删除或重写它的查询参数:
TASK_JSON="$(curl -fsS "https://cf-global.junfeiai.com/v1/videos/TASK_ID" \
-H "Authorization: Bearer $JUNFEIAI_API_KEY")"
DOWNLOAD_URL="$(printf '%s' "$TASK_JSON" | jq -r '.url // .video.url // empty')"
test -n "$DOWNLOAD_URL" || { echo "video is not completed or download URL is missing" >&2; exit 1; }
curl -fL "$DOWNLOAD_URL" --output result.mp4不要根据任务 ID 手工拼接裸 /content。该路径缺少任务中心生成的定位参数和签名时,Grok 可能返回 400,Veo 会返回 missing_signature。如果签名失效,应使用创建任务时的同一个 API Key 重新查询任务并取得新的完整下载 URL。
下载路由支持标准 Range 请求,并会使用 R2 视频缓存减少重复回源。签名有有效期,应在任务完成后及时下载,不要把完整 URL 写入公开日志或长期存储。客户端还应校验 HTTP 状态、Content-Type、文件大小和 MP4 文件头。
12. 完整入参与兼容字段
| 参数 | 必填 | OpenAI 风格 | xAI 规范字段 | 类型与说明 |
|---|---|---|---|---|
| 模型 | 是 | model | model | 字符串;必须是当前 API Key 的 /v1/models 中可见模型 |
| 提示词 | 是 | prompt | prompt | 非空字符串;多图提示词可用 <IMAGE_1>、<IMAGE_2> 指代数组顺序 |
| 时长 | 建议显式传 | seconds | duration | 客户端传整数秒;Veo 网关会转换成上游要求的字符串;兼容 duration_seconds、durationSeconds |
| 输出尺寸 | 建议显式传 | size,如 1280x720 | resolution,如 720p | 短边必须映射到模型支持的 480P、720P 或 1080P 档位 |
| 画幅 | 建议显式传 | 从 size 自动推导 | aspect_ratio | 如 16:9、9:16;兼容 aspectRatio |
| 单张首帧图 | 图生视频必填 | input_reference | image | URL、Base64 Data URL、图片对象,或 multipart 本地文件 |
| 多张参考图 | 多图模式必填 | images 或 reference_images | reference_images | 图片对象数组;grok-imagine-video 最多 7 张,不能与 image 同传 |
兼容字段的归一化规则:
| 客户端入参 | 网关最终转发 | 规则 |
|---|---|---|
input_reference、image_url | image: {"url":"..."} | 单图首帧模式 |
只有 1 个元素的 images / image_urls | image: {"url":"..."} | 保持旧客户端的单图语义 |
2–7 个元素的 images / image_urls | reference_images: [{"url":"..."}, ...] | 多图参考模式,保留全部图片及顺序 |
reference_images | reference_images | 即使只有 1 张,也明确按参考图模式处理 |
multipart 重复的 reference_images 或 reference_images[] | reference_images 数组 | 每个文件单独临时存储并转成签名 URL |
图片输入支持公开 HTTPS URL、data:image/...;base64,... 和 multipart 文件。文件或 Base64 图片每张最大 20 MiB;建议使用 PNG、JPEG 或 WebP。远程 URL 必须能被上游直接访问,不能使用本机路径、内网地址或需要 Cookie 登录的链接。
| 模型/模式 | 时长范围 | 未传时长 | 未传分辨率 |
|---|---|---|---|
| Grok 文本或单图 | 6–15 秒 | 15 秒 | 480P |
| Grok 多图参考 | 6–10 秒 | 10 秒 | 480P |
veo-3.1 | 4、6、8 秒(标准直连) | 不应依赖默认值 | 不应依赖默认值;显式传 1080P |
参数被网关识别只表示会被归一并透传;最终时长、分辨率和画幅仍以上游返回视频的真实媒体信息为准。
13. 常见错误
| 现象 | 原因与处理 |
|---|---|
401 | API Key 缺失或无效 |
403 | 当前 API Key 分组未开放目标视频模型 |
404 model_not_found | 模型不属于当前分组,先查询 /v1/models |
400 或 422 | 参数格式或目标模型不支持该组合,先缩减为最小请求 |
conflicting_video_input | 同时传了单图 image 和多图 reference_images;二选一 |
unsupported_reference_video_model | 多图模式不是 grok-imagine-video;不能使用 1.5 或专业组模型 |
too_many_reference_images | 多图超过 7 张 |
unsupported_reference_video_duration | 多图时长超过 10 秒 |
video_input_too_large | 单张上传图片或 Base64 图片超过 20 MiB |
502 | 上游任务创建或媒体回源失败,记录任务 ID 与绝对时间后重试 |
503 Service temporarily unavailable | 当前账号池不可调度或上游暂不可用 |
Video request not found | 查询使用了不同 API Key;改用创建任务时的同一个 Key |
裸 /content 返回 400 | 不要手工构造下载地址;重新查询任务并使用返回的完整签名 URL |
| 任务完成但视频打不开 | 重新获取签名 URL,并检查状态、Content-Type、字节数和签名有效期 |