API 參考
影像編輯 Images Edits
POST /v1/images/edits 的參數與示例:上傳原圖加提示詞修改圖片,支援多圖合成和蒙版局部重繪。multipart/form-data 格式,與 OpenAI 影像編輯介面一致,本站按原格式轉發請求。
POST /v1/images/edits 在一張或多張原圖的基礎上,按提示詞生成新圖片。常見用法是換背景、改畫面裡的文字、局部重繪,或者把商品圖和 logo 合成到一起。請求用 multipart/form-data 上傳檔案,格式與 OpenAI Images API 一致。本站把請求按原格式轉發給模型服務,不同模型支援的欄位和取值不同,以對應模型的官方說明為準。
POST
https://www.tutujin.com/v1/images/edits請求頭
| 請求頭 | 必填 | 說明 |
|---|---|---|
Authorization | 是 | Bearer sk-...,控制台建立的 API Key |
Content-Type | 是 | multipart/form-data。用 SDK 或 curl -F 時會自動設定並帶上 boundary,不要手寫 |
請求參數
| 參數 | 類型 | 必填 | 說明 |
|---|---|---|---|
model | string | 是 | 模型名,例如 gpt-image-1.5 |
image | file | 是 | 原圖,常見格式 PNG、JPEG、WEBP。GPT Image 系列可以傳多張,表單欄位名寫成 image[] |
prompt | string | 是 | 修改要求,說明要改什麼、哪些地方保持不變 |
mask | file | 否 | 蒙版 PNG。透明區域(alpha 為 0)是要重繪的位置,尺寸要和原圖一致,作用於第一張原圖 |
n | integer | 否 | 生成幾張,預設 1 |
size | string | 否 | 輸出尺寸,可選值因模型而異 |
quality | string | 否 | GPT Image 系列可選 low、medium、high、auto |
response_format | string | 否 | url 或 b64_json,部分模型只支援其中一種 |
請求示例
下面的例子把 logo 印到杯身上,cup.png 是商品圖,logo.png 是 logo:
curl https://www.tutujin.com/v1/images/edits \
-H "Authorization: Bearer $TUTUJIN_API_KEY" \
-F model="gpt-image-1.5" \
-F "image[]=@cup.png" \
-F "image[]=@logo.png" \
-F prompt="把第二张图的 logo 印在杯身正面,保持杯子形状、颜色和光线不变"import base64
import os
from openai import OpenAI
client = OpenAI(base_url="https://www.tutujin.com/v1", api_key=os.environ["TUTUJIN_API_KEY"], timeout=300)
resp = client.images.edit(
model="gpt-image-1.5",
image=[open("cup.png", "rb"), open("logo.png", "rb")],
prompt="把第二张图的 logo 印在杯身正面,保持杯子形状、颜色和光线不变",
)
img = resp.data[0]
if img.b64_json:
with open("cup-logo.png", "wb") as f:
f.write(base64.b64decode(img.b64_json))
else:
print(img.url) # 临时链接,拿到后尽快下载保存import fs from 'node:fs'
import OpenAI, { toFile } from 'openai'
const client = new OpenAI({ baseURL: 'https://www.tutujin.com/v1', apiKey: process.env.TUTUJIN_API_KEY, timeout: 300_000 })
const resp = await client.images.edit({
model: 'gpt-image-1.5',
image: [
await toFile(fs.createReadStream('cup.png'), 'cup.png', { type: 'image/png' }),
await toFile(fs.createReadStream('logo.png'), 'logo.png', { type: 'image/png' }),
],
prompt: '把第二张图的 logo 印在杯身正面,保持杯子形状、颜色和光线不变',
})
const img = resp.data[0]
if (img.b64_json) fs.writeFileSync('cup-logo.png', Buffer.from(img.b64_json, 'base64'))
else console.log(img.url)用蒙版局部重繪
只想改畫面的一部分時,再上傳一張和原圖同尺寸的 PNG 蒙版,把要重繪的區域做成透明:
cURL
curl https://www.tutujin.com/v1/images/edits \
-H "Authorization: Bearer $TUTUJIN_API_KEY" \
-F model="gpt-image-1.5" \
-F "image[]=@room.png" \
-F mask=@mask.png \
-F prompt="在透明区域放一盆绿植,风格和光线与房间一致"響應示例
JSON
{
"created": 1794000000,
"data": [
{ "b64_json": "iVBORw0KGgo..." }
]
}| 欄位 | 說明 |
|---|---|
data[].b64_json | base64 編碼的圖片資料 |
data[].url | 圖片的臨時連結,模型返回連結時出現,會過期 |
usage | 按 token 計費的影像模型會返回輸入、輸出 tokens,原圖也計入輸入 |
注意事項
- 這個介面是原樣轉發,沒有在本站單獨實測。GPT Image 以外的模型對欄位名、多圖寫法的要求可能不同,接入前先用一兩次請求確認。
- 上傳檔案的字尾要和真實格式一致,例如
cup.png必須真的是 PNG,否則可能報錯或出圖異常。 - 原圖越大,請求越慢,也可能觸發請求體過大(413)。傳送前把圖片縮到夠用的尺寸。
- 返回的連結是臨時地址,下載後轉存到自己的儲存。
- 生圖耗時較長,客戶端超時建議設為 300 秒左右。實際扣費以控制台「操作日誌」為準。
支援此介面的模型
| 模型 | 廠商 | 最低價分組 | 輸入 ¥/百萬 | 輸出 ¥/百萬 | 按次 ¥/次 |
|---|---|---|---|---|---|
| nano-banana-pro | 標準 | — | — | ¥0.4 | |
| flux | Flux 繪圖 | 標準 | — | — | ¥0.02 |
| flux-schnell | Flux 繪圖 | 標準 | — | — | ¥0.02 |
| flux-dev | Flux 繪圖 | 標準 | — | — | ¥0.06 |
| gpt-4o-image | OpenAI | 標準 | — | — | ¥0.1 |
| flux-pro | Flux 繪圖 | 標準 | — | — | ¥0.1 |
| grok-imagine-image-2.0 | xAI | 標準 | — | — | ¥0.12 |
| gpt-image-1.5 | OpenAI | 標準 | — | — | ¥0.12 |
價格為人民幣,取各模型最低價分組;價格更新於 2026年11月13日 下午6:08。
共 31 個模型支援此介面,上表列出其中一部分。 在模型廣場檢視全部
沒找到答案?加客服微信 JsnonoChat,傳送報錯資訊裡的 request id,我們幫你排查。