luma/photon-1, served by Comfy Router from Luma.
Quick start
Create a key at platform.comfy.org/profile/api-keys 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-1
Endpoint: POST https://api.comfy.org/v2/models/luma/photon-1
Schema
Input
Router has not published an authored input schema for this model yet:
GET /v2/models/luma/photon-1/openapi.json returns an open object with x-comfy-input-schema-authored: false. Router forwards the body to Luma unchanged, so Luma’s own API reference is authoritative for the request fields, and nothing is validated server side.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
Output
Before you ship
The snippets above are the shortest working call. Three things are the same for every model and are documented once on the Comfy Router headers page: send anIdempotency-Key on every paid call and reuse it when you retry, expect the connection to be held up to Router’s 10 minute deadline, and keep X-Comfy-Request-Id from every response. The SDKs do all three for you; the cURL tab does none of them. On failure, X-Comfy-Error-Type names the bucket, and a 422 means the body failed the model’s schema and was never billed.
Headers
Authentication, idempotency, request IDs, error buckets, retry pacing, spend limits.
Quick Start
Typed error handling in Python and TypeScript, reading the 422, walking the catalog.
Limitations
What Router does not do today, and what to use instead.