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

# Raw HTTP Quickstart

> Use cURL to upload a file, create a project, poll the task, and export the finished karaoke output.

# Raw HTTP Quickstart

Use this guide when you want direct HTTP examples.

If you are building in Node.js or Bun, start with [Node.js SDK quickstart](/en/sdk) instead.

## 1. Create an upload target

```bash theme={null}
curl -X POST https://api.youka.io/api/v1/uploads \
  -H "Authorization: Bearer yk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "filename": "song.mp3",
    "contentType": "audio/mpeg",
    "contentLength": 12345678
  }'
```

Upload the file bytes to the returned `uploadUrl`.

## 2. Create a project

```bash theme={null}
curl -X POST https://api.youka.io/api/v1/projects \
  -H "Authorization: Bearer yk_..." \
  -H "Idempotency-Key: create-project-song-1" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Artist - Song",
    "inputFileId": "file_123",
    "lyricsSource": {
      "type": "align",
      "lyrics": "First line\nSecond line\n...",
      "syncModel": "musicai-alignment",
      "language": "en"
    },
    "splitModel": "mdx23c"
  }'
```

## 3. Poll the task

```bash theme={null}
curl https://api.youka.io/api/v1/tasks/task_123 \
  -H "Authorization: Bearer yk_..."
```

When the task is terminal, its `output` contains the key result IDs for the operation.

## 4. Read project state

```bash theme={null}
curl https://api.youka.io/api/v1/projects/proj_123 \
  -H "Authorization: Bearer yk_..."
```

This returns the long-lived project state, including stems, alignments, exports, and the active project settings.

## 5. Create an export

```bash theme={null}
curl -X POST https://api.youka.io/api/v1/projects/proj_123/exports \
  -H "Authorization: Bearer yk_..." \
  -H "Idempotency-Key: export-song-1" \
  -H "Content-Type: application/json" \
  -d '{
    "resolution": "1080p",
    "quality": "high"
  }'
```

Then poll the returned task or read the export directly:

```bash theme={null}
curl https://api.youka.io/api/v1/exports/export_123 \
  -H "Authorization: Bearer yk_..."
```
