图片
把图片发给任何能读图的模型,并用所有图片模型生成图片。
图片在同一个密钥和余额下双向可用:模型能读取你发送的图片,图片模型能生成新图片。
把图片发给模型
一半以上的模型能读取图片。把图片作为消息的一部分发送,按各个格式自己的结构:
{ "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。
用链接代替 base64
十张 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。