Protoface Seedream 5.0 Pro · Edit Image
Multi-reference editing for four and a half cents
- image
- mask
- files
- run id
What it's for
Instruction-based image editing, at a price that makes it hard to argue with. The pack's catalog prices a Seedream 5.0 Pro edit job at 5 credits at 1k or 1.5k and 9 credits at 2k - and since the same grid lists 5 credits as $0.045, you're looking at under five cents an edit. That's the number to hold on to, because it changes how you'd use the node: not as a precious final step, but as an iteration tool you can afford to be wrong with.
Seedream is a closed ByteDance product, sold but never released, so this isn't competing with your local inpaint workflow on price-per-VRAM - it's a different thing. You send an image and an instruction, you get a new image.
Mechanism
Every node in the Protoface pack is a thin client over one shared implementation, with per-model controls generated from the provider's public request schema. This one uploads your reference images, submits the edit, polls, downloads, and returns native ComfyUI IMAGE and MASK lists. Your pictures go to their servers. Same trade you're already making with any closed model.
The inputs
images is plural and it's a dynamic list - connect more than one and they all go as references. That's the feature worth the trip: a product shot plus a style reference, or an outfit plus a model, with the prompt explaining the relationship. Uploads are cached against the assets on the API side and re-uploaded if you deleted them, so repeatedly editing the same source isn't punished.
prompt is the instruction. "Make the fabric matte black, keep the lighting and the folds" is the register.
resolution - 1k, 1.5k, 2k - and the tooltip says what it is plainly: the output tier used for billing. 2k nearly doubles the cost.
aspect_ratio is optional, with a genuinely good tooltip: leave it empty and the node uses the closest supported ratio to your first input image. That's almost always what you want - the full enum runs 1:1, 1:2/2:1, 1:3/3:1, 2:3/3:2, 3:4/4:3, 4:5/5:4, 9:16/16:9 and 9:21/21:9.
output_format is jpeg or png. Use png if you're going to mask or composite downstream; jpeg is fine for delivery.
prompt_optimization_mode is standard or fast. The tooltip is the best-written one in the pack: standard does the full rewrite; fast is a lighter rewrite that generates several times quicker but follows long or intricate prompts less closely, and is served only by providers that honour it, so it has less failover depth. Translation: use fast when you're iterating and your prompt is simple, standard when the phrasing actually matters.
generation_id: fixed ID with identical inputs resumes the paid job instead of buying another; increment for a new generation. request_scope: auto-assigned, non-secret, headless-only concern.
Outputs: image (list), mask (list, inverted alpha), files (originals), run id.
Install
ComfyUI 0.41.0+ and Python 3.10+.
cd ComfyUI
git clone --branch v0.1.0 --depth 1 https://github.com/protoface-ai/protoface-comfyui.git custom_nodes/protoface
python -m pip install -r custom_nodes/protoface/requirements.txt
Or via Manager: search Protoface, install protoface-nodes, restart, reload the browser. Pip with ComfyUI's own interpreter. Then click Protoface in the lower-right and paste your key - headless setups use PROTOFACE_API_KEY or PROTOFACE_API_KEY_FILE. Requirements: httpx, jsonschema, Pillow, PyAV.
Where it goes wrong
Forgetting the ratio field exists. Empty means "match the first input image," which is right most of the time. Force a ratio and you may get a crop or a re-composition you didn't ask for.
2k by habit. Twice the credits for a tier you might not need. Edit at 1k, upscale the keeper locally - you already have the upscaler.
Multi-image confusion. The model can't tell which reference is "the subject" and which is "the style" unless you say so in the prompt. Ambiguous references produce a blend of both.
Expecting mask-perfect edges. The mask output is a bonus, not a segmentation guarantee. If you need precise mattes, do that part locally.
Retry-by-increment. A poll timeout is a recoverable job; bumping generation_id is a fresh charge. Requeue unchanged, or use run id with Resume Run.
Verdict
The value pick of the pack. Under five cents an edit at 1k, multiple references, an honest billing-tier tooltip and an aspect ratio default that respects your input. If you're going to experiment with a closed image model inside ComfyUI, start here rather than with the video nodes - you can afford to learn the node's dialect.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | The positive prompt for the generation. | |
| images | COMBO | Public URLs, data URIs, or asset ids. | |
| resolution | COMBO | 1k | The output resolution tier used for billing. 1k is the lower-cost tier; 2k is the higher-cost tier. |
| aspect_ratio | COMBO | The aspect ratio of the generated image. Leave empty to automatically use the closest supported aspect ratio based on the first input image. | |
| output_format | COMBO | jpeg | The format of the output image. |
| prompt_optimization_mode | COMBO | standard | Prompt optimization mode. The model rewrites your prompt before generating. 'standard' uses the full rewrite; 'fast' uses a lighter one that generates several times quicker but follows long or intricate prompts less closely, and is served only by the upstream providers that honour it, so it has less failover depth. |
| 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 | — |