luma/photon-flash-1, served by Comfy Router from Luma.
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: luma/photon-flash-1
Endpoint: POST https://api.comfy.org/v2/models/luma/photon-flash-1
Schema
Input
string
default:"\"16:9\""
The aspect ratio of the generationPossible values:
1:1, 16:9, 9:16, 4:3, 3:4, 21:9, 9:21string (uri)
The callback URL for the generationFormat:
uriobject
object
The image identity object
string (uri)[]
The URLs of the image identity
string
default:"\"image\""
Possible values:
imageobject[]
The image reference object
string (uri)
The URL of the image referenceFormat:
urinumber
The weight of the image reference
string
The image model used for the generation. On the Comfy Router route
POST /v2/models/luma/{model} this field is supplied from the path and MUST NOT be sent; on the v1 POST /proxy/luma/generations/image route it is constrained to the LumaImageModel enum (photon-1, photon-flash-1), which the Rewrite enforces by refusing an omitted or unknown model.object
The modify image reference object
string (uri)
The URL of the image referenceFormat:
urinumber
The weight of the modify image reference
string
The prompt of the generation
object[]
The image reference object
string (uri)
The URL of the image referenceFormat:
urinumber
The weight of the image reference
GET /v2/models/luma/photon-flash-1/openapi.json, the same document it validates a call against before the request reaches the provider.
Output
object
The assets of an image generation.
image is the result; video and progress_video belong to the Dream Machine VIDEO operation, which shares this status route, and Luma sends them here as explicit nulls.string (uri)
The URL of the generated image — the leaf a
luma/photon-* generation fills. Null until the generation reaches completed.Format: uristring (uri)
Always null on an image generation; it is the in-flight preview Luma publishes while a VIDEO generation runs.Format:
uristring (uri)
Always null on an image generation; the
luma/ray-* video models fill it instead.Format: uristring (date-time)
The date and time when the generation was createdFormat:
date-timestring
The reason for the state of the generation
string
The type of the generation — always
image on this operationPossible values: imagestring (uuid)
The ID of the generationFormat:
uuidstring
The model used for the generation
object
The image generation request, echoed back inside the terminal document. Luma serialises every field of its request model, writing an explicit
null into each one the caller did not set, so read a field’s presence from its VALUE rather than from the key.string
default:"\"16:9\""
The aspect ratio of the generationPossible values:
1:1, 16:9, 9:16, 4:3, 3:4, 21:9, 9:21string (uri)
The callback URL for the generationFormat:
uriobject
object
An image identity as it comes BACK inside the terminal document. Same shape as
LumaImageIdentity, with its members nullable for the reason LumaImageRefEcho gives.string (uri)[]
The URLs of the image identity
string
Always
image when set, echoing the operation. Null when the caller did not send one, for the reason this whole echo object exists.object[]
An image reference as it comes BACK inside the terminal document. Same shape as
LumaImageRef, with each member nullable because Luma echoes an unset one as an explicit null rather than omitting it.string (uri)
The URL of the image referenceFormat:
urinumber
The weight of the image reference
string
default:"\"photon-1\""
The image model used for the generationPossible values:
photon-1, photon-flash-1object
A modify-image reference as it comes BACK inside the terminal document. Same shape as
LumaModifyImageRef, with its members nullable for the reason LumaImageRefEcho gives.string (uri)
The URL of the image referenceFormat:
urinumber
The weight of the modify image reference
string
The prompt of the generation
object[]
An image reference as it comes BACK inside the terminal document. Same shape as
LumaImageRef, with each member nullable because Luma echoes an unset one as an explicit null rather than omitting it.string (uri)
The URL of the image referenceFormat:
urinumber
The weight of the image reference
string
The state of the generationPossible values:
queued, dreaming, completed, failedExamples
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. Download generated assets promptly because result URLs can expire.
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.