Adobe Firefly Services 确实提供了一条公开的视频生成端点,只是它写在 Adobe 开发者文档里,而不是任何显眼的公告里。Firefly API 参考页上有一个叫 Generate video 的 H2,一句话定义是 Generate a five second video using a text prompt.,端点为 post /v3/videos/generateFirefly 视频主题页讲的是模型侧,本文讲的是接口侧。

Firefly 视频 API 到底有没有公开接口?

有。参考页的版本号写作 Firefly API (3.0.0)Generate video 与几条图像接口并列在一起。这一条只给出一个端点、一个必填请求头、六个请求体字段——整个接口面就这么多。

真正的坑不在有没有,而在能不能搜到。拿关键词去搜,首屏先出现的往往是另一套 Adobe 接口,而那套接口从头到尾都不生成视频。停在第一条结果上的开发者,很容易得出「Adobe 没有文生视频接口」这个错误结论。

Firefly API 与 Audio/Video Firefly Services 的区别

这是两套接口、两个主机名,把它们混用是最常见的第一错。

官方 Audio/Video Firefly Services 页头:横幅上铺满彩色分层声波
Adobe
层次Firefly APIAudio/Video Firefly Services
主机firefly-api.adobe.ioaudio-video-api.adobe.io
版本前缀/v3/v1
任务性质生成处理
官方列出的服务Generate video、若干图像接口Dynamic Graphics Render、Reframe、TLS、Text to Speech、Text to Avatar
鉴权方式x-api-key 加访问令牌x-api-keyAuthorization: Bearer

为什么处理类接口不等于生成

把五个服务的描述逐条读完,没有一个能产出视频片段。Dynamic Graphics Render 用 After Effects 模板批量生成变体,Reframe 对已有素材重新裁切构图,TLS 转写并配音,Text to Speech 合成旁白,Text to Avatar 让虚拟人开口。它们都以已有媒体为输入。如果你的流水线是「给提示词、拿视频」,要的是 Firefly API,不是这一套。

调用 Generate Video 端点

请求是一个带 JSON 请求体的 POSTx-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 响应体里是 cancelUrljobIdstatusUrl。参考页给出的状态地址示例是 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:91920w x 1080h
16:91280w x 720h
16:9960w x 540h
9:161080w x 1920h
9:16720w x 1280h
9:16540w x 960h
1:11080w x 1080h
1:1720w x 720h
1:1540w 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 访问令牌。

调用是同步的吗? 不是。返回 202cancelUrljobIdstatusUrl,之后轮询状态地址。任务耗时多久官方未公布。

时长和种子数量能改吗? 端点定义就是五秒,请求体里没有时长字段;种子只支持一个。两项都不开放。

有公开报价吗? 没有。单次调用价格官方未公布,第三方转售站的报价不是官方口径。

先把端点跑通,把 video1_standard 放进配置,再写带退避的轮询,最后才谈功能。分步操作教程从界面侧讲了同一个模型,Firefly Image 主题页讲的是 Adobe 另一条生成接口。