wavespeed/ultimate-image-upscaler, served by Comfy Router from WaveSpeed.
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: wavespeed/ultimate-image-upscaler
Endpoint: POST https://api.comfy.org/v2/models/wavespeed/ultimate-image-upscaler
Schema
Input
boolean
default:"false"
If enabled, the output will be encoded into a BASE64 string instead of a URL.
string
required
The URL of the image to upscale.
string
default:"\"jpeg\""
The format of the output image.Possible values:
jpeg, png, webpstring
default:"\"4k\""
The target resolution of the output image.Possible values:
2k, 4k, 8kGET /v2/models/wavespeed/ultimate-image-upscaler/openapi.json, the same document it validates a call against before the request reaches the provider.
Output
integer
WavespeedAI’s own envelope status code, mirroring an HTTP status (200 on the document this schema describes). Wavespeed reports some failures here rather than in the transport status.
object
required
string
ISO-8601 timestamp of when Wavespeed created the prediction.
string
Wavespeed’s free-text failure reason, an empty string when there is none. A prediction that genuinely failed reaches a Router caller as a Comfy Router error rather than as this document.
string
Wavespeed’s identifier for the prediction Router submitted and polled.
string
The Wavespeed model id the prediction ran on.
string[]
required
The finished generation. Present and non-empty on the document Router returns; this list IS the result. Each element is a URL to the generated content - an MP4 for
wavespeed/flashvsr, an image for the two upscalers - or, for the two image ids when the request set enable_base64_output, the base64-encoded bytes themselves. The links are Wavespeed’s own and expire.string
required
The prediction’s terminal state as Wavespeed spelled it. Not narrowed to an enum here: Router forwards the value unchanged and the poll classifier lower-cases before comparing, so a success can legitimately arrive as
completed, succeeded, success or done, in any case.object
Wavespeed’s own timing measurements.
integer
Inference time in milliseconds. Wavespeed’s number, not the Comfy charge.
object
Wavespeed’s own links for the prediction.
string
The prediction-result URL Router polled.
string
Envelope status message, for example
success.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. 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.