Skip to content

视频 API

视频生成采用异步任务流程:先提交任务,保存返回的任务 ID,再轮询进度,最后取得成片。本页整理 OpenAI 兼容视频、Gemini / Omni 视频和 Grok 视频的常用请求方式。

使用边界

本页按指定参考教程整理,没有发送真实视频生成请求。接口、模型、分组、参数范围、价格和计费规则均以 Lunora 控制台“可用渠道”的实时显示为准。第一次使用时先选择最短时长和默认清晰度。

开始前准备

  • 已在可用渠道确认目标视频模型及其所属分组。
  • 已创建一把分组匹配的视频 API Key,创建方式见创建 API Key
  • 电脑已安装 curl,参考图片或视频使用可直连的 HTTPS 地址。
  • 不要把真实 Key 写进脚本、截图、公开仓库或聊天记录。

本文命令统一读取 LUNORA_VIDEO_API_KEY

macOS 或 Linux 当前终端:

bash
export LUNORA_VIDEO_API_KEY="你的_视频_API_Key"

Windows PowerShell 当前窗口:

powershell
$env:LUNORA_VIDEO_API_KEY = "你的_视频_API_Key"

请求流程

步骤方法和路径说明
1. 提交 OpenAI / Omni 任务POST /v1/videos提交 JSON 或 multipart/form-data,保存返回的 idtask_id
2. 查询 OpenAI / Omni 任务GET /v1/videos/{task_id}状态通常为 queuedin_progressprocessingcompletedfailed
3. 下载 OpenAI / Omni 成片GET /v1/videos/{task_id}/content任务完成后下载,也可以使用响应中的 data[0].url
4. 提交 Grok 任务POST /v1/video/generations创建 Grok 文生、图生或视频编辑任务
5. 查询 Grok 任务GET /v1/video/generations/{task_id}成功时读取 data.statusdata.result_url

建议每 5-10 秒查询一次,客户端总超时设置为 300 秒或更长。不要毫秒级高频轮询,也不要在任务仍在处理中时重复付费提交。

OpenAI 兼容入口

通用请求字段

字段类型必需说明
modelstring控制台显示的视频模型名称
promptstring建议写清主体、动作、镜头、场景和风格
aspect_ratiostring例如 16:99:16,范围取决于模型
durationnumber视频时长,单位为秒
sizestring部分模型使用尺寸,例如 1280x720
image / imagesstring / string[]图生视频参考图,可使用 HTTPS URL 或 data URL

macOS、Linux 或 Git Bash 提交一个通用文生视频任务:

bash
curl -sS -X POST "https://api.uselunora.com/v1/videos" \
  -H "Authorization: Bearer $LUNORA_VIDEO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "控制台显示的视频模型",
    "prompt": "雨夜霓虹街道,镜头缓慢推进,电影感光影",
    "aspect_ratio": "16:9",
    "duration": 8
  }' > video-task.json

Windows PowerShell 使用相同字段:

powershell
$createBody = @{
  model = "控制台显示的视频模型"
  prompt = "雨夜霓虹街道,镜头缓慢推进,电影感光影"
  aspect_ratio = "16:9"
  duration = 8
} | ConvertTo-Json

$createResponse = Invoke-RestMethod `
  -Uri "https://api.uselunora.com/v1/videos" `
  -Method Post `
  -Headers @{ Authorization = "Bearer $env:LUNORA_VIDEO_API_KEY" } `
  -ContentType "application/json" `
  -Body $createBody

$createResponse |
  ConvertTo-Json -Depth 10 |
  Set-Content video-task.json -Encoding utf8

创建任务可能返回:

json
{
  "id": "task_abc123",
  "object": "video",
  "model": "控制台显示的视频模型",
  "status": "queued",
  "progress": 0
}

保存其中的 id,查询任务:

bash
curl -sS "https://api.uselunora.com/v1/videos/task_abc123" \
  -H "Authorization: Bearer $LUNORA_VIDEO_API_KEY" \
  > video-status.json

Windows PowerShell 查询同一个任务:

powershell
$taskId = "task_abc123"
$statusResponse = Invoke-RestMethod `
  -Uri "https://api.uselunora.com/v1/videos/$taskId" `
  -Headers @{ Authorization = "Bearer $env:LUNORA_VIDEO_API_KEY" }

$statusResponse |
  ConvertTo-Json -Depth 10 |
  Set-Content video-status.json -Encoding utf8

完成响应可能包含:

json
{
  "id": "task_abc123",
  "status": "completed",
  "progress": 100,
  "data": [
    {"url": "/v1/videos/task_abc123/content"}
  ]
}

下载成片:

bash
curl -sS -L "https://api.uselunora.com/v1/videos/task_abc123/content" \
  -H "Authorization: Bearer $LUNORA_VIDEO_API_KEY" \
  --output generated-video.mp4

Windows PowerShell 下载成片:

powershell
$taskId = "task_abc123"
Invoke-WebRequest `
  -Uri "https://api.uselunora.com/v1/videos/$taskId/content" `
  -Headers @{ Authorization = "Bearer $env:LUNORA_VIDEO_API_KEY" } `
  -OutFile generated-video.mp4

Gemini / Omni 视频

Omni 系列统一使用 POST /v1/videos,按任务 ID 查询和下载。参考教程中的模型名称包括 omni-fastomni-fast-no-wateromni-v2vomni-v2v-no-water;实际可用名称以控制台为准。

omni-fast

用于文生、单图、多图参考和首尾帧视频。参考参数为固定 720p、约 10 秒,支持 16:99:16

字段用法
image_urlJSON 中提交一张公网图片或 data URL
input_reference以 multipart 重复提交多张文件;参考教程限制最多 5 张、每张不超过 5 MB
first_image_url / last_image_url单独或成对提交首帧与末帧

单图图生视频:

bash
curl -sS -X POST "https://api.uselunora.com/v1/videos" \
  -H "Authorization: Bearer $LUNORA_VIDEO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "omni-fast",
    "prompt": "保持人物一致,缓慢走动",
    "aspect_ratio": "16:9",
    "image_url": "https://example.com/photo.jpg"
  }'

多参考图:

bash
curl -sS -X POST "https://api.uselunora.com/v1/videos" \
  -H "Authorization: Bearer $LUNORA_VIDEO_API_KEY" \
  -F "model=omni-fast" \
  -F "prompt=参考这些商品图,生成稳定的展示视频" \
  -F "aspect_ratio=16:9" \
  -F "input_reference=@front.png" \
  -F "input_reference=@side.png"

omni-fast-no-water

参数与 omni-fast 相同,模型名改为 omni-fast-no-water。任务完成前可能出现额外的 processing 阶段,不要把它当作失败。

bash
curl -sS -X POST "https://api.uselunora.com/v1/videos" \
  -H "Authorization: Bearer $LUNORA_VIDEO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "omni-fast-no-water",
    "prompt": "保持人物一致,镜头缓慢环绕",
    "aspect_ratio": "16:9",
    "image_url": "https://example.com/photo.jpg"
  }'

omni-v2v

用于视频转视频。JSON 请求使用 video_url,multipart 请求使用 input_video,两者选择一种。参考教程要求源视频不超过 5 MB、分辨率不超过 1920x1080

bash
curl -sS -X POST "https://api.uselunora.com/v1/videos" \
  -H "Authorization: Bearer $LUNORA_VIDEO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "omni-v2v",
    "prompt": "将画面风格转换为赛博朋克风",
    "aspect_ratio": "16:9",
    "video_url": "https://example.com/source.mp4"
  }'

上传本地视频:

bash
curl -sS -X POST "https://api.uselunora.com/v1/videos" \
  -H "Authorization: Bearer $LUNORA_VIDEO_API_KEY" \
  -F "model=omni-v2v" \
  -F "prompt=将画面风格转换为赛博朋克风" \
  -F "aspect_ratio=16:9" \
  -F "input_video=@source.mp4;type=video/mp4"

omni-v2v-no-water

参数与 omni-v2v 相同,模型名改为 omni-v2v-no-water。额外处理可能延长任务时间,继续按 5-10 秒间隔轮询。

bash
curl -sS -X POST "https://api.uselunora.com/v1/videos" \
  -H "Authorization: Bearer $LUNORA_VIDEO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "omni-v2v-no-water",
    "prompt": "保留主体动作,把画面转换为电影质感",
    "aspect_ratio": "16:9",
    "video_url": "https://example.com/source.mp4"
  }'

Omni / Veo 通常有较严格的内容审查。真人正脸、版权角色和敏感题材可能被拒绝;失败任务的计费处理以控制台说明为准。

Grok 视频

Grok 使用另一套异步路径:

  • 创建:POST /v1/video/generations
  • 查询:GET /v1/video/generations/{task_id}
  • 成功标志:data.statusSUCCESS
  • 成片地址:data.result_url

grok-video

支持文生视频、单图或多图参考视频,以及通过 video_url 编辑视频。

字段说明
prompt必需,参考教程上限为 4096 字符
seconds / duration468101215
aspect_ratio1:116:99:164:33:43:22:3
resolution720p480p
image_urlsHTTPS 或 data URL 数组,参考教程限制最多 7 张
video_url用于视频编辑的 HTTPS 直链

视频编辑:

bash
curl -sS -X POST "https://api.uselunora.com/v1/video/generations" \
  -H "Authorization: Bearer $LUNORA_VIDEO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "grok-video",
    "prompt": "Add subtle rainbow in the sky",
    "aspect_ratio": "16:9",
    "resolution": "720p",
    "seconds": 4,
    "video_url": "https://example.com/source.mp4"
  }'

多参考图生视频:

bash
curl -sS -X POST "https://api.uselunora.com/v1/video/generations" \
  -H "Authorization: Bearer $LUNORA_VIDEO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "grok-video",
    "prompt": "让产品在桌面上缓慢旋转,保持材质一致",
    "aspect_ratio": "16:9",
    "resolution": "720p",
    "seconds": 8,
    "image_urls": [
      "https://example.com/product-front.png",
      "https://example.com/product-side.png"
    ]
  }'

参考教程说明:多图任务超过 10 秒时可能自动按 10 秒处理。实际规则以控制台为准。

grok-video-1.5

用于单图生视频。必须且只能提交一张图片,不支持纯文生,也不支持 video_url 视频参考;画幅只使用 16:99:16

字段说明
model必需,填写 grok-video-1.5 或控制台展示名
prompt必需,参考教程上限为 4096 字符
seconds / duration必需,468101215
aspect_ratio必需,只使用 16:99:16
resolution可选,720p480p
image_urls必需时只能包含一张图片
image{ "url": "..." },可代替单项 image_urls;不要同时提交 video_url
bash
curl -sS -X POST "https://api.uselunora.com/v1/video/generations" \
  -H "Authorization: Bearer $LUNORA_VIDEO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "grok-video-1.5",
    "prompt": "Gentle camera push-in, water flowing",
    "aspect_ratio": "9:16",
    "duration": 4,
    "resolution": "720p",
    "image": {
      "url": "https://example.com/product.png"
    }
  }'

查询 Grok 任务:

bash
curl -sS "https://api.uselunora.com/v1/video/generations/task_abc123" \
  -H "Authorization: Bearer $LUNORA_VIDEO_API_KEY" \
  > grok-video-status.json

成功响应可能为:

json
{
  "code": "success",
  "data": {
    "fail_reason": "",
    "progress": "100%",
    "result_url": "https://example.com/generated-video.mp4",
    "status": "SUCCESS",
    "task_id": "task_abc123"
  }
}

任务状态与轮询

轮询程序至少需要处理这些状态:

状态处理方式
queued / in_progress / processing等待后继续查询
completed读取 data[0].url 或下载 /content
SUCCESSGrok 任务读取 data.result_url
failed 或包含 fail_reason停止轮询并记录 error.messagefail_reason

务必持久化 task_id。页面刷新、脚本退出或服务器重启后,仍应能够继续查询已有任务,而不是重新创建。

可选:让 Agent 自动执行

在 Codex、Claude Code、OpenCode 或 OpenClaw 中,可以把下面的要求作为创建视频 Skill 的基础指令:

text
请创建一个 Lunora AI 视频 Skill:
1. 从环境变量 LUNORA_VIDEO_API_KEY 读取 Key,不显示或写入日志。
2. 根据需求选择控制台当前可用的视频模型。
3. OpenAI / Omni 任务使用 /v1/videos;Grok 任务使用 /v1/video/generations。
4. 保存 task_id,每 5-10 秒轮询一次,遇到完成、成功或失败状态后停止。
5. 返回最终视频 URL 或下载文件路径,并保留失败原因。
6. 不要固定用户的创意、镜头语言和提示词,只负责模型选择、参数合法性和任务闭环。

常见问题

401 或 403

检查 Key 是否完整、是否已启用,以及 Key 分组是否包含目标视频模型。兑换码和聊天账号密码都不是 API Key。

404

确认使用的是 api.uselunora.com,并区分 /v1/videos/v1/video/generations。不要重复添加 /v1

任务一直处理中

视频任务通常比文本和图片更慢。保持合理轮询间隔,记录任务 ID;不要在旧任务未结束时连续创建相同任务。

参考图片或视频无法读取

使用无需登录、没有防盗链并且可从公网直接访问的 HTTPS URL;本地文件必须通过对应的 multipart 字段上传。

返回成功但没有视频

OpenAI / Omni 读取 data[0].url/content,Grok 读取 data.result_url。先保存完整 JSON,再按实际字段处理。

安全与费用

  • 不要在响应日志中记录完整 Key、data URL 或敏感素材地址。
  • 任务失败、取消、超时和无水印处理的计费规则以控制台当前说明为准。
  • 先用短时长、默认清晰度和非敏感素材验证流程,再增加时长或参考素材数量。
  • 服务端集成应限制创建频率和轮询频率,避免同一任务被重复提交。

教程内容会随控制台功能持续更新