文档目录

Task result API

获取任务详情

通过任务 ID 获取图片、视频或语音任务的当前状态、错误信息和生成结果。

接口

项目内容
MethodGET
Path/v1/aigc/tasks/:id
:id创建任务时响应中的 id,必须使用 URL 路径编码。
AuthorizationBearer $FIREFLY_API_KEY,使用创建任务的同一把个人 API Key。

运行前设置 FIREFLY_API_KEY 和创建任务返回的 FIREFLY_TASK_ID。代码中的请求地址会自动使用当前站点对应的 API 地址。

package main

import (
  "fmt"
  "io"
  "net/http"
  "os"
)

func main() {
  taskID := os.Getenv("FIREFLY_TASK_ID")
  if taskID == "" {
    panic("请先设置 FIREFLY_TASK_ID")
  }
  request, err := http.NewRequest(http.MethodGet, "https://api.fireflyfusion.ai/v1/aigc/tasks/"+taskID, nil)
  if err != nil {
    panic(err)
  }
  request.Header.Set("Authorization", "Bearer "+os.Getenv("FIREFLY_API_KEY"))

  response, err := http.DefaultClient.Do(request)
  if err != nil {
    panic(err)
  }
  defer response.Body.Close()
  body, err := io.ReadAll(response.Body)
  if err != nil {
    panic(err)
  }
  if response.StatusCode < 200 || response.StatusCode >= 300 {
    fmt.Fprintln(os.Stderr, string(body))
    os.Exit(1)
  }
  fmt.Println(string(body))
}

响应处理

任务状态客户端处理
queued任务已创建但尚未开始,等待至少 2 秒后查询同一个任务 ID。
running任务正在生成,等待至少 2 秒后继续查询同一个任务 ID。
succeededoutput 数组读取结果。一个任务可能返回多个结果项。
failed读取 error.codeerror.message,根据 error.retryable 决定是否重试。
不要只判断 HTTP 状态码

任务查询成功返回 HTTP 200 只代表“查询成功”。是否生成成功必须判断响应中的 status

响应字段

字段类型说明
idstring<uuid>任务 ID。
objectstring固定为 aigc.task
typestring enumimagevideoaudio
modelstring客户提交的公共模型 ID。
statusstring enumqueuedrunningsucceededfailed
status_urlstring<https-uri>该任务的完整查询地址。
outputarray<object>成功时的结果数组;每项包含 typeurl
output[].typestring enumimagevideoaudio
output[].urlstring<https-uri>生成结果的完整 URL。
errorobject | null失败时返回错误对象,成功时为 null
error.codestring稳定错误码。
error.messagestring可读的失败原因。
error.phasestring enum失败所处的处理阶段。
error.retryableboolean是否适合在修正问题或等待后重新提交。
created_atstring<date-time>任务创建时间。
updated_atstring<date-time>任务最后更新时间。
JSON 响应结构
{
  "id": "<task_id>",
  "object": "aigc.task",
  "type": "image | video | audio",
  "model": "<public_model_id>",
  "status": "queued | running | succeeded | failed",
  "status_url": "https://api.fireflyfusion.ai/v1/aigc/tasks/<task_id>",
  "created_at": "2026-08-18T08:00:00Z",
  "updated_at": "2026-08-18T08:00:08Z",
  "output": [
    { "type": "image", "url": "https://..." }
  ],
  "error": null
}

轮询建议

  1. 提交任务后保存 id,不要创建新的任务来代替查询。
  2. Retry-After 是 HTTP 响应 Header,不在 JSON 正文中。看到 Retry-After: 2 时,等待至少 2 秒,再查询同一个任务 ID。
  3. 如果响应中没有 Retry-After,也默认每隔 2 秒查询一次,不要连续快速请求。
  4. 进入 succeededfailed 后停止轮询。

可选:使用回调

callback_url 填在创建任务请求的 JSON Body 顶层,与 model 同级,不要放进 contentimages 或其他参数对象中。图片、视频和语音创建接口都支持这个可选字段。

{
  "model": "模型文档中的可调用模型 ID",
  "prompt": "生成内容说明",
  "callback_url": "https://customer.example.com/firefly/callback"
}

任务进入 succeededfailed 后,平台会向该地址发送 POST,请求体为完整任务对象。

项目规则
协议支持 httphttps
请求方法固定为 POST,Content-Type 为 application/json
触发时机只在 succeededfailed 时发送。
失败处理平台最多重试 3 次;回调失败不改变任务状态,仍可使用本页 GET 接口查询。
建议保留 GET 查询

回调只是主动通知,客户服务应使用任务 ID 做幂等处理,并在需要时通过 GET 接口重新读取任务详情。