# Align a saved voice's transcript to its audio

- **Method:** `POST`
- **Path:** `/api/v1/voices/{voice_id}/align`
- **Operation ID:** `align_voice_api_v1_voices__voice_id__align_post`
- **Tags:** Voices

Find word timings for a saved voice's transcript, transcribing the audio when the voice has none. Waits until the voice is aligned. A voice that is already aligned, or holds no speech, returns at once unless `force` is set.

## Effective servers

- `http://127.0.0.1:8100`

  Voice Creator Pro on this computer

## Path parameters

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

## Request body

**Required:** `true`

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

schema: `AlignVoiceRequest`

- **`force`**: `boolean`, default: `false`

  Align again even if the voice is already aligned or was found to hold no speech

**Example:**

```json
{
  "force": false
}
```

## Responses

### 200 Successful Response

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

schema: `AlignVoiceResponse`

- **`state` (required)**: `string`, possible values: `"done", "no_speech", "failed", "pending"`

  Where the voice's alignment stands once the call returns

**Example:**

```json
{
  "state": "done"
}
```

### 400 Invalid voice ID format.

### 404 Voice not found.

### 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

- `AlignVoiceRequest` — shown above.
- `AlignVoiceResponse` — shown above.
- `HTTPValidationError` — shown above.
- `ValidationError` — shown above.
