Phota Edit
Prompt-editing a photo without losing the face
- image
- subject_1
- subject_2
- IMAGE
The hosted version of "edit this photo"
PhotaEdit takes an image and a text prompt and hands you back an edited image - "make this photo more vibrant," "turn the sky into a sunset," "put this product in their hand." If you've been paying attention to the local ecosystem, this is the same move as instruction-editing models like Qwen-Image-Edit or Flux Kontext: don't regenerate a character from scratch, edit the image you already have so the identity never gets re-invented. The difference is that here the model runs on Phota's servers, and identity is locked in by a trained profile instead of by careful LoRA balancing.
How it works
The node base64-encodes your IMAGE tensor into a PNG, sends it with your prompt to Phota's /edit endpoint, and decodes the returned image back into a normal IMAGE tensor - from the canvas it looks like any local edit node, except the pixels were made elsewhere. The call runs async with the HTTP work offloaded to a thread, so a slow edit doesn't stall the rest of your queue.
Identity is where it gets clever. Connect a profile (via profile_id, or the subject_1/subject_2 typed sockets) and the API preserves that subject's face when they're already in the input image. When they're not in the image - say you want a selfie of the subject holding a product you've provided - you write [[profile]] in the prompt to introduce them. Unlike PhotaGenerate, Edit never appends profiles implicitly: most edits already contain the subject, so it only substitutes your explicit placeholders. That's a deliberate design choice, and it saves you from profiles drifting into every edit you didn't ask for.
The inputs that matter
- image - the IMAGE tensor to edit (wire in whatever LoadImage or upstream node produced).
- prompt - the instruction. Multiline, defaults to "Make this photo more vibrant."
- num_outputs - 1–4 edited variants per run, handy when you want options.
- aspect_ratio / resolution / quality - resolution runs 1K–4K. Leave
qualityon auto unless you're ongpt-image-2; the README warns some base models reject the field outright.
The optional base_model dropdown is populated live from the API (flux-2, flux-2-pro, gpt-image-2, nb2, qwen-image-2, seedream-5-pro) and defaults to auto, meaning the server's default.
Output is a single IMAGE - straight into PreviewImage or a Save node.
Install, key, and the honest tradeoffs
Search Phota API Nodes in ComfyUI Manager, or:
cd ComfyUI/custom_nodes
git clone https://github.com/photalabs/comfyui-phota
Then restart. Only dependency is requests; no GPU, no model download. Get a key at platform.photalabs.com and prefer the PHOTA_API_KEY env var or phota.ini over the api_key widget - widget values get embedded in shared workflow JSON/PNG.
The honest part: this is billed per image from prepaid credits, and your photo leaves your machine to get edited. Phota is a small, newer service - you won't find a wall of community threads on it, so judge the likeness and quality on your own test runs. If a local instruction-edit chain plus a consistency LoRA already does what you need, that stays free after the first download; this node is for when you want the same result without babysitting a local stack.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| prompt | STRING | Make this photo more vibrant. | — |
| num_outputs | INT | 11–4 | — |
| aspect_ratio | COMBO | auto | 6 options: auto, 1:1, 3:4, 4:3, 9:16, 16:9 |
| resolution | COMBO | 1K | 3 options: 1K, 2K, 4K |
| quality | COMBO | auto | 4 options: auto, low, medium, high |
| profile_idopt | STRING | Profile ID(s) for identity preservation — connect a Phota Profile Selector or paste IDs, comma-separated for multiple subjects. The typed subject_1/subject_2 sockets take precedence for placeholder positions. | |
| api_keyopt | STRING | Leave empty (recommended) to use the PHOTA_API_KEY environment variable or phota.ini. A key typed here is saved inside the workflow — do not share such workflows. | |
| base_modelopt | COMBO | auto | Base model. 'auto' uses the API default. |
| subject_1opt | PHOTA_PROFILE | Typed profile reference; fills [[profile1]] (and joins [[profile]]). | |
| subject_2opt | PHOTA_PROFILE | Typed profile reference; fills [[profile2]] (and joins [[profile]]). |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |