# Update the setup of an avatar project that has not started

- **Method:** `PATCH`
- **Path:** `/api/v1/talking-head/videos/{video_id}`
- **Operation ID:** `th_update_draft_api_v1_talking_head_videos__video_id__patch`
- **Tags:** Avatars

## Effective servers

- `http://127.0.0.1:8100`

  Voice Creator Pro on this computer

## Path parameters

- **`video_id` (required)**: `string`

## Request body

**Required:** `true`

**Content type:** `application/json`

schema: `TalkingHeadDraftPatchRequest`

- **`avatar_id`**: `string | null`, maxLength: `32`

  Saved avatar the photo came from
- **`engine`**: `string | null`, possible values: `"ltx-2.3", "ltx-2.5", "ltx-2.5-msr"`

  Video model
- **`fps`**: `integer | null`, possible values: `24, 25, 48, 50`

  Frame rate of the video
- **`headshot_base64`**: `string | null`, maxLength: `27962028`

  JPEG, PNG or WebP headshot
- **`headshot_generated`**: `boolean | null`

  The headshot is an AI avatar, sent with headshot\_base64
- **`history_id`**: `string | null`

  Saved generation to animate when source is history
- **`language`**: `string | null`, maxLength: `64`
- **`model_family`**: `string | null`, maxLength: `64`

  Voice model that speaks the text
- **`params`**: `object | null`

  Video model settings by name, from the model's params
- **`resolution`**: `string | null`, possible values: `"480p", "720p", "1080p", "1440p"`
- **`scene`**: `string | null`, maxLength: `500`
- **`source`**: `string | null`, possible values: `"history", "speech", "upload"`
- **`speech_text`**: `string | null`, maxLength: `900`

  Text to speak when source is speech
- **`subtitle_params`**: `object | null`
- **`upload_base64`**: `string | null`, maxLength: `89478488`

  WAV speech to animate when source is upload
- **`upload_name`**: `string | null`, maxLength: `200`

  File name of the uploaded speech
- **`voice_design`**: `string | null`, maxLength: `1500`

  Voice description for a designed voice, or style for a built-in one
- **`voice_id`**: `string | null`, maxLength: `200`
- **`voice_source`**: `string | null`, possible values: `"library", "tts", "design"`
- **`wizard_step`**: `integer | null`

  Setup step the draft is on, 0 to 3

**Example:**

```json
{
  "wizard_step": 1,
  "headshot_base64": "",
  "headshot_generated": true,
  "avatar_id": "",
  "upload_base64": "",
  "upload_name": "",
  "source": "history",
  "history_id": "",
  "voice_id": "",
  "voice_source": "library",
  "model_family": "",
  "voice_design": "",
  "speech_text": "",
  "language": "",
  "scene": "",
  "resolution": "480p",
  "fps": 24,
  "engine": "ltx-2.3",
  "subtitle_params": {
    "additionalProperty": "anything"
  },
  "params": {
    "additionalProperty": "anything"
  }
}
```

## Responses

### 200 Successful Response

**Content type:** `application/json`

`any`

**Example:**

```json
null
```

### 422 Validation Error

**Content type:** `application/json`

schema: `HTTPValidationError`

- **`detail`**: `array`

  **Items:**

  schema: `ValidationError`
  - **`loc` (required)**: `array of (string | integer)`
  - **`msg` (required)**: `string`
  - **`type` (required)**: `string`
  - **`ctx`**: `object`
  - **`input`**: `any`

**Example:**

```json
{
  "detail": [
    {
      "loc": [
        ""
      ],
      "msg": "",
      "type": "",
      "input": null,
      "ctx": {}
    }
  ]
}
```

## Schemas

- `HTTPValidationError` — shown above.
- `TalkingHeadDraftPatchRequest` — shown above.
- `ValidationError` — shown above.
