What is a profile?
A profile is a learned representation of a specific person’s appearance. You create one by uploading – reference photos of the same person. Phota processes these photos to learn the subject’s facial features, hair, skin tone, and overall appearance. Once a profile is trained, you can use it across unlimited edit, generate, and enhance requests. The API preserves the person’s identity even through dramatic transformations — placing them on a beach, changing their outfit, or restyling the entire scene.
Upload – reference photos to create a profile. Group shots are OK as long as your intended subject is the
most common one across all photos.How profiles work
Profiles work in two phases:- Training — you upload reference photos and the API learns the subject’s appearance (facial features, hair, skin tone, etc.).
- Inference — when you call
/edit,/generate, or/enhance, the API recognizes people in the input image (or described in the prompt) and decides which profiles from the candidate profiles to use to preserve their identities in the output. The fewer candidate profiles you pass, the easier it is for the API to match the right one. If a profile is not provided in the candidate profiles, the API will not consider it when matching.
profile_id -> you pass that profile in every edit or generation you run for them. Multi-person scenes work too —
reference multiple [[profile_id]] values in a single prompt.
Profile creation
Creating and using a profile follows this flow:Create the profile
Send the reference image URLs to
POST /profiles/add. Training starts immediately and runs asynchronously. You receive
a profile_id right away.Poll for training status
Call
GET /profiles/{profile_id}/status until the status is READY. Training typically takes ~20 minutes.| Status | Meaning |
|---|---|
VALIDATING | Images are being validated and prepared. Poll again in 10-30 seconds. |
QUEUING | Training job is queued. Poll again in 10-30 seconds. |
IN_PROGRESS | Model is actively training. Expected to finish within ~20 minutes. Poll again in 10-30 seconds. |
READY | Training completed. The profile is ready for use. |
ERROR | Training failed. Check the message field for details. |
Use the profile
Once ready, reference the profile in any edit, generate, or enhance request. See
Referencing profiles in requests below.
Referencing profiles in requests
There are two ways to tell the API about profiles, and they serve different purposes:The profile_ids field (edit and enhance)
Every edit and enhance request accepts a profile_ids array in the request body. This tells the API which profiles are
available as “models” for the request — typically all profiles belonging to a single end-user. The API needs this list
to know which identities it can draw from, even if the prompt does not explicitly mention every profile.
For edits and enhancements, profile_ids is often all you need. The API will match the people in the input photo to
the provided profiles automatically.
Your developer account holds all profiles, but only pass the ones belonging to the end-user whose photo is being
processed. This ensures correct identity matching and billing.
The [[profile_id]] prompt syntax (edit and generate)
In the prompt field of edit and generate requests, you can reference a profile inline using double brackets. This
tells the model which specific person you are referring to in the prompt.
For generation, [[profile_id]] is the only way to specify which profiles to use — the /generate endpoint does
not accept a profile_ids field. For edits, [[...]] is optional but useful when you want to reference a specific
person in a multi-person scene or add someone who isn’t in the input photo.
Generation example:
[[profile_id]] in an edit prompt, the API automatically merges it with the
profile_ids list, so you don’t need to list the same ID in both places:
Image requirements for training
- Minimum: images
- Maximum: images
- Format: publicly accessible URLs (signed URLs work)
Tips for best results
Good photos

✅
Well lit and sharp

✅
Diverse expressions and angles

✅
Diverse poses

✅
Diverse accessories (face visible)
Bad photos

❌
Extreme poses

❌
Small, dark or noisy

❌
Largely covered and occluded

❌
Blurry from movement
Next steps
Quickstart
Walk through the full workflow end to end.
