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 and npm install @comfyorg/sdk); the cURL snippet is the same call over raw HTTP.
Model ID: minimax/minimax-h3
Endpoint: POST https://api.comfy.org/v2/models/minimax/minimax-h3
- Wait for the result
- Queue and collect later
The same body, sent to
POST https://api.comfy.org/v2/models/minimax/minimax-h3/requests. Router answers 201 with a request_id as soon as the run is admitted, and the result is collected once it is ready, from this process or another one. Queued delivery walks through status, cancellation and collection.Schema
Input
boolean
Whether to add an AIGC watermark to the output. Defaults to false.
string
Optional. URL to receive task state changes after challenge verification.
object[]
required
Content items driving the generation. Must contain one non-empty text item; optionally add first_frame/last_frame images or reference_* media.
object
Audio source. Required for audio_url items.
string
A publicly reachable URL, an mm_file://{file_id} reference, or a data URI.
object
Image source. Required for image_url items.
string
A publicly reachable URL, an mm_file://{file_id} reference, or a data URI.
string
Role of a media item. Options: first_frame, last_frame, reference_image, reference_video, reference_audio, base_video. Keyframe roles and reference_* roles are mutually exclusive within a request; base_video marks the source video of a video regeneration request.
string
The prompt text. Exactly one non-empty text item is required per request.
string
required
Content item type. Options: text, image_url, video_url, audio_url.
object
Video source. Required for video_url items.
string
A publicly reachable URL, an mm_file://{file_id} reference, or a data URI.
integer
required
Video length in seconds, 5 to 15.
string
ID of model. Options: MiniMax-H3. Router callers may omit this field or send null; Router injects the model selected by the request path before provider dispatch.
string
Aspect ratio. Options: adaptive (default), 21:9, 16:9, 4:3, 1:1, 3:4, 9:16. Required and must not be adaptive for text-to-video; ignored (treated as adaptive) for first-frame or last-frame generation.
string
required
Video resolution. Options: 2K, 768P.
integer
Random seed in [-1, 2^32 - 1]; omitted or -1 is random.Format:
int64GET /v2/models/minimax/minimax-h3/openapi.json, the same document it validates a call against before the request reaches the provider.
Output
object
A Minimax V2 video generation task.
object
Generated output; present when status is succeeded.
string
The enhanced video prompt produced by a succeeded h3_context_ir task.
string
Time-limited URL of the generated MP4. Query again for a refreshed URL.
number
The duration of the generated video in seconds.
object
Error details when status is failed; carries code and message.
string
The task ID.
string
The model used for the task.
string
The actual aspect ratio of the generated video.
string
The resolution of the generated video.
string
Task status. Options: queued, running, succeeded, failed, cancelled, expired.
string
The type of the task.
object
Usage recorded for the task.
integer
integer
number
number
integer
number
integer
Examples
Input
Output
duration, ratio, resolution, seed, aigc_watermark and callback_url, and none of them selects a silent render. A pipeline that means to lay its own voiceover over the clip therefore has to mute or strip the returned track first, or it will mux over a clip that is already talking. The prompt is what steers the audio: describe the dialogue, the sound effects and the music in the same prompt block as the shot. See the MiniMax H3 prompt guide for how to structure one, and the MiniMax H3 overview for what the model does in ComfyUI.
The video URL expires. Router re-hosts the MP4 and answers a Comfy-signed URL valid for 12 hours, falling back to MiniMax’s own shorter-lived link when the re-host fails. The task.content.url description in the response schema above tells you to query again for a refreshed URL: that is MiniMax’s own wording for their API, carried through unchanged, and Router does not expose MiniMax’s task-query route. Re-reading a queued request’s result route returns the stored result document while the request is retained, for 24 hours after it completes, but nothing documents that read as minting a newly signed URL. Download the MP4 promptly rather than storing the link.
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.
This page documents one partner model called through Comfy Router. The same comfy-sdk / @comfyorg/sdk package also ships a second client, for running a whole ComfyUI workflow graph on Comfy Cloud: Comfy(api_key=...) / new Comfy({ apiKey }), with client.workflows, client.assets and client.jobs. See Comfy SDKs.
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.