# GPT Image | v2.5 | Sunburst | Edit Built for precise, controlled editing, applying changes exactly where requested while keeping the subject, structure, and overall composition consistent through repeated revisions. ## API Information - **Model Slug:** gpt-image-v2-5-sunburst-edit - **Branded URL:** https://www.eachlabs.ai/openai/gpt-image/gpt-image-v2-5-sunburst-edit - **Provider:** OpenAI - **Category:** Image to Image - **Output Type:** array - **Status:** active - **Base Cost:** Fallback when usage.cost is absent: GPT Image v2.5 Sunburst Edit token counts at OpenAI gpt-image rates (input 8/M, image output 32/M) - **Interactive Demo:** https://www.eachlabs.ai/ai-models/gpt-image-v2-5-sunburst-edit ## Pricing - **Charge Type:** dynamic - **Pricing Details:** Fallback when usage.cost is absent: GPT Image v2.5 Sunburst Edit token counts at OpenAI gpt-image rates (input 8/M, image output 32/M) ### Pricing Rules | Condition | Pricing | | --- | --- | | output.usage.cost > "0" | GPT Image v2.5 Sunburst Edit usage.cost = upstream OpenAI list price for this image call, passed through unchanged (same as pre-migration OpenAI token billing) | | Rule 2 | Fallback when usage.cost is absent: GPT Image v2.5 Sunburst Edit token counts at OpenAI gpt-image rates (input 8/M, image output 32/M) | ## Input Schema | Parameter | Type | Required | Default | Constraints | Description | |-----------|------|----------|---------|-------------|-------------| | prompt | string | Yes | - | - | Text prompt describing the desired image edit. Max 32000 characters. | | image_urls | array | Yes | - | - | URLs of source images to edit (up to 16). | | mask_url | string | No | - | - | Optional inpainting mask applied to the first image. PNG with an alpha channel and the same dimensions as the first image; fully transparent areas mark where the image is edited. | | image_size | string | No | 1024x1024 | 1024x1024, 1536x1024, 1024x1536, 2048x2048, 2048x1152, 3840x2160, 2160x3840, auto, custom | Output image resolution. Standard 1K options: 1024x1024 (square), 1536x1024 (landscape), 1024x1536 (portrait). 2K: 2048x2048, 2048x1152. 4K: 3840x2160, 2160x3840 (resolutions above 2560x1440 are experimental). Use 'auto' to let the model choose. Custom WIDTHxHEIGHT constraints: both edges multiples of 16, max edge 3840px, aspect ratio between 1:3 and 3:1, total pixels between 655,360 and 8,294,400. | | num_images | integer | No | 1 | 1–10 | Number of images to generate (1-10). | | quality | string | No | auto | low, medium, high, xhigh, max, auto | Output image quality. 'low' for fast drafts, 'medium'/'high' for final assets, 'xhigh'/'max' for maximum detail at higher cost and latency. | | output_format | string | No | png | jpeg, png, webp | Output image format. 'jpeg' is faster than 'png'; 'png' or 'webp' required for transparent backgrounds. | | background | string | No | auto | opaque, transparent, auto | Background behavior. 'transparent' requires output_format 'png' or 'webp'. | | moderation | string | No | low | low, auto | Content moderation level. 'low' is less restrictive, 'auto' is standard filtering. | | output_compression | integer | No | - | 0–100 | Compression level (0-100) for 'jpeg' and 'webp' output. Ignored for 'png'. | ## Example Request ```bash curl -X POST https://api.eachlabs.ai/v1/prediction/ \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-image-v2-5-sunburst-edit", "input": { "image_urls": [ "https://cdn-us.eachlabs.ai/defaults/241d6d309a134528b934b74a3bfb3495.png" ], "prompt": "Recreate the uploaded reference image as a screenshot of a classic 1990s Microsoft Paint window, with an orange theme.\n\nThe window: a retro Paint interface filling the whole frame. A burnt orange gradient title bar across the top reading \"untitled - Paint\" in white pixel font. Below it a menu bar on light grey with File, Edit, View, Image, Help. Down the left side, the classic two column tool palette with pixel icons: cursor, selection box, cross, letter T, star, fill bucket, pencil, magnifier, eraser, line, rectangle, ellipse, rounded rectangle, polygon. The pencil tool is highlighted in orange. Below the tools, a tall vertical swatch of burnt orange. Along the bottom, the colour palette strip in two rows of small squares in orange, rust, tan, cream, brown and black, with the black and white selector box at the left. A horizontal scrollbar just above it. Hard pixel edges, no anti-aliasing, no drop shadows, authentic old Windows chrome.\n\nInside the white canvas area, two things:\n\nOn the left, the full length photo of the woman from the reference image, cut out cleanly from her background and placed on the white canvas. Keep her face, hair, pose and her entire outfit exactly as in the reference: the tan corduroy blazer, the tan wide leg trousers, the rust orange satin pussy bow blouse, the brown heeled boots and the tortoiseshell sunglasses pushed up on her head. Do not restyle her, do not change her face.\n\nOn the right, a neat grid of six product cutout tiles, two columns by three rows, each tile a rounded square with a very pale peach background. Each tile holds one item from her outfit, photographed flat on white as a clean e-commerce product shot, no person wearing it: the tan corduroy blazer, the tan wide leg trousers, the rust orange satin blouse with the bow tied, the tortoiseshell oversized sunglasses, one brown heeled ankle boot, and the gold chain necklace. Each garment matches its counterpart on her exactly in colour, fabric and cut.\n\nPhotoreal product photography inside a flat pixel-art interface. No legible text anywhere except the window title and the menu bar words." } }' ``` ## Output Schema Response returned by `GET /v1/prediction/{id}` when the job completes: ```json { "status": "success", "predictionID": "string", "output": "array", "metrics": { "predict_time": "number (seconds)" } } ``` ## Polling ```bash curl https://api.eachlabs.ai/v1/prediction/{PREDICTION_ID} \ -H "Authorization: Bearer YOUR_API_KEY" ``` | Status | Meaning | |--------|---------| | `processing` | Still running — poll again | | `success` | Done — read `output` | | `error` | Failed — read `message` / `details` | ## Webhook (alternative to polling) Pass `"webhook_url": "https://your.host/path"` in the create request. Eachlabs POSTs this payload when the job ends: ```json { "exec_id": "prediction-uuid", "status": "succeeded", "output": "https://...", "error": "" } ``` `status` is `"succeeded"` or `"failed"`. `exec_id` equals the `predictionID` from create. Return 2xx within 30 seconds. ## Errors Error body: `{ "status": "error", "message": "...", "details": "..." }` | Code | Meaning | |------|---------| | `400` | Invalid input | | `401` | Missing / invalid `Authorization` bearer token | | `404` | Unknown model or prediction id | | `429` | Rate limit — 100 creates / min, 10 concurrent per key | | `5xx` | Retry with backoff | ## Overview **GPT Image | v2.5 | Sunburst | Edit Overview** GPT Image | v2.5 | Sunburst | Edit is an **OpenAI image-to-image** editing model designed for high-control visual workflows where precise changes to existing images matter more than raw generation speed. Built within OpenAI’s GPT Image family, this Sunburst tier focuses on refined, production-ready edits for campaign creatives, product photography, and polished marketing visuals, trading slightly higher latency for tighter edit control. In practice, GPT Image | v2.5 | Sunburst | Edit lets you upload an image, specify detailed instructions in natural language, and receive a revised version that targets the requested regions while maintaining overall composition. On each::labs, this model exposes the **GPT Image | v2.5 | Sunburst | Edit API** so developers and teams can automate sophisticated image-to-image transformations directly from their workflows. ## Usage Notes - API Base URL: `https://api.eachlabs.ai/v1` - Authentication: send `Authorization: Bearer YOUR_API_KEY`. Generate a key from the Eachlabs dashboard at https://www.eachlabs.ai/dashboard/api-keys. - File-typed parameters (`*_url`, `image_url`, `video_url`, `audio_url`, etc.) accept publicly-reachable HTTPS URLs only. Upload your asset first (GCS / S3 / your CDN) and pass the resulting URL. Data-URIs and localhost URLs are rejected. - For structured parameters (arrays / objects) send real JSON values, not stringified payloads. - Monetary values are reported in USD; per-token / per-megapixel rates may be billed in micro-cents internally. - Prefer `webhook_url` over polling for long-running predictions — see the Webhook Callback section.