Skip to main content
ByteDanceMediumHigh

FLUX PuLID

PuLID identity customization on FLUX-dev: generate photorealistic portraits of a specific person from one face photo, with markedly higher fidelity than SDXL-based variants. Tune id_weight and start_step to balance likeness against prompt editability.

47 credits
46 credits x num_outputs (1-4 images)
FLUX-dev backbone for photorealistic, high-fidelity portraits
Tuning-free ID preservation from a single face photo
id_weight (0-3) controls how strongly the face is preserved
start_step trades fidelity (0) against prompt editability (4)
1-4 outputs per run, up to 1536px

Run it right now

Test this model instantly in the Console Playground โ€” no code required

Sign in to try

Use with AI Assistant

Copy usage instructions for Claude, ChatGPT, or other AI

Quick Start

curl -X POST "https://api.core.today/v1/predictions" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: cdt_your_api_key" \
  -d '{
  "model": "bytedance/flux-pulid",
  "input": {
    "main_face_image": "https://example.com/woman.png",
    "prompt": "a woman holding sign with glowing green text \"PuLID for FLUX\"",
    "width": 896,
    "height": 1152,
    "start_step": 4,
    "num_outputs": 4
  }
}'

Parameters

ParameterTypeRequiredDefaultDescription
promptstringNoportrait, color, cinematicText prompt to guide image generation
main_face_imagestringYes-ID image for face generation
negative_promptstringNobad quality, worst quality, text, signature, watermark, extra limbs, low resolution, partially rendered objects, deformed or partially rendered eyes, deformed, deformed eyeballs, cross-eyed, blurryEnter a negative prompt to specify what to avoid in the image
widthintegerNo896Output width in pixels (256-1536)
heightintegerNo1152Output height in pixels (256-1536)
num_stepsintegerNo20Number of denoising steps (1-20)
start_stepintegerNo0Timestep to start inserting ID (0-10). 0 for highest fidelity, 4 for more editability
guidance_scalenumberNo4Guidance scale for text prompt influence (1.0-10.0)
id_weightnumberNo1Weight of the ID image influence (0.0-3.0)
seedintegerNo-Random seed (leave blank or -1 for random)
true_cfgnumberNo1Set the Classifier-Free Guidance (CFG) scale. 1.0 uses standard CFG, while values >1.0 enable True CFG for more precise control over generation. Higher values increase adherence to the prompt at the cost of image quality.
max_sequence_lengthintegerNo128Set the max sequence length for prompt (T5), smaller is faster (128-512)
output_formatstringNowebpFormat of the output image
pngjpgwebp
output_qualityintegerNo80Set the quality of the output image for jpg and webp (1-100)
num_outputsintegerNo1Number of images to generate (1-4). Billed at 60 credits per image

How to Provide File Input

There are 3 ways to provide files for the main_face_image parameter:

Recommended

Direct Upload (Multipart)

Attach files directly to POST /v1/predictions/upload. No separate upload step needed.

curl -X POST "https://api.core.today/v1/predictions/upload" \
  -H "X-API-Key: cdt_your_api_key" \
  -F "model=bytedance/flux-pulid" \
  -F 'input={"prompt":"your prompt here"}' \
  -F "file:main_face_image=@your_file.png"

Image URL

Pass a publicly accessible URL directly. You can also use file_url from the Storage API.

{
  "model": "bytedance/flux-pulid",
  "input": {
    "prompt": "your prompt here",
    "main_face_image": "https://example.com/image.jpg"
  }
}
See the File Upload docs for more upload methods including Presigned URLs.

Common Parameters

Common parameters used when calling POST /v1/predictions.

ParameterTypeRequiredDefaultDescription
modelstringYes-Model identifier
inputobjectYes-Object containing the model-specific parameters from the table above
output_folderstringNo-Folder path for output files (max 256 chars, '..' not allowed)
webhook_urlstringNo-Webhook URL to call on completion
is_publicbooleanNofalseIf true, output files are also available via permanent public URLs

Examples

Portrait Holding a Sign

FLUX handles in-scene text while keeping the face โ€” four variations at once

curl -X POST "https://api.core.today/v1/predictions" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: cdt_your_api_key" \
  -d '{
  "model": "bytedance/flux-pulid",
  "input": {
    "main_face_image": "https://example.com/woman.png",
    "prompt": "a woman holding sign with glowing green text \"PuLID for FLUX\"",
    "width": 896,
    "height": 1152,
    "start_step": 4,
    "num_outputs": 4
  }
}'

Maximum-Fidelity Headshot

start_step 0 and a single output for the closest likeness

curl -X POST "https://api.core.today/v1/predictions" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: cdt_your_api_key" \
  -d '{
  "model": "bytedance/flux-pulid",
  "input": {
    "main_face_image": "https://example.com/face.jpg",
    "prompt": "portrait, color, cinematic, studio lighting, detailed face",
    "start_step": 0,
    "id_weight": 1,
    "num_outputs": 1
  }
}'

Tips & Best Practices

1start_step is the key dial: 0 gives the strongest likeness, 4 lets the prompt reshape the scene more freely
2Raise id_weight above 1 if the face drifts from the reference; the 0-4 start_step range is recommended
3num_outputs is billed per image (60 credits each) โ€” prototype with 1, then batch 4 for finals
4Prefer bytedance/pulid (2 credits/image) for cheap drafts and switch here for final photorealistic quality
5Only use photos of real people with their consent

Use Cases

Photorealistic personal branding and portrait imagery
Identity-consistent characters across marketing campaigns
High-fidelity avatars where the face must clearly match
Editorial-style photos placing a person in new scenes
Premium profile pictures with text or props in scene