从创建视频到程序调用
直接使用视频工作台选择模型、填写提示词并查看生成记录;服务端程序使用服务 API Key 调用统一生成接口。
http://127.0.0.1:6001| 用途 | 接口 / 页面 | 认证 |
|---|---|---|
| 手动创建视频 | /video | 管理员登录 |
| 查询可用模型 | GET /v1/models | 服务 API Key |
| 程序创建视频 / 图像 | POST /v1/chat/completions | 服务 API Key |
| 专用图像生成 | POST /v1/images/generations | 服务 API Key |
| 工作台异步创建 / 查询 | POST /local-video/jobsGET /local-video/jobs | 管理员会话 Cookie |
/v1/chat/completions,请求会等待生成完成再返回。TRAE 的 /v1/videos、/v1/video/generations 和 /api/v1/video-jobs 不属于本服务,不能直接套用其路径或字段。准备调用环境
在自己的终端设置以下变量,替换示例 Key。文档不会读取或保存你的 Key。
export BASE_URL='http://127.0.0.1:6001'
export ADOBE_API_KEY='替换为管理设置中的服务APIKey'
本机服务监听 127.0.0.1;其他电脑无法通过这个地址访问。返回成品地址由服务的公共 URL 配置决定。
认证与 API Key
打开管理设置 → 系统配置 → 账户与安全 → 服务 API Key,填写并保存。Key 与管理员登录密码、Adobe Cookie 不同。
Authorization: Bearer <服务 API Key>也支持 X-API-Key: <服务 API Key>。若同时提供 Bearer 和 X-API-Key,服务优先使用 Bearer;Key 留空时,当前实现不校验服务 API Key。
curl --fail-with-body "$BASE_URL/v1/models" \
-H "Authorization: Bearer $ADOBE_API_KEY"
管理 API 和工作台的 /local-video/* 使用登录后的会话 Cookie,服务 Key 不能代替管理员登录。
查询模型
/v1/models返回 {"object":"list","data":[...]},每条包含 id 和 description。从响应中复制完整模型 ID,时长、画幅和分辨率由该 ID 对应的配置决定。
| 视频模型族 | 说明 |
|---|---|
firefly-veo31-fast-* | Veo 3.1 Fast;工作台使用 4 秒、16:9、720p。 |
firefly-veo31-* / firefly-veo31-ref-* | Veo 标准及参考图模式。 |
firefly-sora2-* / firefly-sora2-pro-* | Sora 视频。 |
firefly-seedance20-* / firefly-seedance20-fast-* | Seedance 2.0 视频与媒体参考。 |
firefly-seedance25-* | Seedance 2.5;4–30 秒(整数)、480p / 720p、六种画幅,可选音频。 |
firefly-gemini-omni-* | Gemini Omni 视频。 |
firefly-kling3-* / firefly-kling-o3-* | Kling 视频与相应参考模式。 |
模型列表代表服务支持的配置;实际可用性取决于账号权限、额度和上游状态。请勿将通配符或 TRAE 的模型 ID 直接传入。
创建视频 API
/v1/chat/completions传入视频模型和提示词。服务从账号池调度账号,生成完成后返回 JSON 及成品 URL。客户端和反向代理需要允许较长的请求等待。
| 字段 | 类型 | 说明 |
|---|---|---|
model | string | 完整视频模型 ID,示例 firefly-veo31-fast-4s-16x9-720p。 |
messages | array | 用户消息;content 可为字符串或包含文字、图片的数组。 |
prompt | string | 未从 messages 提取到提示词时使用的备选字段。 |
generate_audio | boolean | 是否生成音频,示例设为 false;支持情况取决于模型。 |
negative_prompt | string | 可选负向提示词,支持情况取决于模型。 |
stream | boolean | 默认 false;true 时在生成完成后返回 SSE,不提供实时生成进度。 |
seconds 或 size 字段覆盖视频模型配置。不要省略视频模型 ID。cURL:文生视频
curl --fail-with-body --max-time 900 "$BASE_URL/v1/chat/completions" \
-H "Authorization: Bearer $ADOBE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "firefly-veo31-fast-4s-16x9-720p",
"messages": [{"role": "user", "content": "一只猫在窗边看雨,镜头缓慢推近,电影质感"}],
"generate_audio": false,
"stream": false
}' -o response.json
Seedance 2.5
工作台模型下拉框选择 Seedance 2.5;程序调用使用 firefly-seedance25-{时长}s-{画幅}-{分辨率}。支持 4–30 秒、480p / 720p,以及 21x9、16x9、4x3、1x1、3x4、9x16 六种画幅。音频默认关闭,可通过 generate_audio: true 开启;不支持 1080p 和负向提示词。
curl --fail-with-body --max-time 1800 "$BASE_URL/v1/chat/completions" \
-H "Authorization: Bearer $ADOBE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "firefly-seedance25-5s-16x9-720p",
"messages": [{"role": "user", "content": "清晨海边,镜头缓慢推进,写实电影质感"}],
"generate_audio": false,
"stream": false
}' -o response.json
使用与其他模型相同的账号池、代理和任务记录。模型目录已由 Adobe 返回为启用状态;实际生成仍取决于账号权限、地区和额度。此处接入生成模型,视频编辑与扩展模型尚未开放。
成功响应中的成品字段
HTTP 200;以下仅展示用于读取视频的字段。请使用实际响应中的完整 URL。
{
"video_url": "http://127.0.0.1:6001/generated/example.mp4",
"url": "http://127.0.0.1:6001/generated/example.mp4",
"media": {
"url": "http://127.0.0.1:6001/generated/example.mp4",
"mime_type": "video/mp4"
}
}
下载视频
VIDEO_URL=$(python3 -c 'import json; print(json.load(open("response.json"))["video_url"])')
curl --fail --location "$VIDEO_URL" --output video.mp4
成品文件可能受存储清理策略影响,请及时保存。本接口没有返回可用于 /v1/videos/{id} 查询的任务句柄。
图片参考与图像生成
图生视频在 user 消息中加入 image_url。替换示例图片地址为服务端能访问的图片 URL,也可以传 data URL。不同模型的图片数量和用途不同;下面使用一张首帧图。
curl --fail-with-body --max-time 900 "$BASE_URL/v1/chat/completions" \
-H "Authorization: Bearer $ADOBE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "firefly-veo31-fast-4s-16x9-720p",
"messages": [{"role": "user", "content": [
{"type": "text", "text": "保持主体,镜头缓慢推近"},
{"type": "image_url", "image_url": {"url": "https://example.com/replace-with-reference.jpg"}}
]}],
"generate_audio": false,
"stream": false
}'
专用图像 API
需要生成图片时,使用图像模型调用 /v1/images/generations;视频模型不适用于这个路径。
curl --fail-with-body --max-time 900 "$BASE_URL/v1/images/generations" \
-H "Authorization: Bearer $ADOBE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"firefly-image4-ultra","prompt":"清晨山谷,写实电影质感"}'
Python 调用与下载
先安装 requests,并设置前面的 BASE_URL 和 ADOBE_API_KEY 环境变量。示例只提交一次;超时后请先检查请求日志,不要盲目循环重试。
import os
from pathlib import Path
import requests
base = os.environ["BASE_URL"].rstrip("/")
headers = {"Authorization": "Bearer " + os.environ["ADOBE_API_KEY"]}
response = requests.post(
base + "/v1/chat/completions",
headers=headers,
json={
"model": "firefly-veo31-fast-4s-16x9-720p",
"messages": [{"role": "user", "content": "一只猫在窗边看雨,镜头缓慢推近"}],
"generate_audio": False,
"stream": False,
},
timeout=(15, 900),
)
response.raise_for_status()
video_url = response.json()["video_url"]
with requests.get(video_url, stream=True, timeout=(15, 120)) as video:
video.raise_for_status()
with Path("video.mp4").open("wb") as output:
for chunk in video.iter_content(1024 * 1024):
output.write(chunk)
print("已保存 video.mp4")
工作台任务 API
/video 工作台是本地生成 API 的异步调用界面。服务端实际调用 POST /v1/chat/completions,与程序调用共用模型处理、账号池调度、额度检查、代理线路、生成轮询、成品存储和请求日志。工作台只额外保留异步任务及提交去重;API Key 保留在服务端,页面使用管理员会话。
| 方法与路径 | 作用 |
|---|---|
POST /api/v1/auth/login | 提交 username、password,保存会话 Cookie。 |
GET /local-video/models | 返回模型、画幅、分辨率、时长和音频选项。账号由 API 账号池自动选择。 |
POST /local-video/jobs | 首次提交返回 202;相同编号和内容返回原任务。 |
GET /local-video/jobs | 返回 jobs 数组,按 job_id 查找自己提交的任务。 |
POST /local-video/jobs/{job_id}/check | 读取 API 最新记录;有完整原任务信息时核查上游状态,不重新提交。 |
GET /local-video/jobs/{job_id}/content | 完成后读取 MP4;需要同一个管理员会话。 |
1. 登录并获取模型
将管理员登录信息写入本机权限受限的 admin-login.json:{"username":"你的管理员账号","password":"你的管理员密码"}。Cookie 文件同样应妥善保存。
umask 077
curl --fail-with-body "$BASE_URL/api/v1/auth/login" \
-H "Content-Type: application/json" \
--data-binary @admin-login.json -c adobe-session.cookies
curl --fail-with-body "$BASE_URL/local-video/models" \
-b adobe-session.cookies
2. 创建任务
id 为 ui- 加 UUID;account 省略或设为 auto;提示词长度 1–2000 字符。model 使用完整模型 ID,画幅、分辨率、时长必须与其匹配。默认仍为 Veo 3.1 Fast、4 秒、16:9、720p、无音频。
python3 - > local-video-request.json <<'PY'
import json, uuid
print(json.dumps({
"id": "ui-" + str(uuid.uuid4()),
"account": "auto",
"model": "firefly-veo31-fast-4s-16x9-720p",
"aspect_ratio": "16:9",
"resolution": "720p",
"duration": 4,
"generate_audio": False,
"prompt": "一只猫在窗边看雨,镜头缓慢推近"
}, ensure_ascii=False))
PY
curl --fail-with-body "$BASE_URL/local-video/jobs" \
-b adobe-session.cookies -H "Content-Type: application/json" \
--data-binary @local-video-request.json
3. 查询与下载
每 4 秒左右读取任务列表。仅在对应任务的 status 为 completed 且有 result_url 时下载。
curl --fail-with-body "$BASE_URL/local-video/jobs" \
-b adobe-session.cookies
# 确认任务 completed 后执行:
JOB_ID=$(python3 -c 'import json; print(json.load(open("local-video-request.json"))["id"])')
curl --fail --location "$BASE_URL/local-video/jobs/$JOB_ID/content" \
-b adobe-session.cookies --output video.mp4
| 状态 | 含义 |
|---|---|
authenticating | 等待调用本地 API,尚未分配账号。 |
prepared / submitted / polling | 准备提交、已提交或查询结果中。 |
completed | 成品已保存,可以下载。 |
failed | 读取 message 确认失败原因。 |
outcome_unknown | 提交或结果待核查,不能据此认定未扣费或直接重提。 |
id 去重;相同 id 搭配不同模型、音频参数或提示词 返回 409。网络中断时保留原请求文件和 id,不要重新生成 UUID。同步 /v1/chat/completions 没有此幂等保证,也不支持用 Idempotency-Key 查询或复用任务。错误、容量与重试
| HTTP 状态 / 情况 | 处理方式 |
|---|---|
| 400 / 422 | 检查提示词、完整模型 ID、JSON 类型与参考素材。 |
| 401 | 服务 API 检查 Key;管理 API 检查登录会话。生成时也可能是上游账号 Token 失效。 |
| 403 | 检查来源限制、账号权限和响应中的错误说明。 |
| 404 | 确认接口路径;工作台成品接口在视频未就绪时也返回 404。 |
| 409 | 工作台请求编号已用于其他内容,检查原任务。 |
| 429 | 账号额度或并发受限,查看号池及错误详情。 |
| 502 / 503 / 超时 | 可能是上游、代理、队列或结果查询异常。先查日志与任务记录;响应丢失不代表没有生成。 |
同步生成错误通常在 error.message / error.type / error.code;部分鉴权、校验及工作台错误在 detail。
/api/v1/video-pool-capacity使用服务 API Key 读取视频账号池容量;提交节奏可通过 GET /api/v1/video-submit-status 查看。
curl --fail-with-body "$BASE_URL/api/v1/video-pool-capacity" \
-H "Authorization: Bearer $ADOBE_API_KEY"
操作前可在号池监控检查账号状态,在管理设置 → 请求日志核查同步生成结果。文档浏览、复制示例不会自动提交生成。