真实计费(省略 imageSize):使用 gemini-2.5-flash-image 生成图片
curl --request POST \
--url https://api.yingtu.ai/v1beta/models/gemini-2.5-flash-image:generateContent \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"contents": [
{
"role": "user",
"parts": [
{
"text": "白色哑光背景上的单根黄色陶瓷香蕉,柔和影棚光线,不要文字。"
}
]
}
]
}
'import requests
url = "https://api.yingtu.ai/v1beta/models/gemini-2.5-flash-image:generateContent"
payload = { "contents": [
{
"role": "user",
"parts": [{ "text": "白色哑光背景上的单根黄色陶瓷香蕉,柔和影棚光线,不要文字。" }]
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({contents: [{role: 'user', parts: [{text: '白色哑光背景上的单根黄色陶瓷香蕉,柔和影棚光线,不要文字。'}]}]})
};
fetch('https://api.yingtu.ai/v1beta/models/gemini-2.5-flash-image:generateContent', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"candidates": [
{
"content": {
"role": "model",
"parts": [
{
"inlineData": {
"mimeType": "image/png",
"data": "BASE64_IMAGE_DATA"
}
}
]
},
"finishReason": "STOP",
"index": 0
}
],
"usageMetadata": {
"promptTokenCount": 37,
"candidatesTokenCount": 1846,
"totalTokenCount": 1883,
"promptTokensDetails": [
{
"modality": "TEXT",
"tokenCount": 37
}
],
"candidatesTokensDetails": [
{
"modality": "IMAGE",
"tokenCount": 1680
}
]
},
"modelVersion": "gemini-2.5-flash-image",
"responseId": "response_example"
}{
"error": {
"message": "<string>",
"type": "invalid_request_error",
"param": "<string>",
"code": "insufficient_user_quota"
}
}{
"error": {
"message": "<string>",
"type": "invalid_request_error",
"param": "<string>",
"code": "insufficient_user_quota"
}
}{
"error": {
"message": "Insufficient balance for this request",
"type": "new_api_error",
"param": "",
"code": "insufficient_user_quota"
}
}{
"error": {
"message": "Request body exceeds the current limit",
"type": "new_api_error",
"param": "",
"code": "read_request_body_failed"
}
}{
"error": {
"message": "<string>",
"type": "invalid_request_error",
"param": "<string>",
"code": "insufficient_user_quota"
}
}{
"error": {
"message": "<string>",
"type": "invalid_request_error",
"param": "<string>",
"code": "insufficient_user_quota"
}
}Gemini 2.5 Flash Image
Gemini 2.5 Flash Image 调用示例
复制 Gemini 2.5 Flash Image API 示例,完成同步生成、幂等异步任务、参考图编辑和按 MIME 保存响应。
POST
/
v1beta
/
models
/
gemini-2.5-flash-image:generateContent
真实计费(省略 imageSize):使用 gemini-2.5-flash-image 生成图片
curl --request POST \
--url https://api.yingtu.ai/v1beta/models/gemini-2.5-flash-image:generateContent \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"contents": [
{
"role": "user",
"parts": [
{
"text": "白色哑光背景上的单根黄色陶瓷香蕉,柔和影棚光线,不要文字。"
}
]
}
]
}
'import requests
url = "https://api.yingtu.ai/v1beta/models/gemini-2.5-flash-image:generateContent"
payload = { "contents": [
{
"role": "user",
"parts": [{ "text": "白色哑光背景上的单根黄色陶瓷香蕉,柔和影棚光线,不要文字。" }]
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({contents: [{role: 'user', parts: [{text: '白色哑光背景上的单根黄色陶瓷香蕉,柔和影棚光线,不要文字。'}]}]})
};
fetch('https://api.yingtu.ai/v1beta/models/gemini-2.5-flash-image:generateContent', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"candidates": [
{
"content": {
"role": "model",
"parts": [
{
"inlineData": {
"mimeType": "image/png",
"data": "BASE64_IMAGE_DATA"
}
}
]
},
"finishReason": "STOP",
"index": 0
}
],
"usageMetadata": {
"promptTokenCount": 37,
"candidatesTokenCount": 1846,
"totalTokenCount": 1883,
"promptTokensDetails": [
{
"modality": "TEXT",
"tokenCount": 37
}
],
"candidatesTokensDetails": [
{
"modality": "IMAGE",
"tokenCount": 1680
}
]
},
"modelVersion": "gemini-2.5-flash-image",
"responseId": "response_example"
}{
"error": {
"message": "<string>",
"type": "invalid_request_error",
"param": "<string>",
"code": "insufficient_user_quota"
}
}{
"error": {
"message": "<string>",
"type": "invalid_request_error",
"param": "<string>",
"code": "insufficient_user_quota"
}
}{
"error": {
"message": "Insufficient balance for this request",
"type": "new_api_error",
"param": "",
"code": "insufficient_user_quota"
}
}{
"error": {
"message": "Request body exceeds the current limit",
"type": "new_api_error",
"param": "",
"code": "read_request_body_failed"
}
}{
"error": {
"message": "<string>",
"type": "invalid_request_error",
"param": "<string>",
"code": "insufficient_user_quota"
}
}{
"error": {
"message": "<string>",
"type": "invalid_request_error",
"param": "<string>",
"code": "insufficient_user_quota"
}
}同步生成
这个模型必须省略imageSize。以下请求允许模型同时返回说明文字和图片:
curl 'https://api.yingtu.ai/v1beta/models/gemini-2.5-flash-image:generateContent' \
-H 'Authorization: Bearer YOUR_YINGTU_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"contents": [{"role": "user", "parts": [{"text": "雨后老街上的暖色书店,横版纪实摄影"}]}],
"generationConfig": {
"responseModalities": ["TEXT", "IMAGE"],
"imageConfig": {"aspectRatio": "16:9"}
}
}'
{
"candidates": [{
"content": {
"role": "model",
"parts": [
{"text": "图片已生成。"},
{"inlineData": {"mimeType": "image/png", "data": "BASE64_IMAGE_DATA"}}
]
},
"finishReason": "STOP"
}],
"modelVersion": "gemini-2.5-flash-image",
"responseId": "response_example"
}
提交并轮询异步任务
把统一任务请求发送到/v1/images/tasks。提交时设置 Idempotency-Key;收到 HTTP 202 后保存 task_id,再查询 /v1/tasks/{task_id},直到进入 completed、failed 或 expired。完整的超时、退避和 Retry-After 处理见轮询指南。
import time
import requests
headers = {
"Authorization": "Bearer YOUR_YINGTU_API_KEY",
"Idempotency-Key": "old-street-bookstore-001",
}
submit_url = "https://api.yingtu.ai/v1/images/tasks"
body = {
"model": "gemini-2.5-flash-image",
"action": "generate",
"prompt": "雨后老街上的暖色书店",
"aspect_ratio": "1:1",
"n": 1,
}
response = requests.post(submit_url, headers=headers, json=body, timeout=30)
response.raise_for_status()
task_id = response.json()["task_id"]
deadline = time.monotonic() + 300
while time.monotonic() < deadline:
task = requests.get(
f"https://api.yingtu.ai/v1/tasks/{task_id}",
headers=headers,
timeout=30,
).json()
if task["status"] == "completed":
image = next(
part["inlineData"]
for candidate in task["result"].get("candidates", [])
for part in candidate.get("content", {}).get("parts", [])
if part.get("inlineData", {}).get("data")
)
break
if task["status"] in {"failed", "expired"}:
raise RuntimeError(task.get("error", "任务失败"))
time.sleep(2)
else:
raise TimeoutError("等待任务完成超时")
size。完成后从 image.data 解码图片,并按网关根据真实字节修正后的 image.mimeType 选择扩展名。
使用参考图编辑
在文字内容后加入inlineData。mimeType 必须与来源字节一致,data 只放 Base64 内容,不放 data URL 前缀。
{
"contents": [{
"role": "user",
"parts": [
{"text": "保留陶瓷小鸟,把背景改成清晨窗台"},
{"inlineData": {"mimeType": "image/png", "data": "BASE64_SOURCE_IMAGE"}}
]
}],
"generationConfig": {
"responseModalities": ["IMAGE"],
"imageConfig": {"aspectRatio": "1:1"}
}
}
在线测试
本页嵌入的表单固定调用gemini-2.5-flash-image:generateContent。先检查请求中没有 imageSize,再填入开发凭证发送同步请求。
在线测试会真实计费。Mintlify 会在生成的 cURL 中显示已输入的 Key,请勿分享带凭证的截图。
授权
YingTu API Key。
请求体
application/json
最后修改于 2026年9月3日