Skip to main content
This guide is for training a face through the API with video URLs. If you prefer a guided flow with upload checks and inline validation, use the PAL Maker.

Outcome

You will POST /v2/faces with train_video_url then poll GET /v2/faces/{face_id} until training finishes.

Prerequisites

  • Publicly downloadable URLs for each asset you send (for example presigned S3 GET URLs). Keep them valid for at least 24 hours after submission.

1. Create the face

Default model is phoenix-4. To request phoenix-3, include "model_name": "phoenix-3" in the JSON body. Personal face (training video):
curl --request POST \
  --url https://tavusapi.com/v2/faces \
  --header 'Content-Type: application/json' \
  --header "x-api-key: $TAVUS_API_KEY" \
  --data '{
    "callback_url": "",
    "face_name": "my_replica",
    "train_video_url": "https://example.com/training-video.mp4",
  }'
Synthetic / non-human: send train_video_url
curl --request POST \
  --url https://tavusapi.com/v2/faces \
  --header 'Content-Type: application/json' \
  --header "x-api-key: $TAVUS_API_KEY" \
  --data '{
    "callback_url": "",
    "face_name": "synthetic_replica",
    "train_video_url": "https://example.com/training-video.mp4"
  }'

2. Poll face status

Use Get Face:
curl --request GET \
  --url "https://tavusapi.com/v2/faces/$REPLICA_ID" \
  --header "x-api-key: $TAVUS_API_KEY"
Training usually takes 3–4 hours. Optional: set callback_url to receive status webhooks.

3. Start a conversation

Generate a conversation with your face using Create Conversation
curl --request POST \
  --url https://tavusapi.com/v2/conversations \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: $TAVUS_API_KEY" \
  --data '
{
  "face_id": $REPLICA_ID" 
}
'