Firefly 控制台 管理登录

API 文档

模型、鉴权、视频创建与调用示例

ADOBE FIREFLY · LOCAL API

从创建视频到程序调用

直接使用视频工作台选择模型、填写提示词并查看生成记录;服务端程序使用服务 API Key 调用统一生成接口。

Base URLhttp://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/jobs
GET /local-video/jobs
管理员会话 Cookie
当前视频生成 API 为 /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 配置决定。

01

认证与 API Key

打开管理设置 → 系统配置 → 账户与安全 → 服务 API Key,填写并保存。Key 与管理员登录密码、Adobe Cookie 不同。

HEADERAuthorization: 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 不能代替管理员登录。

02

查询模型

GET/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 直接传入。

03

创建视频 API

POST/v1/chat/completions

传入视频模型和提示词。服务从账号池调度账号,生成完成后返回 JSON 及成品 URL。客户端和反向代理需要允许较长的请求等待。

字段类型说明
modelstring完整视频模型 ID,示例 firefly-veo31-fast-4s-16x9-720p。
messagesarray用户消息;content 可为字符串或包含文字、图片的数组。
promptstring未从 messages 提取到提示词时使用的备选字段。
generate_audioboolean是否生成音频,示例设为 false;支持情况取决于模型。
negative_promptstring可选负向提示词,支持情况取决于模型。
streamboolean默认 false;true 时在生成完成后返回 SSE,不提供实时生成进度。
视频时长、分辨率和画幅按模型 ID 选择;此入口不使用 TRAE 的 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} 查询的任务句柄。

04

图片参考与图像生成

图生视频在 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":"清晨山谷,写实电影质感"}'
05

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")
06

工作台任务 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 查询或复用任务。
07

错误、容量与重试

HTTP 状态 / 情况处理方式
400 / 422检查提示词、完整模型 ID、JSON 类型与参考素材。
401服务 API 检查 Key;管理 API 检查登录会话。生成时也可能是上游账号 Token 失效。
403检查来源限制、账号权限和响应中的错误说明。
404确认接口路径;工作台成品接口在视频未就绪时也返回 404。
409工作台请求编号已用于其他内容,检查原任务。
429账号额度或并发受限,查看号池及错误详情。
502 / 503 / 超时可能是上游、代理、队列或结果查询异常。先查日志与任务记录;响应丢失不代表没有生成。

同步生成错误通常在 error.message / error.type / error.code;部分鉴权、校验及工作台错误在 detail。

GET/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"

操作前可在号池监控检查账号状态,在管理设置 → 请求日志核查同步生成结果。文档浏览、复制示例不会自动提交生成。