Adobe Firefly Services 确实提供了一条公开的视频生成端点,只是它写在 Adobe 开发者文档里,而不是任何显眼的公告里。Firefly API 参考页上有一个叫 Generate video 的 H2,一句话定义是 Generate a five second video using a text prompt.,端点为 post /v3/videos/generate。Firefly 视频主题页讲的是模型侧,本文讲的是接口侧。
Firefly 视频 API 到底有没有公开接口?
有。参考页的版本号写作 Firefly API (3.0.0),Generate video 与几条图像接口并列在一起。这一条只给出一个端点、一个必填请求头、六个请求体字段——整个接口面就这么多。
真正的坑不在有没有,而在能不能搜到。拿关键词去搜,首屏先出现的往往是另一套 Adobe 接口,而那套接口从头到尾都不生成视频。停在第一条结果上的开发者,很容易得出「Adobe 没有文生视频接口」这个错误结论。
Firefly API 与 Audio/Video Firefly Services 的区别
这是两套接口、两个主机名,把它们混用是最常见的第一错。

| 层次 | Firefly API | Audio/Video Firefly Services |
|---|---|---|
| 主机 | firefly-api.adobe.io | audio-video-api.adobe.io |
| 版本前缀 | /v3 | /v1 |
| 任务性质 | 生成 | 处理 |
| 官方列出的服务 | Generate video、若干图像接口 | Dynamic Graphics Render、Reframe、TLS、Text to Speech、Text to Avatar |
| 鉴权方式 | x-api-key 加访问令牌 | x-api-key 加 Authorization: Bearer |
为什么处理类接口不等于生成
把五个服务的描述逐条读完,没有一个能产出视频片段。Dynamic Graphics Render 用 After Effects 模板批量生成变体,Reframe 对已有素材重新裁切构图,TLS 转写并配音,Text to Speech 合成旁白,Text to Avatar 让虚拟人开口。它们都以已有媒体为输入。如果你的流水线是「给提示词、拿视频」,要的是 Firefly API,不是这一套。
调用 Generate Video 端点
请求是一个带 JSON 请求体的 POST。x-model-version 请求头必填,官方只给出一个取值:video1_standard。
curl -X POST 'https://firefly-api.adobe.io/v3/videos/generate' \
-H "Authorization: Bearer $ADOBE_ACCESS_TOKEN" \
-H "x-api-key: $ADOBE_CLIENT_ID" \
-H 'x-model-version: video1_standard' \
-H 'Content-Type: application/json' \
-d '{
"bitRateFactor": 18,
"image": { "conditions": [] },
"prompt": "A lone figure stands in the middle of a vast desert, looking up at the sky, with a sense of awe and wonder.",
"seeds": [1842533538],
"sizes": [{ "height": 720, "width": 720 }],
"videoSettings": {
"cameraMotion": "camera pan left",
"promptStyle": "anime",
"shotAngle": "aerial shot",
"shotSize": "close-up shot"
}
}'
六个请求字段里的关键约束
bitRateFactor 是 0 到 63 的整数,默认 18,参考页建议落在 17–23 之间,取 0 表示无损。image 提供关键帧,作为生成视频的首帧或尾帧做引导。prompt 是文本描述,官方说写得越长越好。seeds 是数组,但目前只支持一个种子。sizes 承载输出尺寸。videoSettings 把运镜、提示词风格、机位角度与景别打包在一起。
这六个字段里有三个坑。seeds 写多了不会报错也不会生效,官方写明当前只支持一个;image 只做首帧或尾帧引导,不会变成「参考视频」;请求体里没有时长字段——视频长度在 API 层不是可调参数,而是端点定义的一部分。
轮询异步 status URL
视频任务是异步的。提交请求返回 202 Accepted 和三个字符串,之后靠轮询等任务落地。
# 1. 提交任务并取出状态地址。
STATUS_URL=$(curl -s -X POST 'https://firefly-api.adobe.io/v3/videos/generate' \
-H "Authorization: Bearer $ADOBE_ACCESS_TOKEN" \
-H "x-api-key: $ADOBE_CLIENT_ID" \
-H 'x-model-version: video1_standard' \
-H 'Content-Type: application/json' \
-d '{"prompt":"A slow aerial pass over a desert at sunrise","sizes":[{"height":1080,"width":1920}]}' \
| jq -r .statusUrl)
# 2. 轮询状态地址,直到任务不再处于进行中。
while true; do
RESULT=$(curl -s "$STATUS_URL" \
-H "Authorization: Bearer $ADOBE_ACCESS_TOKEN" \
-H "x-api-key: $ADOBE_CLIENT_ID")
[ "$(echo "$RESULT" | jq -r .status)" = "in progress" ] || break
sleep 10
done
echo "$RESULT" | jq .
202 响应体里是 cancelUrl、jobId、statusUrl。参考页给出的状态地址示例是 https://firefly-api.adobe.io/v3/status/job-abc123,一句话同时确认了主机名与 /v3 前缀。把 jobId 记进日志,cancelUrl 留给「排队中的任务不想等了」这种情况。轮询间隔要留足,因为任务实际耗时官方没有公布。
处理类 API:转写与配音
转写和配音很有用,只是它们不生成内容。TLS 指南给出两个端点和一个三步流程:转写、翻译、配音,配完之后还能选择做 AI 口型同步。
# 需要有效的访问令牌与 client ID。
# 1. 转写源媒体。
curl --location 'https://audio-video-api.adobe.io/v1/transcribe' \
--header 'Authorization: Bearer <your_access_token>' \
--header 'Content-Type: application/json' \
--header 'x-api-key: <your_client_id>' \
--data '{ "video": { "source": { "url" : "<your_presigned_url>" }, "mediaType": "video/mp4" } }'
# 2. 对同一份素材做配音。
curl --location 'https://audio-video-api.adobe.io/v1/dub' \
--header 'Authorization: Bearer <your_access_token>' \
--header 'Content-Type: application/json' \
--header 'x-api-key: <your_client_id>' \
--data '{ "video": { "source": { "url" : "<your_presigned_url>" } } }'
媒体以预签名 URL 的形式传进来,指向你自己控制的存储。有一条官方限制值得提前设计进去:Transcribe 无法对已有转写稿再做一次翻译,翻译只会与转写在同一次调用里发生。
限流、画幅,以及官方没有公布的部分
限流按组织计算:每分钟 4 次(4 RPM),每天 9,000 次(9,000 RPD)。超过任一条会返回 HTTP 429,官方给的处置是用 retry-after 响应头做重试,或者走指数退避;想要更高额度得联系客户经理。
可用的输出尺寸是三个画幅,每个画幅三档。
| 画幅 | 尺寸 |
|---|---|
| 16:9 | 1920w x 1080h |
| 16:9 | 1280w x 720h |
| 16:9 | 960w x 540h |
| 9:16 | 1080w x 1920h |
| 9:16 | 720w x 1280h |
| 9:16 | 540w x 960h |
| 1:1 | 1080w x 1080h |
| 1:1 | 720w x 720h |
| 1:1 | 540w x 540h |
这三档正好对上网页端的 1080p、720p、540p,所以在界面和 API 之间来回切的时候不需要重新换算尺寸。
还有几件事官方没有给出答案。API 调用的单价在参考页与用法说明里都没有出现——官方未公布。任务实际耗时、超时上限、并发上限、申请提额的具体流程,以及未来会不会出现时长参数,同样没有公布。地区可用性则取决于地理位置、用户类型与合规要求,官方措辞是「可能因地区而异」。
另外记一句:Firefly Video 模型的正式可用(GA)是 2025 年 4 月 24 日宣布的。有些第三方目录把日期写得不一样,还自己编了端点别名;那些不是 Adobe 的口径,报价也是它们自己的。
常见问题
Adobe 有文生视频接口吗? 有。Firefly API 里的 post /v3/videos/generate,官方定义为用文本提示词生成一条五秒视频。
为什么我搜到的是音视频那一套 API? 因为那套接口对这个关键词的相关性更高,所以排得更前。它做的是转写、配音、重构画幅、语音合成与虚拟人,五个服务没有一个能生成视频。
哪个请求头是必填的? x-model-version,官方只给出 video1_standard 一个取值。鉴权是 x-api-key 加 Bearer 访问令牌。
调用是同步的吗? 不是。返回 202 与 cancelUrl、jobId、statusUrl,之后轮询状态地址。任务耗时多久官方未公布。
时长和种子数量能改吗? 端点定义就是五秒,请求体里没有时长字段;种子只支持一个。两项都不开放。
有公开报价吗? 没有。单次调用价格官方未公布,第三方转售站的报价不是官方口径。
先把端点跑通,把 video1_standard 放进配置,再写带退避的轮询,最后才谈功能。分步操作教程从界面侧讲了同一个模型,Firefly Image 主题页讲的是 Adobe 另一条生成接口。