模型简介
grok-video-3.5 是图生视频模型:上传一张首帧图,配合提示词生成最长 15 秒的视频,视频自带音频。接口采用 OpenAI Sora 风格的异步任务流程:先提交任务,再轮询结果。
快速信息
| 项目 | 说明 |
|---|---|
| 模型名称 | grok-video-3.5 |
| 价格 | 0.5 元/秒,按 seconds 计费(例如 10 秒 = 5 元) |
| 生成方式 | 仅支持图生视频,必须传一张首帧图 |
| 时长 | seconds:"1" – "15" |
| 分辨率 | resolution:480p / 720p |
| 出片时间 | 通常 1–3 分钟 |
| Base URL | https://deepseektavern.com/v1 |
获取 API Key
登录 DeepSeek Tavern 控制台,在「令牌管理」中创建 API Key。详细步骤参考:API 密钥获取指南。
Base URL 统一为 https://deepseektavern.com/v1,认证方式:Authorization: Bearer <你的API密钥>。下文示例中的 YOUR_API_KEY 请替换为你自己的 Key。
调用流程
POST /v1/videos提交生成任务,返回任务idGET /v1/videos/{id}轮询任务状态,建议每 5–10 秒一次,直到status为completed- 用返回体中的
url字段下载视频
注意
/v1/videos/{id}/content 端点暂时不可用,请直接使用查询结果里的 url 字段下载视频。视频链接请及时保存。
第一步:提交任务
POST https://deepseektavern.com/v1/videos
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | grok-video-3.5 |
prompt | string | 是 | 视频内容描述:动作、镜头运动、氛围、声音等 |
images | array | 是 | ["首帧图URL 或 data URI"],放一张图即可 |
seconds | string | 否 | 视频时长,"1" – "15",按秒计费 |
size | string | 否 | 如 1280x720(横屏)/ 720x1280(竖屏)/ 720x720(方形) |
aspect_ratio | string | 否 | 也可直接传画幅:16:9、9:16、1:1、3:2、2:3(与 size 二选一) |
resolution | string | 否 | 480p / 720p |
也可以用 multipart/form-data 提交:字段 input_reference 上传首帧图片文件,其余参数作为表单字段。
curl 示例:JSON(首帧图 URL)
curl https://deepseektavern.com/v1/videos \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"model": "grok-video-3.5",
"prompt": "少女回头微笑,樱花花瓣随风飘落,镜头缓慢推近,背景有轻柔的风声",
"images": ["https://example.com/first-frame.png"],
"seconds": "8",
"size": "1280x720",
"resolution": "720p"
}'
curl 示例:multipart 上传首帧图
curl https://deepseektavern.com/v1/videos \
-H "Authorization: Bearer YOUR_API_KEY" \
-F model=grok-video-3.5 \
-F prompt="猫咪伸懒腰后跳下窗台" \
-F seconds=6 \
-F aspect_ratio=9:16 \
-F resolution=720p \
-F input_reference=@first-frame.jpg
返回示例(字段以实际返回为准):
{
"id": "video_xxxxxxxx",
"object": "video",
"model": "grok-video-3.5",
"status": "queued"
}
第二步:轮询结果
GET https://deepseektavern.com/v1/videos/{id},建议每 5–10 秒查询一次。status 变为 completed 后,返回体里的 url 就是视频下载地址。
curl https://deepseektavern.com/v1/videos/video_xxxxxxxx \
-H "Authorization: Bearer YOUR_API_KEY"
完整 Python 示例:提交 + 轮询 + 下载
import base64
import time
import requests
API_KEY = "YOUR_API_KEY"
BASE = "https://deepseektavern.com/v1"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}
def to_data_uri(path):
"""本地图片转 data URI;如果首帧图本身是公网 URL,可直接传 URL"""
mime = "image/png" if path.lower().endswith(".png") else "image/jpeg"
with open(path, "rb") as f:
return f"data:{mime};base64," + base64.b64encode(f.read()).decode()
# 1. 提交任务
payload = {
"model": "grok-video-3.5",
"prompt": "骑士拔出长剑,披风在风中翻飞,远处雷声隆隆,镜头环绕",
"images": [to_data_uri("first-frame.png")],
"seconds": "10", # 按秒计费:10 秒 = 5 元
"aspect_ratio": "16:9",
"resolution": "720p",
}
r = requests.post(f"{BASE}/videos", json=payload, headers=HEADERS, timeout=120)
r.raise_for_status()
video_id = r.json()["id"]
print("任务已提交:", video_id)
# 2. 轮询,每 8 秒一次,最多等 10 分钟
deadline = time.time() + 600
while True:
time.sleep(8)
info = requests.get(f"{BASE}/videos/{video_id}", headers=HEADERS, timeout=60).json()
status = info.get("status")
print("状态:", status, info.get("progress", ""))
if status == "completed":
break
if status in ("failed", "cancelled", "error"):
raise RuntimeError(f"生成失败: {info}")
if time.time() > deadline:
raise TimeoutError("等待超时,可稍后用同一个 id 继续查询")
# 3. 用 url 字段下载(/content 端点暂不可用)
video_url = info["url"]
with requests.get(video_url, stream=True, timeout=300) as resp:
resp.raise_for_status()
with open(f"{video_id}.mp4", "wb") as f:
for chunk in resp.iter_content(1 << 16):
f.write(chunk)
print("已保存:", f"{video_id}.mp4")
提示词建议
- 动作:首帧里的主体接下来做什么,写清楚先后顺序
- 镜头:推近、拉远、环绕、跟随、固定机位
- 声音:视频自带音频,可描述环境音、背景音乐氛围或人物台词
- 时长匹配:动作越多需要的秒数越长,短视频里塞太多动作容易变快
计费说明
| 项目 | 价格 |
|---|---|
| 每秒视频 | 0.5 元 |
| 5 秒 / 10 秒 / 15 秒 | 2.5 元 / 5 元 / 7.5 元 |