何时保存

文生图 的同步响应包含图片结果。收到响应后,先保存 response.json,再下载或解码。无需任务查询接口,也不要把生成请求重新提交来下载同一结果。

生成接口使用本站 API Key。图片 URL 是独立下载地址,下载时不附加 Authorization,也不发送本站 API Key。Base64 解码只在本地进行。

响应字段

字段与类型填写规则、默认值与限制
data;array响应顶层;必有数组,含本次图片结果。业务成功还须至少有一个可读取的图片对象;遍历全部结果,不能假定数量或顺序外的含义。
data[].url;string / null响应数组元素;可缺省或 null。url 模式的临时下载链接;收到后及时下载,不能作为永久存储。
data[].b64_json;string / null响应数组元素;可缺省或 null。b64_json 模式的原始 Base64;先解码再保存,不能当 URL。
data[].mime_type;string / null响应数组元素;可缺省或 null。图片媒体类型,如 image/png、image/jpeg、image/webp;缺失时检查文件字节,不要固定写 .jpg。
usage;null / object响应顶层;可缺省或 null。上游用量信息,具体子字段依模型而异;不要据此直接计算本站人民币费用,账单以控制台为准。

以下为字段结构示意,example.invalid 是不可下载的占位地址,实际运行使用你的响应原文:

{
  "data": [
    {
      "url": "https://example.invalid/generated-image.png",
      "mime_type": "image/png"
    }
  ]
}

Base64 模式会在对应元素中提供 b64_json;它是不带 data:image/...;base64, 前缀的 Base64 字符串。mime_type 可能缺省;不要假定所有结果都是 JPEG。usage 的缺省不代表免费,厂商用量或美元计量不能直接当成本站账单。

保存所有图片

以下示例读取上一步的 response.json,自动区分 URL 和 Base64。cURL 版本需 Bash、jq 和 base64,输出中性的 .image 扩展名,使用前应检查文件真实格式;Python 需 requests,Node.js 需 20+ 并保存为 .mjs,这两版会识别 PNG/JPEG/WebP 字节并使用对应扩展名。

示例不会再次生成图片;同名 output-* 文件会覆盖,请在独立目录运行或改为业务唯一文件名。URL 下载遇到重定向会停止,请校验新的 HTTPS 地址后再下载。

set -euo pipefail
jq -e '(.error | not) and (.data | type == "array" and length > 0)' response.json > /dev/null
count=$(jq '.data | length' response.json)
for ((index=0; index<count; index++)); do
  filename="output-$((index + 1)).image"
  if jq -e --argjson i "$index" '.data[$i].b64_json | type == "string" and length > 0' response.json > /dev/null; then
    # Linux / Git Bash 使用 --decode;macOS 可改为 -D。
    jq -r --argjson i "$index" '.data[$i].b64_json' response.json | base64 --decode > "$filename"
  else
    url=$(jq -er --argjson i "$index" '.data[$i].url | select(type == "string" and length > 0)' response.json)
    # 不发送 API Key,不自动跟随重定向。
    status=$(curl --silent --show-error --fail-with-body --proto '=https' \
      --connect-timeout 30 --max-time 120 --output "$filename" --write-out '%{http_code}' -- "$url")
    [[ "$status" == 2?? ]] || { echo "下载未成功:HTTP $status" >&2; exit 1; }
  fi
  [[ -s "$filename" ]] || { echo "图片文件为空" >&2; exit 1; }
  echo "$filename"
done

有效期与异常处理

URL 是临时地址,收到后应及时保存;本文不承诺固定有效小时数。应用应存自己的图片文件位置,避免把临时链接当作永久素材地址。签名 URL 和 Base64 均可能包含可访问的业务素材,请勿写入公开日志。

若 JSON 已返回而下载失败,先重试同一下载地址;过期时保留脱敏错误、模型和调用时间联系本站支持,不要自动重新生成。Base64 无效、MIME 与字节不符或下载内容为 HTML/JSON 时,不要将其当图片继续处理。

客户端断线不等于生成取消,本流程没有可推荐的查询或取消接口。排错见 常见错误,厂商结构参考:图片生成指南。