openai/gpt-image-2.5-flare, served by Comfy Router from OpenAI.
Quick start
Create a key in your Comfy workspace and export it asCOMFY_API_KEY. The Python and TypeScript snippets use the Comfy SDKs (pip install comfy-sdk, npm install @comfyorg/sdk); the cURL snippet is the same call over raw HTTP.
Model ID: openai/gpt-image-2.5-flare
Endpoint: POST https://api.comfy.org/v2/models/openai/gpt-image-2.5-flare
- Wait for the result
- Queue and collect later
Schema
Input
string
Background transparencyPossible values:
transparent, opaquestring | string[]
The source image(s) to edit. PRESENCE OF THIS FIELD SELECTS THE EDIT OPERATION — omit it entirely for text-to-image generation.
The model’s published example is the GENERATION call, which omits this field. Adding
image is the whole of the difference between the two modes — same endpoint, same model id — except that an edit prompt describes the CHANGE you want rather than the scene, so the edit body below reads differently from the generation example even though only this field is structurally new.
It is copyable exactly as printed: {"prompt": "give the rocketship rainbow coloring", "image": ["data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg=="], "size": "1024x1024"} — the payload is a complete 1x1 PNG, not an abbreviation, and this body is pinned as an accepted case in Router’s own request-validation tests. Swap in your own image’s bytes.
Accepts one image or an array of them; gpt-image-1 and later take up to 16, which Router enforces from this schema before dispatching.string
One image, as either an https URL Router fetches on the caller’s behalf or a
data:image/<format>;base64,<payload> URI carrying the bytes inline. Accepted image types are png, webp and jpeg, and that set is ENFORCED at resolve time rather than left to the provider — an svg, gif, avif or tiff is refused here, naming the image you sent, instead of becoming a partner error two hops from the cause.
Prefer the URL form. A base64 payload inflates roughly 4/3 and the whole request body is capped at 20 MiB, so the inline form caps out near a 15 MB source image; a URL sidesteps that entirely.
THE URL MUST RESOLVE WITHOUT YOUR CREDENTIALS. Router fetches it server-side and sends no caller credential with the request, so a Comfy-signed asset URL — one whose signature is in the query string — is the supported form. An authenticated endpoint such as /api/assets/{id}/content answers Router 401 rather than the image; request that URL yourself and pass the signed URL it redirects to. The fetch is confined to Comfy’s own asset buckets rather than the open internet, on every redirect hop as well as the URL you send, so a third-party or redirecting URL is refused.
The example below shows the shape only: a real value also carries the signing query parameters, which are deliberately omitted here because a published example lives in the spec forever and a real signature is both a leaked credential and a link that stops working.
Each image is capped at 25 MiB and one request’s images at 64 MiB in total.string
The gpt-image model to run. Router splices the addressed model id in, so a caller addressing /v2/models/openai/gpt-image-2 does not send this.
string
Content moderation settingPossible values:
low, autointeger
The number of images to generate (1-10).Range:
1 to 10integer
Compression level for JPEG or WebP (0-100)Range:
0 to 100string
Format of the output imagePossible values:
png, webp, jpegstring
required
A text description of the image to generate, or of the edit to make to
image.string
The quality of the generated or edited imagePossible values:
low, medium, high, standard, hdstring
Size of the image (e.g., 1024x1024, 1536x1024, auto)
string
A unique identifier for end-user monitoring
GET /v2/models/openai/gpt-image-2.5-flare/openapi.json, the same document it validates a call against before the request reaches the provider.
Output
object[]
string
Base64 encoded image data
string
Revised prompt
string
URL of the image
object
integer
object
integer
integer
integer
object
integer
integer
integer
string
Whether the generated image’s background is opaque or transparent. Populated on the fal-served branch only, which reports
opaque.integer
Unix timestamp, in seconds, of when the generation completed. Declared
int64 because a present-day epoch value is close enough to 2^31 that an unformatted integer generates a 32-bit field in many SDK generators.Format: int64string
The encoding of the bytes in
data[].b64_json (for example png). Populated on the fal-served branch; absent on the OpenAI-served one, where the caller’s requested output_format is authoritative.string
The quality tier the generation actually ran at. Populated on the fal-served branch when it can resolve one; absent otherwise.
string
The pixel dimensions the generation actually ran at, as
<width>x<height>. Populated on the fal-served branch when it can resolve one; absent otherwise.Examples
Input
Output
Before you ship
The SDKs create anIdempotency-Key and reuse it for automatic retries. For manual retries, reuse the original key. Router can hold the connection for up to 10 minutes.
When a request fails, Router sends an X-Comfy-Error-Type response header explaining why. A 422 means Router rejected the input before calling the provider, and a 413 means the request body was larger than Router accepts. Download generated assets promptly because result URLs can expire.
Any size limit named in a field description above is the provider’s own bound on that field, quoted from the provider’s specification. Router applies a separate cap to the whole request body, which base64-encoded media counts against: see request body size.
Headers
Authentication, idempotency, request IDs, error buckets, retry pacing, spend limits.
Using the Router API
Model discovery, validation errors, retries, and billing.
Limitations
What Router does not do today, and what to use instead.