Protoface Recraft V4.1 · Text to Image Utility
Recraft's boring-named node is the one for clean, graphic-looking stills
- image
- mask
- files
- run id
"Utility" is the least inviting word you can put in a node title. It also happens to be the operation you want when the target is a poster, a sticker sheet, an icon set, or anything else that has to look designed rather than photographed. This node is Recraft V4.1, reached through the Protoface pack, and it does exactly one thing: text in, a still out, four credits gone.
What you're actually calling
Recraft does not run on your machine, and this node doesn't pretend otherwise. Protoface's pack is a schema-generated front end over its own HTTP API - every model/task pair in the catalog becomes a node with native ComfyUI widgets. There is no checkpoint to download, no VRAM to free, no sampler. You type a prompt, the node uploads it, a job runs remotely, and a downloaded PNG lands on an image socket as if a local sampler had made it. The tradeoffs of that whole category - per-call cost, inputs leaving the box, a content filter you can't patch out - are covered in the KB's API-wrapper-nodes write-up and they all apply here.
Why Recraft specifically? Because its reputation is design output and vector-native work rather than photoreal rendering. Recraft V3 turned up anonymously on the Artificial Analysis leaderboard as "red_panda," scored first, and held it for months; the community's summary at the time was "the best AI image generator you never heard of," with native SVG as the differentiator. V4.1 is that same lineage, several versions on, and the utility operation is its flat, graphic, layout-friendly mode as distinct from the plain image.generate op. The pack prices both at four credits a job, so trying this one costs you nothing extra versus the standard one.
How it works
Under the hood the node builds a request with your prompt, an image_size enum, and the operation name, validates it against the published JSON schema before anything is uploaded or charged, then polls the job and downloads the results into the private state directory (~/.cache/protoface-comfyui by default). You will not see a sampler, a steps count, or a CFG - Recraft doesn't expose them. What you get instead is one framing dial and a prompt.
The controls you'll actually touch
Two of the four fields matter on day one.
prompt is a multiline text box, up to 10,000 characters. Recraft responds well to art-direction language - "flat vector illustration," "two-colour icon, thick outline," "1980s travel poster, limited palette" - because the design-y modes are where this model earns its keep. If you prompt it like a Flux photoreal prompt you'll get something vaguely photographic and a bit stiff.
image_size is a preset, not a resolution: 1:1, 16:9, 9:16, 4:3, 3:4. There is no 1024×1024 or megapixel control, so if you need an exact pixel grid you resize downstream, in ComfyUI, for free.
The other two are the pack's bookkeeping fields. generation_id is the identity of the paid job - keep it fixed and re-queueing reuses the same result, increment it and you've bought a new generation. It is not a seed and has nothing to do with the model's randomness. request_scope is an advanced, non-secret per-node scope that headless clients have to supply themselves; the frontend fills it in for you, and if it's blank the node refuses with a message telling you to recreate the node.
Outputs and where they go
image is an IMAGE list - plural, because the API can return more than one asset, and ComfyUI will map any downstream node over the list for you. mask comes along with it as an inverted-alpha native mask, and transparent-background output from a design model is genuinely useful as a cutout.
files is the original downloaded assets, and run id is your receipt. Wire files into Protoface Save File if you want the untouched PNG on disk with a predictable name; wire run id into a note or a text file if you're keeping a paper trail, and into Protoface Resume Run if the browser disconnects mid-job.
Install
Through the Manager: search Protoface, install protoface-nodes, restart ComfyUI, reload the browser. Manually:
cd ComfyUI/custom_nodes
git clone --branch v0.1.0 --depth 1 https://github.com/protoface-ai/protoface-comfyui.git protoface
python -m pip install -r protoface/requirements.txt # use ComfyUI's own interpreter
You need ComfyUI 0.41.0+ and Python 3.10+. The requirements are refreshingly small - httpx, jsonschema, Pillow, av - because nothing is being inferred locally. Then click Protoface in the lower-right of the canvas and paste an API key from your Protoface account; for a headless box use PROTOFACE_API_KEY or PROTOFACE_API_KEY_FILE instead. This bills your Protoface account directly and does not touch Comfy credits.
Where people get burned
The key lives in server memory, not in the workflow - so after every ComfyUI restart you re-enter it, and a node that worked last night fails with an auth error in the morning. That's the most common "it broke" in this pack and it isn't broken.
Second: generation_id is fixed by default, deliberately. Tweak your prompt, queue again, and you get the same recorded result back, because changing the prompt without changing the id looks like a retry. Bump the id (or enable increment-after-generation) when you mean it. Third: interrupted jobs are cancellations, and cancellation is best effort - not a refund.
If the node can't be found at all after install, check that custom_nodes/protoface/__init__.py exists and that you don't have two copies; the Manager's search index also lags Registry publication, which is why the git tag path is documented.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Text prompt for the generated image. | |
| image_size | COMBO | 1:1 | Output image size preset. |
| generation_id | INT | 00–9007199254740991 | Keep fixed to reuse/resume this paid job. Increment for a fresh paid generation; independent of the model seed. |
| request_scope | STRING | Automatically assigned per node. Headless clients must supply a stable unique workflow/node ID. This is not a secret. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| mask | MASK | — |
| files | PROTOFACE_FILE | — |
| run id | STRING | — |