GPT Image 2
透過單一非同步影像端點生成影像、編輯參考影像並套用遮罩。
GPT Image 2 接受文字提示詞和選用的參考影像。提交一次,保留回傳的任務 ID,然後查詢該任務以取得生成完成的影像。它透過兩個通道提供,各有自己的模型 ID,參數完全相同。
模型 ID
| 模型 ID | 通道 | 計費方式 |
|---|---|---|
gpt-image-2 | Standard | 每交付一張圖收一個固定價,與尺寸和品質無關 |
gpt-image-2-official | Official | 按每次渲染回報的 token 計費(文字輸入與影像輸出) |
兩個 ID 接受相同的參數、支援所有模式,差別只在計費。目前價格見模型頁。下面的範例使用 gpt-image-2;想按 token 計費就換成 gpt-image-2-official。
快速範例
curl https://api.seedrouter.ai/v1/images/generations \
-H "Authorization: Bearer $SEEDROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "An amber glass bottle on a cream background, studio lighting",
"size": "1024x1024",
"quality": "low"
}'端點
POST https://api.seedrouter.ai/v1/images/generations| 標頭 | 值 |
|---|---|
| Authorization | Bearer YOUR_API_KEY |
| Content-Type | application/json |
生成、參考影像編輯和遮罩編輯都使用同一個端點。回應中包含的是任務 ID,而不是生成完成的影像。請把 API 金鑰保存在伺服器端程式碼中。
參數
| 名稱 | 型別 | 必填 | 預設值 | 說明 |
|---|---|---|---|---|
model | string | 是 | — | gpt-image-2 或 gpt-image-2-official |
prompt | string | 是 | — | 不可為空;最多 32,000 個字元。 |
images | object[] | 否 | — | 1–16 個形如 {"image_url":"https://..."} 的物件;傳入 images 即進入編輯模式。 |
mask | object | 否 | — | {"image_url":"https://..."};必須與 images 一起使用。 |
size | string | 否 | auto | auto 或 WIDTHxHEIGHT,需符合下述規則。 |
quality | enum | 否 | auto | auto、low、medium、high。 |
background | enum | 否 | auto | auto、opaque、transparent。 |
output_format | enum | 否 | png | png、jpeg。 |
output_compression | integer | 否 | JPEG 為 100 | 0–100;僅在 jpeg 下傳入。0 是合法值。 |
n | integer | 否 | 1 | 1–10 張影像。 |
moderation | enum | 否 | auto | auto、low。 |
user | string | 否 | — | 選用的應用程式終端使用者識別碼。請勿填入個人資訊。 |
尺寸規則
常用取值為 1024x1024、1536x1024 和 1024x1536。自訂尺寸必須同時滿足以下全部規則:
- 寬和高都是 16 的倍數。
- 任一邊長都不超過 3840 像素。
- 長寬比介於 1:3 到 3:1 之間。
- 總面積介於 655,360 到 8,294,400 像素之間(含端點)。
auto 表示由模型決定輸出尺寸。不要把 16:9 這類長寬比作為 size 傳入。
Playground 提供 Auto、比例和自訂三種控制項。比例模式把長寬比與 1K、2K 或 4K 的像素預算預設組合起來,最終只提交換算後的 size。這些只是介面預設,不是獨立的 API 參數:不要傳 resolution 或 aspect_ratio。例如 16:9 + 4K 提交 size: "3840x2160";9:16 + 4K 提交 "2160x3840";1:1 + 2K 提交 "2048x2048"。取整和邊長上限可能使所選等級的實際像素數變少。提交前會顯示確切的尺寸。
OpenAI 將高於 2560×1440 的解析度描述為實驗性質。在上述限制範圍內它們會被接受;但更高的解析度並不保證更好的細節。
品質等級
草稿階段請使用 low,先比較結果再決定是否提高等級。auto 由模型自行選擇,它並不保證特定的等級或費用。
透明背景
GPT Image 2 的透明背景處於預覽階段。需要透明背景時,請設定 background: "transparent" 並使用 PNG。JPEG 不支援透明。壓縮僅對 JPEG 生效。
user 可用於 API 整合,但不會在 Playground 中顯示,也不會自動填入。
選用的純量設定(n、size、quality、background、output_format、output_compression、moderation)接受 null 表示省略。未知欄位會被拒絕。GPT Image 2 不支援設定 input_fidelity;參考影像輸入一律使用高保真度。style 和 response_format 屬於其他影像模型,此處不接受。
模式
沒有獨立的模式參數,也沒有另一個編輯端點需要選擇。
| 操作 | 參數 |
|---|---|
| 文字生成影像 | prompt |
| 參考影像編輯 | prompt + images |
| 遮罩編輯 | prompt + images + mask |
編輯參考影像
curl https://api.seedrouter.ai/v1/images/generations \
-H "Authorization: Bearer $SEEDROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "Make the bottle blue. Preserve the composition and lighting.",
"images": [{"image_url": "https://example.com/reference.png"}],
"mask": {"image_url": "https://example.com/mask.png"},
"output_format": "jpeg",
"output_compression": 90
}'請把範例中的兩個 URL 換成你自己、可公開存取的影像。若不需要指定編輯區域,省略 mask 即為參考影像編輯。
媒體輸入
本 API 只接受 URL 參考。不接受 OpenAI Files ID、base64 data URL 和 multipart 上傳。Playground 會先把所選檔案上傳到儲存空間,再提交其 URL。
參考影像必須是可公開存取的 HTTP(S) URL,指向 PNG、JPEG 或 WebP 檔案,單一檔案小於 50 MB。遮罩必須是小於 4 MB 的 PNG,尺寸與第一張參考影像相同;其透明區域標記要編輯的部分。遮罩只是對模型的引導,並不保證像素級精確的邊界。傳入多張參考影像時,遮罩作用於第一張。URL 媒體在處理過程中才會驗證;無效或無法存取的媒體會導致任務失敗。
Playground 會上傳所選檔案並提交其 URL。API 請求使用 JSON 形式的 URL 物件:不要傳送檔案位元組、base64、data: URL、blob: URL 或 multipart 表單資料。
計費維度
目前費率請查看模型定價區段。gpt-image-2(Standard)每交付一張圖收一個固定價,與品質、尺寸和提示詞無關。gpt-image-2-official(Official)的最終費用取決於輸入和輸出的用量:品質、輸出尺寸、參考圖、提示詞長度和出圖數量都會影響它。
Playground 的預估以實測樣本和目前費率為基礎,不構成保證報價。最終扣款請在帳號的用量記錄中查看。失敗的任務不計費。
輸出結構
提交後會回傳一個任務參考:
{
"id": "task_...",
"model": "gpt-image-2",
"status": "processing",
"created_at": 1789970508
}輪詢任務
curl https://api.seedrouter.ai/v1/tasks/YOUR_TASK_ID \
-H "Authorization: Bearer $SEEDROUTER_API_KEY"請以較為節制的間隔輪詢,例如每三秒一次,直到 status 變為 completed 或 failed。輪詢過程中發生網路逾時,並不代表生成失敗:請保留任務 ID 並繼續查詢。不要為了查看進度而再建立一個任務。
完整輪詢範例
請在上方的 Python 提交範例之後執行這段程式碼。它使用回傳的 task_id,最長等待十分鐘。達到這個本地期限只會停止輪詢;請保留 ID 並繼續查詢同一個任務。
import time
print(f"Task ID: {task_id}")
deadline = time.monotonic() + 600
while time.monotonic() < deadline:
result = requests.get(
f"https://api.seedrouter.ai/v1/tasks/{task_id}",
headers={"Authorization": f"Bearer {os.environ['SEEDROUTER_API_KEY']}"},
timeout=30,
)
result.raise_for_status()
task = result.json()
if task["status"] == "completed":
for image in task["output"]["data"]:
print(image["url"])
break
if task["status"] == "failed":
raise RuntimeError(task["error"]["message"])
time.sleep(3)
else:
raise TimeoutError(f"Still waiting. Resume polling task {task_id}.")已完成的任務
已完成的任務會回傳託管的影像 URL 和用量:
{
"id": "task_...",
"model": "gpt-image-2",
"status": "completed",
"created_at": 1789970508,
"finished_at": 1789970538,
"output": {
"created": 1789970532,
"data": [{"url": "https://static.seedrouter.ai/media/tasks/task_example/0.png"}],
"usage": {
"input_tokens": 29,
"output_tokens": 196,
"total_tokens": 225
}
}
}| 欄位 | 含義 |
|---|---|
id | 請保留該 ID 供後續查詢使用。 |
status | processing、completed 或 failed。 |
created_at、finished_at | 以秒為單位的 Unix 時間戳記;處理過程中完成時間為空或為零。 |
output.data[].url | 生成的影像 URL,任務完成後可用。 |
output.size | 實際輸出尺寸,在有回報時提供。 |
output.quality | 實際品質等級,在有回報時提供。 |
output.background | 實際背景,在有回報時提供。 |
output.output_format | 實際影像格式,在有回報時提供。 |
output.usage | 在可取得時回報的 token 用量。明細物件中可能包含文字和影像的 token 數。 |
error | 任務失敗時的結構化錯誤。 |
本 API 採用非同步任務交付方式。它不是同步 Images SDK 的替代品;不支援 stream 和 partial_images。
錯誤
在任務建立之前就被拒絕的請求,會回傳 HTTP 錯誤狀態碼和一個 error 物件。受理之後才失敗的任務,查詢時會回傳 HTTP 200,並帶有 status: "failed" 和一個 error 物件。
錯誤碼、HTTP 狀態碼和重試建議請參見共用錯誤目錄。所有模型 API 使用同一套錯誤封裝結構。
{
"id": "task_...",
"status": "failed",
"error": {
"code": 60002,
"message": "Generation could not be completed. Please try again."
}
}如果提交本身逾時,請先檢查你的任務歷史再重新提交:第一次請求有可能已經被受理。
實用建議
- 在提示詞中描述材質、構圖和光線。
- 進行編輯時,既要說明要改什麼,也要說明哪些應保持不變。
- 只需改動選定區域時,請使用遮罩。
- 需要長期保存時,請把回傳的影像儲存到你自己的儲存空間中。
