Phota Train Profile
Training your own Phota identity profile from a pile of photos
- profile_id
- status
- profile
The node that makes the whole pack work
Everything else in this pack assumes you already own a trained profile. PhotaTrainProfile is where they come from: you hand it 5–50 photo URLs of a person or pet, and Phota's servers train an identity that captures their true likeness - the thing the pack contrasts with the approximate resemblance you get from single-reference local tools like IP-Adapter or InstantID. The README's demo says it in one line: six photos of a synthetic dog, and "a portrait of [[profile]] as an astronaut" returns the same dog. No local GPU, no insightface, no LoRA you have to babysit.
How it works
The image_urls field takes one publicly accessible URL per line (JPEG, PNG, WebP, or HEIC). On run, the node submits them to the API's profile-training endpoint, which returns a new profile ID, then - if you keep wait_for_ready on (the default) - it polls the training status every poll_interval_seconds (15 by default) until the profile hits READY, driving a progress bar while it waits. Standard tier runs roughly 25 minutes; the whole wait happens async with the HTTP polling offloaded to a thread, so other queued workflows keep executing instead of freezing on your training job.
Flip wait_for_ready off and the node returns immediately with a SUBMITTED status and the new profile ID, and you check progress later with PhotaProfileStatus. That's the mode for firing off a training run and walking away.
The two tiers are the main quality knob: standard takes 10–50 images for the highest quality, fast takes 5–10 and is quicker and cheaper. Either way, training is billed once per run from your prepaid credits - and per the delete node's warning, an unbilled training isn't refunded if you remove the profile, so pick your image set carefully the first time.
The inputs that matter
- image_urls - one public URL per line. This is the whole training corpus, so variety (angles, lighting, expressions) is what gets you a profile that survives across scenes.
- training_tier -
standard(10–50 images, best quality) orfast(5–10, quicker/cheaper). - wait_for_ready - on: block until READY and emit the finished profile; off: submit and return immediately.
- tag - optional label to group profiles, which the Gallery and Selector can filter on.
Also optional: poll_interval_seconds (5–120), timeout_minutes (1–240, default 60), and api_key. If the wait exceeds the timeout, the node gives up with a readable error and points you to PhotaProfileStatus to check later.
Outputs
- profile_id - the new profile's ID.
- status - READY (or SUBMITTED with
wait_for_readyoff). - profile - the typed
PHOTA_PROFILEreference, ready to wire into a Selector'ssubject_1socket or anyprofilesocket in the pack.
Install and the honest tradeoffs
Standard pack setup - 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. Key from platform.photalabs.com via PHOTA_API_KEY or phota.ini.
The honest part: your photos leave your machine and go to Phota's servers, training costs real money, and - like the rest of this small, newer service - there's little community signal on results yet. The URLs must be publicly reachable, so no files sitting on your local disk, no authenticated cloud links. Try the README's train_then_generate.json example workflow first with a handful of photos before you commit a big standard-tier run; it's the fastest way to see whether the likeness clears the bar you're used to from local LoRAs.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| image_urls | STRING | One publicly accessible image URL per line (JPEG/PNG/WebP/HEIC). standard tier: 10-50 images. fast tier: 5-10 images. | |
| training_tier | COMBO | standard | 2 options: standard, fast |
| wait_for_ready | BOOLEAN | true | Block until training finishes (~25 min). Off: return immediately. |
| tagopt | STRING | Optional tag to group profiles. | |
| poll_interval_secondsopt | INT | 155–120 | — |
| timeout_minutesopt | INT | 601–240 | — |
| 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. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| profile_id | STRING | — |
| status | STRING | — |
| profile | PHOTA_PROFILE | — |