# GPT Image | v2.5 | Flare | Edit Precision editing that targets only the requested changes while preserving the subject, composition, and background, with consistent identity across different styles and multiple rounds of edits. ## API Information - **Model Slug:** gpt-image-v2-5-flare-edit - **Branded URL:** https://www.eachlabs.ai/openai/gpt-image/gpt-image-v2-5-flare-edit - **Provider:** OpenAI - **Category:** Image to Image - **Output Type:** array - **Status:** active - **Base Cost:** Fallback when usage.cost is absent: GPT Image v2.5 Flare Edit token counts at OpenAI gpt-image rates (input 8/M, image output 32/M) - **Estimated Processing Time:** 60 seconds - **Interactive Demo:** https://www.eachlabs.ai/ai-models/gpt-image-v2-5-flare-edit ## Pricing - **Charge Type:** dynamic - **Pricing Details:** Fallback when usage.cost is absent: GPT Image v2.5 Flare 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 Flare 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 Flare 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-flare-edit", "input": { "image_urls": [ "https://cdn-us.eachlabs.ai/defaults/18f18627f36842938b5df8bcb3a8180c.png" ], "prompt": "Keep the composition exactly as in the reference image: the same wicker basket in the same position, the same arrangement of fruit, the same camera angle, the same kitchen background and the same soft window light.\n\nReplace every single piece of fruit with a chubby inflatable pool toy version of itself. Each one is fat, puffy and over-inflated, bulging with air, the shapes rounded into soft balloon-like blobs with all the sharp detail smoothed away. They look squishy and heavy with air, pressing and squashing against each other where they touch, deforming slightly at the contact points the way inflatable toys do.\n\nEvery one is made of glossy PVC vinyl with a small plastic inflation valve, visible welded seam lines running around the body, and soft creases where the material folds. The surfaces are shiny and reflective with bright hard highlights, the colours flat and saturated like cheap beach toys rather than real produce. Details are printed on rather than real: the strawberry seeds are flat printed dots, the pineapple texture is a printed pattern, the banana bunch is one fat inflated shape, the grape cluster is moulded as a single lumpy inflated blob instead of separate berries. Everything reads as plastic, nothing reads as food.\n\nThe basket, the striped cloth, the wooden table and the background stay exactly as they are, completely real and unchanged. Only the fruit becomes inflatable.\n\nPhotorealistic product photography, sharp focus, natural window light, unmistakably cheap inflatable vinyl." } }' ``` ## 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 | Flare | Edit Overview** GPT Image | v2.5 | Flare | Edit is an OpenAI image-to-image model variant focused on fast, controllable editing and restyling of one or more source images from a text prompt. It builds on the GPT Image 2 family that powers ChatGPT Images 2.5, inheriting sharper details, precise local edits, and responsive generation for production workflows. The primary differentiator of GPT Image | v2.5 | Flare | Edit is its emphasis on *mask-aware, fidelity-controlled edits* ## 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.