Protoface Recraft V4.1 · Text to Image
The design model with two fields
- image
- mask
- files
- run id
The smallest node in the pack
prompt, image_size, and the two booking fields. That's it. No seed, no style picker, no negative prompt, no resolution tier, no quality dial.
That last absence is the giveaway: every other image node in this pack has something to trade money against - a quality tier, a resolution tier, a pixel budget. Recraft doesn't expose one here, which means the price per call is whatever it is and your only lever is image_size.
So why bother? Because Recraft is the design model. Its reputation comes from layout, typography, flat vector-ish illustration and brand-consistent graphics rather than photoreal people - it's the one you point at "a clean infographic icon set" or "a poster with a big headline." If your task is a still of a person, the FLUX/MAI/GPT Image nodes are better value. If your task is a graphic that looks like a designer made it, this is the specialist.
One thing to keep straight: Recraft's vectorize and utility operations are separate tasks in Protoface's catalog, not features of this node. This node generates raster stills. If you're here because you read that Recraft does SVG, that's a different task node - search for it by name in Add Node.
Inputs and outputs
prompt does everything. For design work that means naming the artefact and its constraints: "flat two-colour icon of a coffee cup, thick uniform strokes, generous padding, on white." Style words carry more weight here than they do on photographic models.
image_size is a size preset - a ratio list with 1:1 as the default. Pick the one that matches your layout; there's no free pixel entry, so exact dimensions come from your downstream crop or upscale.
generation_id is the identity of the paid job: leave it fixed and requeueing unchanged inputs reuses or resumes the run; increment it and you've bought a new generation. Since there's no seed, that's the only rerun lever you have - and it gives you the same image back, not a variation. request_scope is auto-assigned per node, with headless callers required to supply a stable unique value.
image (IMAGE, list), mask (MASK, list), files (PROTOFACE_FILE originals, for Protoface Save File - useful for flat graphics where you don't want a re-encode touching hard edges), and run id for support and Protoface Resume Run.
Install
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
ComfyUI 0.41.0+, Python 3.10+, deps httpx, jsonschema, Pillow, av>=14. Nothing to download model-wise; the pack is an API client. Manager route: search Protoface, install protoface-nodes, restart, reload the browser. Then the Protoface button, lower-right, and your key - memory-only, so re-enter after a restart or set PROTOFACE_API_KEY_FILE.
This extension bills your Protoface account directly; Comfy Partner Node credits don't apply to it.
Where people get bitten
Expecting knobs that don't exist. If you're chasing a specific look and the only dial is aspect ratio, you're re-writing the prompt each attempt and paying each time. Draft your prompt carefully before the first queue.
Expecting photorealism. Recraft's strength is design artefacts; a portrait request through this will be compared unfavourably against the pack's photographic models, and that's a category mismatch rather than a bad prompt.
Then the pack-wide recovery rule: a timeout isn't a lost image. Keep generation_id, requeue, or resume with the run id. Don't increment it to retry, don't clear ~/.cache/protoface-comfyui mid-recovery, and don't expect a refund from cancelling - the API's cancellation is best effort by design.
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 | — |