真实计费(默认 1K):使用 gemini-3.1-flash-image 生成图片
curl --request POST \
--url https://api.yingtu.ai/v1beta/models/gemini-3.1-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-3.1-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-3.1-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/jpeg",
"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-3.1-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 3.1 Flash Image
Gemini 3.1 Flash Image 调用示例
复制 Gemini 3.1 Flash Image API 的 2K、异步、编辑和 MIME 解析示例;真实计费的在线测试默认使用 1K。
POST
/
v1beta
/
models
/
gemini-3.1-flash-image:generateContent
真实计费(默认 1K):使用 gemini-3.1-flash-image 生成图片
curl --request POST \
--url https://api.yingtu.ai/v1beta/models/gemini-3.1-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-3.1-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-3.1-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/jpeg",
"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-3.1-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"
}
}同步生成 2K 图片
curl 'https://api.yingtu.ai/v1beta/models/gemini-3.1-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": "4:3", "imageSize": "2K"}
}
}'
{
"candidates": [{
"content": {"role": "model", "parts": [{
"inlineData": {"mimeType": "image/jpeg", "data": "BASE64_IMAGE_DATA"}
}]},
"finishReason": "STOP"
}],
"usageMetadata": {
"promptTokenCount": 37,
"candidatesTokenCount": 1846,
"totalTokenCount": 1883
},
"modelVersion": "gemini-3.1-flash-image",
"responseId": "response_example"
}
用 Python 提交异步任务
以下示例使用超宽4:1 比例。生产代码还应处理 429 的 Retry-After、网络抖动与随机退避,完整实现见轮询指南。
import time
import requests
headers = {
"Authorization": "Bearer YOUR_YINGTU_API_KEY",
"Idempotency-Key": "conference-banner-001",
}
body = {
"model": "gemini-3.1-flash-image",
"action": "generate",
"prompt": "科技大会官网的超宽主视觉",
"size": "1K",
"aspect_ratio": "4:1",
"n": 1,
}
url = "https://api.yingtu.ai/v1/images/tasks"
submitted = requests.post(url, headers=headers, json=body, timeout=30)
submitted.raise_for_status()
task_id = submitted.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("等待任务完成超时")
image.data 解码图片,并使用网关按真实字节修正后的 image.mimeType 选择文件扩展名。
编辑来源图片
{
"contents": [{
"role": "user",
"parts": [
{"text": "保留台灯比例,把桌面换成浅色洞石"},
{"inlineData": {"mimeType": "image/jpeg", "data": "BASE64_SOURCE_IMAGE"}}
]
}],
"generationConfig": {
"responseModalities": ["IMAGE"],
"imageConfig": {"aspectRatio": "4:3", "imageSize": "2K"}
}
}
candidates[].content.parts[],按 inlineData.mimeType 决定扩展名。
在线测试
本页表单固定调用gemini-3.1-flash-image:generateContent。先用 1K 验证提示词,再按真实交付需要选择 2K 或 4K。
尺寸会影响真实计费。Mintlify 会在生成的 cURL 中显示已输入的 Key,请勿分享带凭证的截图。
授权
YingTu API Key。
请求体
application/json
最后修改于 2026年9月3日