Profiles are the core concept that makes Phota different from generic image generation. A profile teaches the API what a specific person looks like, so their identity is preserved across all edits and generations.Documentation Index
Fetch the complete documentation index at: https://docs.photalabs.com/llms.txt
Use this file to discover all available pages before exploring further.
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.
Tagging profiles
Tags let you group profiles by your own identifiers — for example, your end-user’s username or account ID. This is useful when your API key manages profiles for many end-users and you need to list only the profiles belonging to a specific one.Setting a tag
Pass the optionaltag field when creating a profile:
Filtering by tag
Use thetag query parameter on GET /profiles/ids to retrieve only profiles with a specific tag:
tag parameter returns all profiles.
Referencing profiles in requests
There are two mechanisms for referencing a profile: theprofile_ids request field and inline [[profile_id]] prompt
syntax. In most cases you pick one, not both. If you do use both, the API merges them automatically — there’s no
benefit to duplicating the same ID in both places.
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_ids field (edit and enhance)
This array tells the API which profiles are available as candidates for the request — typically all profiles belonging
to a single end-user. The API matches the people in the input photo to these candidates automatically, so you don’t
have to name anyone in the prompt:
The [[profile_id]] prompt syntax (edit and generate)
Inline [[profile_id]] in the prompt attaches a profile to a specific phrase, so the model knows exactly which
person the prompt is talking about. This works with any number of subjects — a single reference is perfectly fine:
profile_ids field) and the clearest way to
refer to multiple people in one prompt:
[[profile_id]] appears in an edit prompt, it’s automatically merged into the profile_ids candidate list — you
don’t need to list the same ID in both places.
Which should I use?
| Endpoint | Prompt doesn’t name the subject | Prompt refers to a specific subject |
|---|---|---|
/edit | profile_ids | [[profile_id]] in the prompt (profile_ids optional) |
/generate | N/A — use [[profile_id]] | [[profile_id]] in the prompt (no profile_ids field exists) |
/enhance | profile_ids | N/A — /enhance has no prompt |
/edit. If you use both, the API merges them, so there’s no 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.
