{"openapi":"3.1.0","info":{"title":"GPT Image 2.5 API","version":"1.0.0","description":"Independent third-party asynchronous image API. GPT Image 2.5 supports Flare and Sunburst. Not an official OpenAI API. Generation POST is not idempotent."},"servers":[{"url":"https://gptimage25api.com"}],"security":[{"userApiKey":[]}],"components":{"securitySchemes":{"userApiKey":{"type":"http","scheme":"bearer","description":"User API key created on gptimage25api.com. Not an OpenAI key or a login JWT."}}},"paths":{"/api/v1/images/generate":{"post":{"operationId":"generateImage","summary":"Submit a generation or image edit","description":"Costs 4 / 6 / 10 credits for 1K / 2K / 4K respectively. Save data.task_id. Do not automatically retry. Unknown fields are stripped.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"model":{"type":"string","enum":["gpt-image-2.5"],"description":"Optional. Must be gpt-image-2.5 when supplied. Uses GPT Image 2.5."},"variant":{"type":"string","enum":["flare","sunburst"],"default":"flare","description":"Optional. flare (default) or sunburst. Both support text-to-image and image-to-image."},"prompt":{"type":"string","minLength":1,"maxLength":20000,"pattern":"\\S","description":"Required for both generation and editing: 1–20,000 characters after trimming."},"images":{"type":"array","maxItems":16,"items":{"type":"string","format":"uri","pattern":"^https?://"},"description":"Optional, at most 16 public HTTP(S) image URLs for editing. URL credentials, base64 and local files are not accepted. Upload to accessible storage first. Aliases: input_urls, inputUrls."},"aspect_ratio":{"type":"string","enum":["auto","1:1","3:2","2:3","4:3","3:4","16:9","9:16","21:9","27:16","16:27","9:8","8:9"],"default":"auto","description":"Optional, defaults to auto. Values: auto, 1:1, 3:2, 2:3, 4:3, 3:4, 16:9, 9:16, 21:9, 27:16, 16:27, 9:8, 8:9. Alias: aspectRatio."},"resolution":{"type":"string","enum":["1K","2K","4K"],"default":"1K","description":"Optional, defaults to 1K. Values: 1K, 2K, 4K (case-insensitive). All 13 aspect ratios support all three resolutions."},"public":{"type":"boolean","default":false,"description":"Optional visibility flag; defaults to false in the existing backend. Aliases: is_public, isPublic. Set false for private tasks."},"client_request_id":{"type":"string","pattern":"^[a-zA-Z0-9_-]{12,80}$","description":"Optional trace label: 12-80 letters, numbers, underscores or hyphens. Alias: clientRequestId. NOT an idempotency key: repeated POSTs can create and charge separate tasks."}},"required":["prompt"]}}}},"responses":{"200":{"description":"Task accepted","content":{"application/json":{"schema":{"type":"object","required":["code","message","data"],"properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","required":["task_id","status"],"properties":{"task_id":{"type":"string"},"status":{"type":"string","enum":["SUBMITTING","PENDING","IN_PROGRESS","SUCCESS","FAILED","REFUND_PENDING"]},"consumed_credits":{"type":"number"},"created_at":{"type":"string","description":"Backend timestamp, e.g. 2026-09-09 08:00:00."},"error_message":{"type":["string","null"]},"request":{"type":["object","null"],"additionalProperties":true},"response":{"type":["array","null"],"items":{"type":"string","format":"uri"}}}}}},"example":{"code":200,"message":"success","data":{"task_id":"n42YOUR_TASK_IDgptimg","status":"IN_PROGRESS"}}}}},"400":{"description":"Invalid JSON, missing input or unsupported parameter combination.","content":{"application/json":{"schema":{"type":"object","required":["code","message","data"],"properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":["object","null"],"additionalProperties":true}}}}}},"401":{"description":"Missing, malformed, invalid, disabled or deleted API key.","content":{"application/json":{"schema":{"type":"object","required":["code","message","data"],"properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":["object","null"],"additionalProperties":true}}}}}},"402":{"description":"Insufficient account credits.","content":{"application/json":{"schema":{"type":"object","required":["code","message","data"],"properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":["object","null"],"additionalProperties":true}}}}}},"403":{"description":"Key is not authorized, or belongs to another project.","content":{"application/json":{"schema":{"type":"object","required":["code","message","data"],"properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":["object","null"],"additionalProperties":true}}}}}},"404":{"description":"Task is not found for this key. Use the key that created it.","content":{"application/json":{"schema":{"type":"object","required":["code","message","data"],"properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":["object","null"],"additionalProperties":true}}}}}},"405":{"description":"Wrong HTTP method. Generate requires POST; status requires GET.","content":{"application/json":{"schema":{"type":"object","required":["code","message","data"],"properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":["object","null"],"additionalProperties":true}}}}}},"415":{"description":"Use Content-Type: application/json for generation.","content":{"application/json":{"schema":{"type":"object","required":["code","message","data"],"properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":["object","null"],"additionalProperties":true}}}}}},"429":{"description":"Rate limited. Back off; never blindly repeat a generation POST.","content":{"application/json":{"schema":{"type":"object","required":["code","message","data"],"properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":["object","null"],"additionalProperties":true}}}}}},"502":{"description":"Service unavailable or invalid upstream response.","content":{"application/json":{"schema":{"type":"object","required":["code","message","data"],"properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":["object","null"],"additionalProperties":true}}}}}},"503":{"description":"Service configuration or temporary availability issue.","content":{"application/json":{"schema":{"type":"object","required":["code","message","data"],"properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":["object","null"],"additionalProperties":true}}}}}},"504":{"description":"Request timed out. Generation may still have been accepted.","content":{"application/json":{"schema":{"type":"object","required":["code","message","data"],"properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":["object","null"],"additionalProperties":true}}}}}}}}},"/api/v1/images/status":{"get":{"operationId":"getImageStatus","summary":"Read a task owned by this API key","parameters":[{"name":"task_id","in":"query","required":true,"schema":{"type":"string","pattern":"^[a-zA-Z0-9_-]{1,128}$"}}],"responses":{"200":{"description":"Task status; SUCCESS returns data.response image URLs","content":{"application/json":{"schema":{"type":"object","required":["code","message","data"],"properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":"object","required":["task_id","status"],"properties":{"task_id":{"type":"string"},"status":{"type":"string","enum":["SUBMITTING","PENDING","IN_PROGRESS","SUCCESS","FAILED","REFUND_PENDING"]},"consumed_credits":{"type":"number"},"created_at":{"type":"string","description":"Backend timestamp, e.g. 2026-09-09 08:00:00."},"error_message":{"type":["string","null"]},"request":{"type":["object","null"],"additionalProperties":true},"response":{"type":["array","null"],"items":{"type":"string","format":"uri"}}}}}},"example":{"code":200,"message":"success","data":{"task_id":"n42YOUR_TASK_IDgptimg","status":"SUCCESS","consumed_credits":4,"created_at":"2026-09-09 08:00:00","error_message":null,"request":{"model":"gpt-image-2.5","variant":"flare","prompt":"Studio photograph of a translucent green glass chair","aspect_ratio":"3:2","resolution":"1K","public":false},"response":["https://your-image-storage.example/result.png"]}}}}},"400":{"description":"Invalid JSON, missing input or unsupported parameter combination.","content":{"application/json":{"schema":{"type":"object","required":["code","message","data"],"properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":["object","null"],"additionalProperties":true}}}}}},"401":{"description":"Missing, malformed, invalid, disabled or deleted API key.","content":{"application/json":{"schema":{"type":"object","required":["code","message","data"],"properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":["object","null"],"additionalProperties":true}}}}}},"402":{"description":"Insufficient account credits.","content":{"application/json":{"schema":{"type":"object","required":["code","message","data"],"properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":["object","null"],"additionalProperties":true}}}}}},"403":{"description":"Key is not authorized, or belongs to another project.","content":{"application/json":{"schema":{"type":"object","required":["code","message","data"],"properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":["object","null"],"additionalProperties":true}}}}}},"404":{"description":"Task is not found for this key. Use the key that created it.","content":{"application/json":{"schema":{"type":"object","required":["code","message","data"],"properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":["object","null"],"additionalProperties":true}}}}}},"405":{"description":"Wrong HTTP method. Generate requires POST; status requires GET.","content":{"application/json":{"schema":{"type":"object","required":["code","message","data"],"properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":["object","null"],"additionalProperties":true}}}}}},"415":{"description":"Use Content-Type: application/json for generation.","content":{"application/json":{"schema":{"type":"object","required":["code","message","data"],"properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":["object","null"],"additionalProperties":true}}}}}},"429":{"description":"Rate limited. Back off; never blindly repeat a generation POST.","content":{"application/json":{"schema":{"type":"object","required":["code","message","data"],"properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":["object","null"],"additionalProperties":true}}}}}},"502":{"description":"Service unavailable or invalid upstream response.","content":{"application/json":{"schema":{"type":"object","required":["code","message","data"],"properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":["object","null"],"additionalProperties":true}}}}}},"503":{"description":"Service configuration or temporary availability issue.","content":{"application/json":{"schema":{"type":"object","required":["code","message","data"],"properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":["object","null"],"additionalProperties":true}}}}}},"504":{"description":"Request timed out. Generation may still have been accepted.","content":{"application/json":{"schema":{"type":"object","required":["code","message","data"],"properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{"type":["object","null"],"additionalProperties":true}}}}}}}}}}}