> ## Documentation Index
> Fetch the complete documentation index at: https://docs.youka.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Projects

> Create, inspect, wait on, and mutate work-in-progress karaoke projects

A project is the work-in-progress resource for one karaoke track. It owns the source media, synced lyrics, separated stems, render settings, and the exports created from it.

## `project create`

Create a new project from a local file or a URL.

```bash theme={null}
youka project create <source> [options]
```

<ParamField path="source" type="string" required>
  A local file path (`./song.mp3`) or an HTTP/HTTPS URL
  (`https://example.com/song.mp4`).
</ParamField>

### Options

| Option                          | Description                                                             |
| ------------------------------- | ----------------------------------------------------------------------- |
| `--title <title>`               | Project title                                                           |
| `--mode <mode>`                 | `none`, `transcribe`, or `align`                                        |
| `--lyrics <text>`               | Lyrics text                                                             |
| `--lang <code>`                 | Language code                                                           |
| `--sync-model <model>`          | Lyrics sync model                                                       |
| `--split-model <model>`         | Stem separation model                                                   |
| `--max-video-quality <quality>` | Maximum video quality for URL sources: `720p`, `1080p`, `4k`, or `best` |
| `--preset <presetId>`           | Apply a preset while creating the project                               |
| `--export`                      | Create an export after the project is ready                             |
| `--download`                    | Create an export, wait for it, and download it                          |
| `--output <path>`               | Output path for `--download`                                            |

### Examples

<CodeGroup>
  ```bash local-file theme={null}
  youka project create ./song.mp3 \
    --title "My Song" \
    --mode transcribe \
    --lang en \
    --wait \
    --json
  ```

  ```bash url theme={null}
  youka project create "https://example.com/song.mp4" \
    --max-video-quality 4k \
    --download \
    --output ./karaoke.mp4 \
    --json
  ```

  ```bash align theme={null}
  youka project create ./song.mp3 \
    --mode align \
    --lyrics "$(cat lyrics.txt)" \
    --sync-model audioshake-alignment \
    --wait \
    --json
  ```
</CodeGroup>

Rules:

* If you pass lyrics and omit `--mode`, the CLI defaults to `align`
* `align` requires lyrics
* `transcribe` and `none` do not accept lyrics
* `--download` implies `--export`
* `--max-video-quality` only applies to HTTP/HTTPS URL sources. It defaults to `1080p`, uses the best available quality up to that limit, and falls back to the best available format when the platform does not expose a capped stream.

## `project list`

List all projects for the authenticated account.

```bash theme={null}
youka project list
youka project list --json
```

## `project quote`

Quote the credits required to create a project without creating the project.

```bash theme={null}
youka project quote <source> [options]
```

`source` accepts the same local file path or HTTP/HTTPS URL forms as
`project create`. Without `--duration`, the CLI uploads the source so the server
can measure the media exactly, but it does not create a project.

### Options

| Option                          | Description                                                             |
| ------------------------------- | ----------------------------------------------------------------------- |
| `--title <title>`               | Project title                                                           |
| `--mode <mode>`                 | `none`, `transcribe`, or `align`                                        |
| `--lyrics <text>`               | Lyrics text for `align`                                                 |
| `--lang <code>`                 | Language code                                                           |
| `--sync-model <model>`          | Lyrics sync model                                                       |
| `--split-model <model>`         | Stem separation model                                                   |
| `--max-video-quality <quality>` | Maximum video quality for URL sources: `720p`, `1080p`, `4k`, or `best` |
| `--duration <seconds>`          | Quote from a known duration without uploading the source                |

Examples:

```bash theme={null}
youka project quote ./song.mp3 --mode transcribe --json
youka project quote https://example.com/song.mp4 --max-video-quality 4k --mode transcribe --json
youka project quote ./song.mp3 --duration 210 --mode none --json
```

## `project show`

Get the current project state, including normalized `state`, `pendingOperation`, stems, settings, and exports.

```bash theme={null}
youka project show <projectId>
```

<ParamField path="projectId" type="string" required>
  The project ID returned by `project create`.
</ParamField>

## `project wait`

Poll a project until it reaches a terminal state.

```bash theme={null}
youka project wait <projectId> --json
```

## `project delete`

Delete a project and all its associated stems, lyrics, and exports.

```bash theme={null}
youka project delete <projectId> --idempotency-key delete-<projectId>
```

<Warning>
  Deletion is permanent. Pass `--idempotency-key` to make retries safe.
</Warning>

## `project sync`

Re-run lyric transcription or alignment on an existing project.

```bash theme={null}
youka project sync <projectId> [options]
```

| Option                 | Description             |
| ---------------------- | ----------------------- |
| `--mode <mode>`        | `transcribe` or `align` |
| `--text <text>`        | Lyrics text             |
| `--lang <code>`        | Language code           |
| `--sync-model <model>` | Lyrics sync model       |

Example:

```bash theme={null}
youka project sync $PROJECT_ID \
  --mode align \
  --text "$(cat lyrics.txt)" \
  --wait \
  --json
```

## `project separate`

Re-run stem separation on an existing project.

```bash theme={null}
youka project separate <projectId> [--split-model <model>]
```

Example:

```bash theme={null}
youka project separate $PROJECT_ID --split-model audioshakeai --wait --json
```

## `project settings`

Read or update the active project settings.

```bash theme={null}
youka project settings <projectId>
youka project settings <projectId> --preset <presetId> --body ./settings.json
```

If neither `--preset` nor `--body` is present, the command returns the current settings. If either is present, it performs an update.

Examples:

<CodeGroup>
  ```bash show theme={null}
  youka project settings $PROJECT_ID --json
  ```

  ```bash update theme={null}
  youka project settings $PROJECT_ID \
    --preset preset_abc123 \
    --body ./project-settings.json \
    --json
  ```
</CodeGroup>

## `project stem list`

List stems for a project.

```bash theme={null}
youka project stem list <projectId>
youka project stem list <projectId> --json
```

## `project stem download`

Download one or more stem files to disk. Stems are downloaded in their original
stored format; the CLI does not transcode them.

```bash theme={null}
youka project stem download <projectId> <stemId> --output ./stems
youka project stem download <projectId> --type instrumental --output ./stems
youka project stem download <projectId> --type original --type backing-vocals --type vocals --output ./stems
youka project stem download <projectId> --all --output ./stems
```

Supported `--type` values are `original`, `instrumental`, `vocals`, and
`backing_vocals`. The CLI also accepts `backing-vocals`, `backingVocals`, and
`backingvocals` as aliases.

## What's next

* [Exports](/en/cli/exports) - render the finished karaoke
* [Presets](/en/cli/presets) - manage reusable render configurations
* [Render settings reference](/en/render-settings-reference) - shared preset and settings fields
