π¨ MuAPI Text-to-Image
Sixty-Four Image Models in One Node, and You Still Have to Pick
- image
- image_url
- request_id
There's a category of ComfyUI node that looks like a sampler and isn't one. π¨ MuAPI Text-to-Image is the clearest example: you drop it on the canvas, type a prompt, and an image comes back - but no model runs on your GPU. Not one byte of Flux, Seedream or Nano Banana is on your disk, because none of them can be. This node is an HTTP client wearing a generator's clothes.
Which makes it the right tool for exactly one job: you want a model you cannot download. Or you have a very low-spec PC - the scenario in the one organic Reddit thread about this pack, where someone running "a very low-spec pc" asked whether the MuAPI nodes replace your whole workflow. They don't. They slot in beside it.
What it's for
The model dropdown is the point of the node. It holds 64 endpoints: flux-dev-image and flux-schnell-image, the Flux 2 family, flux-kontext-*-t2i, hidream_i1_*, gpt4o-text-to-image and gpt-image-1.5, google-imagen4 through ultra, the Seedream line up to seedream-5.0, qwen-image, nano-banana / -pro / -2, Midjourney v7/v8, Krea, Ideogram v3, Z-Image, SDXL, and a custom escape hatch at the bottom. Each name is a different backend, a different price and a different look, and switching between them is one dropdown - no download, no VRAM math, no restart.
Cost is the honest counterargument, and the community says it loudly every time a closed model lands in a graph: per-call metering on video adds up fast, and images are the cheap end but still aren't free. Local generation is free after electricity. This isn't.
The inputs that matter
Three required fields, and the third one is cleverer than it looks:
model- pick your endpoint.prompt- a multiline box, no fancy syntax.aspect_ratio-1:1,16:9,9:16,4:3,3:4,3:2,2:3.
For a listed set of endpoints - Flux dev/schnell, Flux 2, HiDream, SDXL, Z-Image, Wan and Hunyuan image, everything except the Kontext models - the node converts aspect_ratio into explicit width/height because those APIs demand pixel dimensions. 1:1 becomes 1024Γ1024, 16:9 becomes 1344Γ768. On the newer endpoints that take a ratio string, the dropdown passes through. Nothing you have to configure; just don't be surprised that the same setting sends different payloads.
Optionally: negative_prompt (only attached when non-empty), custom_endpoint (used when model is custom), and extra_params_json, which is merged straight into the request body. That last field is your unlock for anything the three widgets don't expose - seeds, guidance, whatever that endpoint supports. Check muapi's endpoint docs for field names rather than guessing; a wrong key in the JSON is usually ignored, not rejected.
Outputs
image (IMAGE) drops a real ComfyUI tensor into your graph, so the result flows into your local upscaler, masker or detailer exactly like a local generation. image_url gives you the CDN link for reuse in the Extend or Video nodes. request_id is the handle - that's what you feed π¬ MuAPI Extend Video later, so wire it somewhere if you plan to continue the shot.
Two things worth knowing before you blame the node. Negative prompts do very little on 2026-era instruction models, which is a general truth the KB covers under "my negative prompt does nothing" in troubleshooting.md - don't burn credits tuning one. And the download step fails soft: if the result URL can't be fetched, the pack logs [MuAPI] image download failed and hands you a black 64Γ64 tensor instead of an error. Black square? Read the console, not the graph.
Install
ComfyUI Manager β Install via Git URL β https://github.com/SamurAIGPT/muapi-comfyui β restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/SamurAIGPT/muapi-comfyui
pip install -r muapi-comfyui/requirements.txt
requirements.txt is thin - requests, Pillow, numpy, torch, and opencv-python, which is only used for pulling frames out of videos. No model downloads, no checkpoints, nothing in models/. That's the tradeoff in one line: the install is trivial and the bills are per image.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| model | COMBO | flux-dev-image | 64 options: flux-dev-image, flux-schnell-image, flux-2-dev, flux-2-pro, flux-2-flex, flux-2-klein-4b, +58 |
| prompt | STRING | A photorealistic portrait of an astronaut on Mars | β |
| aspect_ratio | COMBO | 1:1 | 7 options: 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, +1 |
| api_keyopt | STRING | β | |
| negative_promptopt | STRING | β | |
| custom_endpointopt | STRING | β | |
| extra_params_jsonopt | STRING | {} | β |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | β |
| image_url | STRING | β |
| request_id | STRING | β |