跳到正文

GPT Image

用 GPT Image 產生和編輯圖片:參數、回傳與注意事項。

項目值
Base URLhttps://api.hop-base.com/v1
產生圖片POST /v1/images/generations
編輯圖片POST /v1/images/edits
查詢非同步任務GET /v1/images/tasks?task_id=…
金鑰分組「GPT Image 全系」

預設同步回傳 Base64 圖片,加上 Prefer: respond-async 可改為非同步任務;對話分組的金鑰呼叫 gpt-image-* 會回傳 404。

可用型號

型號模型 IDquality 檔位官方價
GPT Image 2.5 Flaregpt-image-2.5-flarelow / medium / high / xhigh / max$5 / $30/ 百萬 tokens
GPT Image 2.5 Sunburstgpt-image-2.5-sunburstlow / medium / high / xhigh / max$5 / $30/ 百萬 tokens
GPT Image 2gpt-image-2low / medium / high$5 / $30/ 百萬 tokens

選型建議:日常出圖首選 Flare;要畫質選 Sunburst,同參數下比 Flare 略慢;gpt-image-2 是通用型號,ID 是 gpt-image-2,不是 gpt-image-2.0。參考耗時(單張 1024x1024):low 檔 2.5 兩個型號約 14 秒,high 檔 Flare 約 19 秒、Sunburst 約 37 秒。

請求參數

產生

POST /v1/images/generations,JSON 請求內容。

參數必填型別與限制預設說明
model必填string—上表三個 ID 之一
prompt必填string,≤ 32,000 字元—去除首尾空白後不能為空
size選填auto 或 寬x高—規則見表下
quality選填auto / low / medium / high—2.5 另有 xhigh / max
n選填integer,1–101部分分組只支援 1
background選填auto / opaque / transparent—透明需 png / webp
output_format選填png / jpeg / webppng決定解碼後的格式
output_compression選填integer,0–100100僅 jpeg / webp
moderation選填auto / low—不會關閉內容安全檢查
user選填string—終端使用者識別
stream選填booleanfalsetrue 改為 Images SSE
response_format選填string—請省略
input_fidelity選填low / high—相容欄位,請省略

size 的 寬x高 須為 16 的倍數,單邊 ≤ 3840,長短邊比 ≤ 3:1,總像素 655,360–8,294,400。不接受 1K / 2K / 4K 簡寫;不合規的 size 在產生前回傳 400,不計費。

quality 越高,輸出 token 越多、費用越高。response_format 傳什麼都以 b64_json 回傳;user 不是 HopBase 帳戶 ID,也不改變計費歸屬。

編輯

POST /v1/images/edits 接受上表全部參數,另加參考圖與遮罩。建議用 multipart/form-data(本機檔案),也接受 JSON(URL / Data URL)。

參數必填型別與限制預設說明
image必填1–16 張—multipart 用 image 或重複 image[]
mask選填帶 alpha 通道的 PNG—透明區域表示要編輯

JSON 的 image 可以是 URL / Data URL 字串、字串陣列或 {"url": …} 物件。不讀 images,不接受裸 base64 或 file_id。

遠端 URL 單張 ≤ 25 MiB,Content-Type 須為 image/*,且不能指向內網位址;轉送前可能壓縮到 4 MiB。整個請求內容上限 60 MB,超過回傳 413。

非同步

在產生或編輯請求加上 HTTP header Prefer: respond-async,請求內容不變。它是 header,不是 JSON 參數。

非同步任務只保留 model、prompt、n、size、quality、background、output_format、input_fidelity 和編輯用的圖片 / mask,其餘欄位捨棄。

回傳結果

同步

欄位型別說明
createdintegerUnix 秒
data[].b64_jsonstringBase64 圖片,解碼後按 output_format 儲存
usage.input_tokensinteger輸入 token(可能回傳)
usage.output_tokensinteger輸出 token(可能回傳)
usage.total_tokensinteger合計(可能回傳)
errorobject失敗時出現:message、type、code
{
  "created": 1760000000,
  "data": [
    {
      "b64_json": "iVBORw0KGgoAAA..."
    }
  ],
  "usage": {
    "input_tokens": 42,
    "output_tokens": 1760,
    "total_tokens": 1802
  }
}
產生超過 40 秒:狀態碼仍是 200,請讀 error 欄位:

超過約 40 秒時,伺服器會先回傳 HTTP 200,並在回應內容開頭持續寫入空白以維持連線,完整 JSON 稍後才寫完。此後即使產生失敗,HTTP 狀態仍是 200,請以回應內容是否含 error 判斷成敗,讀取逾時設為不少於 300 秒。

串流(stream: true)

回應改為 Images SSE:等待期間送出以冒號開頭的 keepalive 註解行,最後一個 data: 事件才是完整的 Images JSON,並以 [DONE] 結束。這不是 OpenAI 原生的逐張預覽事件。

: hopbase-keepalive

data: {"created":1760000000,"data":[{"b64_json":"iVBORw0KGgoAAA..."}]}

data: [DONE]

非同步任務

提交後立即回傳 202 Accepted,回應標頭 Location 同樣指向查詢位址:

{
  "object": "image.task",
  "task_id": "你的task_id",
  "status": "pending",
  "status_url": "/v1/images/tasks?task_id=你的task_id"
}

只能用 GET /v1/images/tasks?task_id=… 查詢,不支援把任務 ID 放進路徑。pending / processing / retrying 為進行中,終態是 completed 與 failed。

欄位型別說明
task_idstring任務 ID
statusstring任務狀態
result_contentstring完成後出現:Markdown,每張圖一行
errorstring僅 failed 時出現,英文原因,無錯誤碼
usage.costnumber本任務實際扣除的金額
usage.currencystring記帳幣別,目前為 CNY
usage.cost_cnynumber人民幣金額,對帳用
usage.cost_usdnumber美元金額,對帳用
{
  "task_id": "你的task_id",
  "status": "completed",
  "result_content": "![image](/assets-runtime/2026/09/xxxxxxxxxxxx.png)",
  "usage": {
    "cost": 1.36,
    "currency": "CNY",
    "cost_cny": 1.36,
    "cost_usd": 0.2
  }
}

result_content 裡是相對路徑,加上 https://api.hop-base.com 即可下載。usage 在任務 completed 或 failed 後出現,只有建立任務的金鑰看得到。

範例

產生

curl https://api.hop-base.com/v1/images/generations \
  -H "Authorization: Bearer sk-你的金鑰" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2.5-flare",
    "prompt": "一隻柴犬坐在櫻花樹下,日系水彩風格",
    "size": "1024x1024",
    "quality": "medium",
    "output_format": "png"
  }' \
  | jq -r '.data[0].b64_json' | base64 --decode > result.png

curl 範例需要先安裝 jq。

編輯(多張參考圖 + 遮罩)

curl https://api.hop-base.com/v1/images/edits \
  -H "Authorization: Bearer sk-你的金鑰" \
  -F "model=gpt-image-2.5-flare" \
  -F "prompt=把遮罩區域換成一個花瓶,風格參考第二張圖" \
  -F "image[][email protected]" \
  -F "image[][email protected]" \
  -F "[email protected]" \
  -F "size=1024x1024" \
  -F "quality=high" \
  -F "output_format=png"

JSON 寫法把檔案換成 URL:"image": ["https://example.com/scene.png", "https://example.com/style.png"],"mask": "https://example.com/mask.png"。

非同步

# 1. 提交後立即回傳 202 + task_id
curl -i https://api.hop-base.com/v1/images/generations \
  -H "Authorization: Bearer sk-你的金鑰" \
  -H "Content-Type: application/json" \
  -H "Prefer: respond-async" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "電影感的未來城市夜景",
    "size": "2048x2048"
  }'

# 2. 用上一步的 task_id 輪詢
curl "https://api.hop-base.com/v1/images/tasks?task_id=你的task_id" \
  -H "Authorization: Bearer sk-你的金鑰"

注意事項

  • 產生 2K / 4K 大圖時建議用非同步,避免長請求被 CDN 逾時中斷。
  • 同步請求的用戶端讀取逾時設為不少於 300 秒。
  • size 只收 auto 或 寬x高,寫檔位簡寫回傳 400。
  • xhigh / max 只有 2.5 兩個型號提供。
  • background: "transparent" 需搭配 png 或 webp;gpt-image-2 的透明背景屬預覽功能。
  • 不支援官方串流欄位 partial_images(0–3),請省略。
  • 使用官方 SDK 時請保持 stream 為預設的 false。
  • 閘道會把 mask 縮放到第一張參考圖的尺寸,不保證遮罩外逐像素不變。
  • result_content 的位址不需金鑰即可開啟,請勿公開分享,並盡快下載到自己的儲存空間。

常見報錯

參數不合規在產生前回傳 400,不計費。內容安全攔截也回傳 400、不計費,error.code 為 safety_rejected。

報錯改法
size must be WIDTHxHEIGHT or auto 等 size 報錯按上方 size 規則修改
prompt must not be empty補上非空的 prompt
n must be 1 for this model in the current group拆成多次請求
/v1/images/edits requires at least one image參考圖放進 image,不要用 images
image download returned HTTP 404換成伺服器能取得的公開 URL
Your request was rejected by the safety system.改寫提示詞或更換參考圖
Request body exceeds the size limit (60 MB)(413)壓縮圖片,或改傳 URL
HTTP 200 但回應內容含 error保活開始後才失敗,按 error.message 處理

計費

按 token 計費,quality 越高輸出 token 越多:1024x1024 實測 low 約 200、high 約 1,760、xhigh 約 3,120、max 約 7,020 輸出 token。非同步任務的實際扣費看查詢結果的 usage.cost(cost_cny / cost_usd 按固定 1 USD = 6.8 CNY 換算),失敗通常為 0。

單價見上表各模型卡與登入後的模型廣場。

下一步