图片

把图片发给任何能读图的模型,并用所有图片模型生成图片。

图片在同一个密钥和余额下双向可用:模型能读取你发送的图片,图片模型能生成新图片。

把图片发给模型

一半以上的模型能读取图片。把图片作为消息的一部分发送,按各个格式自己的结构:

{ "type": "image_url", "image_url": { "url": "https://example.com/chart.png" } }
  • 链接或内嵌。 可以发 https 链接,也可以把图片本身作为 data:image/png;base64,... URL 发送(在 Messages 上用 base64 来源)。请求体最大 4 MB,而 base64 会让文件变大三分之一,所以大文件请用链接发送:如果图片不在网上,可以上传它。
  • 类型。 PNG、JPEG、WebP 和 GIF。任何其他内嵌类型,比如 HEIC、SVG 或 TIFF,都会返回 400 image_type_not_served。
  • 哪些模型。 在 GET /models 中,architecture.input_modalities 包含 image 的模型。把图片发给不能读图的模型,并且没有能读图的备用模型时,会在预留任何费用之前返回 400 model_no_image_input。
  • 费用。 图片按模型的价格作为输入 Token 读取,如果模型有单张图片价格(pricing.image),还要加上这部分费用。预留时每张图片按 8,000 Token 计算。

如果图片太大无法内嵌发送,或者只存在于你的电脑上,可以申请一个上传链接,把图片直接发到存储,然后把它的链接交给模型:

# 1. A link to upload to, for this type and this exact size.
curl https://binference.io/api/v1/uploads \
  -H "Authorization: Bearer $BINF_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{\"content_type\": \"image/png\", \"size\": $(wc -c < photo.png)}"

# 2. The image's bytes, with the Content-Type you named.
curl -X PUT "$UPLOAD_URL" -H "Content-Type: image/png" --data-binary @photo.png

然后把第一个回答中的 url 作为图片发送,任何格式都可以,发给任何能读图的模型。图片直接进入存储,从不经过 API,所以 4 MB 的请求体限制不适用。

  • 每张最大 20 MB:PNG、JPEG、WebP 或 GIF。上传的文件必须与你申请时的类型和确切大小一致,否则存储会拒绝。
  • 时效。 上传链接 10 分钟内有效。图片链接 24 小时内有效,之后图片会被删除。
  • 私密。 每张图片以随机名称存放在你的 Agent 下,只有它自己的签名链接才能读取。
  • 免费, 每个 Agent 每天最多 200 次上传,前提是 Agent 有可花的额度。
  • 通过 MCP, Agent 可以用 create_upload 自己完成这些步骤。

生成图片

POST /images 可以用任意图片模型根据提示词生成图片:GPT Image、Gemini、FLUX、Recraft、Seedream、Qwen、Grok 等等。GET /images/models 会列出这些模型、每个模型接受的字段以及价格。

curl https://binference.io/api/v1/images \
  -H "Authorization: Bearer $BINF_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "recraft/recraft-v4.1-flash",
    "prompt": "A small red lighthouse on a rock at dusk, flat illustration"
  }'

每张图片以 base64 形式在 data[].b64_json 中返回,附带它的 media_type,usage.cost 则说明这次调用扣了多少费用。

  • 生成多张。 n 可以在一次调用中生成多张,数量以模型允许的为准(parameters.n)。
  • 编辑或参考图片。 在 reads_images: true 的模型上,把图片放在 input_references 中发送,链接或内嵌都可以。
  • 流式输出。 在 streaming: true 的模型上,stream: true 会在图片生成过程中发送不完整的图片,最后发送完成的图片。流式调用只生成一张图片。
  • 先检查。 n、resolution、quality 和其他列出的字段会在预留任何费用之前对照模型检查,所以模型不接受的值会免费返回 400。

十张 4K 图片的 base64 加起来远超 100 MB。加上 "response_format": "url",每张图片都会被存储并以链接形式返回,这样回答就能保持很小:

{
  "created": 1790809771,
  "data": [
    {
      "url": "https://...r2.cloudflarestorage.com/binference-images/results/42/...png?X-Amz-...",
      "media_type": "image/png",
      "expires_at": "2026-10-08T12:00:00.000Z"
    }
  ],
  "usage": { "cost": 0.0084 }
}

每个链接 7 天内有效,之后图片会被删除。链接免费,一个 Agent 同时最多可以保存 5 GB 的链接图片。链接只随完整回答返回,不支持 stream。如果存储失败,你会改为收到 base64 图片,绝不会什么都收不到。

费用

每个图片模型都会列出它的价格项:按张、按百万像素或按 Token 计价,有些只适用于某个档位(2k)或某个质量(low_1k)。你支付生成的费用,再加上和每次调用相同的服务费,usage.cost 会显示总额。生成失败不收费。

调用会预留最坏情况的费用:它请求的每一张图片,按最贵的服务商的价格,以及它指定的 resolution 和 quality 计算。如果不指定,就按模型提供的最大档位和最高质量预留,所以设置它们可以减少预留。

通过对话生成

少数对话模型也能画图,比如 Gemini 图片模型和 GPT-5 Image。在 Chat Completions 上加上 modalities,图片会以 data: URL 的形式在 message.images 中返回。在 Responses 上,图片会以 image_generation_call 项返回。

{
  "model": "google/gemini-3.1-flash-image",
  "modalities": ["image", "text"],
  "max_tokens": 4096,
  "messages": [{ "role": "user", "content": "Draw a small green cactus, flat icon." }]
}

它们按图片 Token 计价(GET /models 中的 pricing.image_output),max_tokens 和任何调用一样限制预留金额。

图片工具

在对话中以工具形式提供的图片生成,比如 OpenAI 的 image_generation,这里不提供:由模型决定生成多少张图片,所以费用没有可以预留的上限。如果客户端只是把它列在工具中(Codex 就是这样),它会被从请求中去掉。要生成图片,请调用 POST /images。

本页目录