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

# Інструкція з інтеграції API генерації аудіо продюсера

> Producer Music Generation 集成指南 - XHuoAPI

У цьому документі буде представлено інструкцію з інтеграції API генерації аудіо продюсера, який дозволяє генерувати офіційну музику продюсера за допомогою введення користувацьких параметрів.

## Процес подачі заявки

Щоб використовувати API, спочатку потрібно перейти на сторінку [API генерації аудіо продюсера](https://api.xhuoapi.ai/documents/producer-audios) та подати заявку на відповідну послугу, після переходу на сторінку натисніть кнопку «Отримати», як показано на малюнку:

![](https://cdn.xhuoapi.ai/q6ytrc.png)

Якщо ви ще не увійшли в систему або не зареєстровані, вас автоматично перенаправлять на сторінку входу, запрошуючи вас зареєструватися та увійти. Після входу або реєстрації ви автоматично повернетеся на поточну сторінку.

При першій подачі заявки буде надано безкоштовний ліміт, який дозволяє безкоштовно використовувати цей API.

## Основне використання

Щоб створити пісню, ви можете ввести будь-який текст, наприклад, якщо я хочу згенерувати пісню про Різдво, я можу ввести `a song for Christmas`, як показано на малюнку:

<p>
  <img src="https://cdn.xhuoapi.ai/lg9bb0.png" width="600" className="m-auto" />
</p>

Ми можемо бачити, що тут ми налаштували заголовки запиту, включаючи:

* `accept`: формат відповіді, який ви хочете отримати, тут вказано `application/json`, тобто формат JSON.
* `authorization`: ключ для виклику API, після подачі заявки ви можете вибрати його зі списку.

Крім того, параметри тіла запиту включають:

* `action`: дія, що виконується під час генерації музики, для створення пісні це `generate`.
* `model`: модель, що використовується для створення пісні, наразі основні: **FUZZ-2.0 Pro**, **FUZZ-2.0**, **FUZZ-2.0 Raw**, **FUZZ-1.1 Pro**, **FUZZ-1.0 Pro**, **FUZZ-1.0**, **FUZZ-1.1**, **FUZZ-0.8**.
* `lyric`: текст пісні.
* `custom`: чи використовувати користувацький спосіб генерації пісні.
* `prompt`: підказка в режимі натхнення.
* `title`: інформація про заголовок пісні.
* `audio_id`: ID референтної пісні, використовується для продовження/переписування тощо.
* `continue_at`: почати продовження пісні з вказаної секунди.
* `replace_section_start`/`replace_section_end`: час початку та закінчення заміни фрагмента, одиниця - секунди.
* `lyrics_strength`: сила тексту, що вказує на ступінь впливу тексту на генерацію аудіо, може бути від 0 до 1, за замовчуванням 0.7.
* `sound_strength`: сила підказки для аудіо, може бути від 0.2 до 1, за замовчуванням 0.7.
* `cover_strength`: сила каверу від 0.2 до 1, за замовчуванням 1.
* `weirdness`: ступінь незвичності стилю, може бути від 0 до 1, за замовчуванням 0.5.
* `callback_url`: URL, на який потрібно повернути результати.
* `instrumental`: чи є це безтекстовим режимом.

Після вибору ви можете побачити, що праворуч також згенеровано відповідний код, як показано на малюнку:

<p>
  <img src="https://cdn.xhuoapi.ai/0217zy.png" width="500" className="m-auto" />
</p>

Натисніть кнопку «Спробувати», щоб провести тестування, як показано на малюнку, тут ми отримали наступний результат:

```json theme={null}
{
  "success": true,
  "task_id": "82fd443a-903a-4f18-8028-12d2f8a0a4be",
  "trace_id": "d85839fa-0bb1-42da-a9fc-cd582c29027d",
  "data": [
    {
      "id": "6c947f13-a3c5-4b9c-8609-5639c37cdc2d",
      "title": "Untitled",
      "image_url": "https://storage.googleapis.com/corpusant-app-public/riffs/a853673e-615c-42ae-bdff-16b1add94861/image/6c947f13-a3c5-4b9c-8609-5639c37cdc2d.jpg",
      "lyric": "[Instrumental]",
      "audio_url": "https://storage.googleapis.com/corpusant-app-public/riffs/a853673e-615c-42ae-bdff-16b1add94861/audio/6c947f13-a3c5-4b9c-8609-5639c37cdc2d.m4a",
      "video_url": null,
      "image_id": "6c947f13-a3c5-4b9c-8609-5639c37cdc2d",
      "topic": null,
      "seed": "2450882164",
      "sound": "A song for Christmas",
      "created_at": "2025-12-30T17:18:23.232911Z",
      "model": "FUZZ-2.0 Pro",
      "progress": "100%",
      "state": "succeeded",
      "duration": "181.3014058956916"
    }
  ]
}
```

У повернутому результаті є кілька полів, описаних нижче:

* `success`: статус виконання завдання з генерації музики.
  * `data`: результат цього музичного завдання
    * `id`: ID завдання з генерації музики.
    * `sound`: підказка для цього музичного завдання.
    * `seed`: значення насіння для цього музичного завдання.
    * `audio_url`: посилання на аудіо для цього музичного завдання.
    * `image_url`: посилання на обкладинку для цього музичного завдання.
    * `image_id`: ID обкладинки для цього музичного завдання.
    * `state`: статус цього музичного завдання.
    * `duration`: інформація про тривалість музики.
    * `progress`: значення прогресу цього музичного завдання.
    * `model`: інформація про модель, що використовується для цього музичного завдання.
    * `lyric`: інформація про текст пісні для цього музичного завдання.

Ми можемо бачити, що отримали інформацію про музику, яку хочемо згенерувати, нам потрібно лише отримати згенеровану музику продюсера за адресою посилання на музику в `data`.

Крім того, якщо ви хочете згенерувати відповідний код інтеграції, ви можете просто скопіювати його, наприклад, код CURL виглядає так:

```shell theme={null}
curl -X POST 'https://api.xhuoapi.ai/v1/producer/audios' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "action": "generate",
  "model": "FUZZ-2.0 Pro",
  "prompt": "A song for Christmas"
}'
```

## Користувацька генерація

Якщо ви хочете налаштувати текст пісні, ви можете ввести текст:

У цьому випадку поле `lyric` може приймати подібний вміст:

```
[Verse]Woke up with the sun in my eyesNo clouds above just blue in the skiesShoes on my feet I’m ready to runEvery step feels like a loaded gun[Chorus]Happy days are rolling inLet the joy beneath my skinNo more shadows no more liesJust the truth that lifts me high[Verse 2]Dancing through the city streetsA rhythm pounding in my heartbeatStrangers smile it’s catching onThis world’s a stage we’re all a song[Chorus]Happy days are rolling inLet the joy beneath my skinNo more shadows no more liesJust the truth that lifts me high[Bridge]Throw your worries out the doorLet them sink to the ocean floorWe’re alive and it’s enoughLife is messy but it’s love[Chorus]Happy days are rolling inLet the joy beneath my skinNo more shadows no more liesJust the truth that lifts me high
```

Далі ми повинні налаштувати генерацію пісні на основі тексту, заголовка, стилю, вказавши такі параметри:

* lyric: текст пісні
* custom: вказати `true`, що означає користувацьку генерацію, цей параметр за замовчуванням є false, що означає використання генерації за допомогою `prompt`.
* title: заголовок пісні.
  Заповніть приклад нижче:

<p>
  <img src="https://cdn.xhuoapi.ai/ruovz5.png" width="500" className="m-auto" />
</p>

Після заповнення автоматично згенерувався код нижче:

<p>
  <img src="https://cdn.xhuoapi.ai/seyxxa.png" width="500" className="m-auto" />
</p>

Відповідний код:

```shell theme={null}
curl -X POST 'https://api.xhuoapi.ai/v1/producer/audios' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "action": "generate",
  "model": "FUZZ-2.0 Pro",
  "instrumental": false,
  "lyric": "[Verse]\nWoke up with the sun in my eyes\nNo clouds above just blue in the skies\nShoes on my feet I’m ready to run\nEvery step feels like a loaded gun\n[Chorus]\nHappy days are rolling in\nLet the joy beneath my skin\nNo more shadows no more lies\nJust the truth that lifts me high\n[Verse 2]\nDancing through the city streets\nA rhythm pounding in my heartbeat\nStrangers smile it’s catching on\nThis world’s a stage we’re all a song\n[Chorus]\nHappy days are rolling in\nLet the joy beneath my skin\nNo more shadows no more lies\nJust the truth that lifts me high\n[Bridge]\nThrow your worries out the door\nLet them sink to the ocean floor\nWe’re alive and it’s enough\nLife is messy but it’s love\n[Chorus]\nHappy days are rolling in\nLet the joy beneath my skin\nNo more shadows no more lies\nJust the truth that lifts me high",
  "custom": true
}'
```

Тестування дозволено, згенерований ефект є подібним.

```json theme={null}
{
  "success": true,
  "task_id": "9f58bbd4-855a-4233-ac45-b63bf9168e02",
  "trace_id": "145ad117-6ce7-42dd-af12-70751c5284fc",
  "data": [
    {
      "id": "38d3b9e2-0dfb-4338-b2a7-15e45656ed32",
      "title": "Woke up with the sun in my eyes",
      "image_url": "https://storage.googleapis.com/corpusant-app-public/riffs/7ce2b11a-179f-4b87-b5ff-397613c62c93/image/38d3b9e2-0dfb-4338-b2a7-15e45656ed32.jpg",
      "lyric": "[Verse]\nWoke up with the sun in my eyes\nNo clouds above just blue in the skies\nShoes on my feet I’m ready to run\nEvery step feels like a loaded gun\n[Chorus]\nHappy days are rolling in\nLet the joy beneath my skin\nNo more shadows no more lies\nJust the truth that lifts me high\n[Verse 2]\nDancing through the city streets\nA rhythm pounding in my heartbeat\nStrangers smile it’s catching on\nThis world’s a stage we’re all a song\n[Chorus]\nHappy days are rolling in\nLet the joy beneath my skin\nNo more shadows no more lies\nJust the truth that lifts me high\n[Bridge]\nThrow your worries out the door\nLet them sink to the ocean floor\nWe’re alive and it’s enough\nLife is messy but it’s love\n[Chorus]\nHappy days are rolling in\nLet the joy beneath my skin\nNo more shadows no more lies\nJust the truth that lifts me high",
      "audio_url": "https://storage.googleapis.com/corpusant-app-public/riffs/7ce2b11a-179f-4b87-b5ff-397613c62c93/audio/38d3b9e2-0dfb-4338-b2a7-15e45656ed32.m4a",
      "video_url": null,
      "image_id": "38d3b9e2-0dfb-4338-b2a7-15e45656ed32",
      "topic": null,
      "seed": "3789209121",
      "sound": "",
      "created_at": "2025-12-30T17:26:46.357055Z",
      "model": "FUZZ-2.0 Pro",
      "progress": "100%",
      "state": "succeeded",
      "duration": "153.80897959183673"
    }
  ]
}
```

## Кавер на пісні

Якщо ви хочете виконати кавер на вже згенеровану пісню, ви можете ввести текст пісні, згенерований вище, для виконання каверу, далі ми повинні налаштувати генерацію пісні на основі тексту, заголовка.

Якщо ви хочете продовжити виконання каверу на завантажену вами пісню, ви можете встановити параметр `action` на `upload_cover` і ввести ID пісні, на яку потрібно продовжити виконання каверу. ID пісні можна отримати за допомогою [Producer Upload API](https://api.xhuoapi.ai/documents/7fd2cb52-772e-4cc4-a018-e2626ff6f447), як показано на малюнку нижче:

<p>
  <img src="https://cdn.xhuoapi.ai/z7r5fd.png" width="500" className="m-auto" />
</p>

Тоді можна вказати наступний вміст:

* action: дія для цього завдання з піснею, наразі підтримуються: generate, cover, extend, upload\_cover, upload\_extend, replace\_section, swap\_vocals, swap\_instrumentals, variation, для цього каверу використовується параметр `cover`.
* lyric: текст пісні
* title: заголовок пісні.
* custom: чи використовувати режим налаштування для генерації, за замовчуванням false.
* audio\_id: ID пісні, на яку потрібно виконати кавер.

Заповніть приклад нижче:

<p>
  <img src="https://cdn.xhuoapi.ai/6xl82z.png" width="500" className="m-auto" />
</p>

Після заповнення автоматично згенерувався код нижче:

<p>
  <img src="https://cdn.xhuoapi.ai/bxzfrw.png" width="500" className="m-auto" />
</p>

Відповідний код:

```shell theme={null}
curl -X POST 'https://api.xhuoapi.ai/v1/producer/audios' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "action": "cover",
  "model": "FUZZ-2.0 Pro",
  "lyric": "[Verse]\nWoke up with the sun in my eyes\nNo clouds above just blue in the skies\nShoes on my feet I’m ready to run\nEvery step feels like a loaded gun\n[Chorus]\nHappy days are rolling in\nLet the joy beneath my skin\nNo more shadows no more lies\nJust the truth that lifts me high\n[Verse 2]\nDancing through the city streets\nA rhythm pounding in my heartbeat\nStrangers smile it’s catching on\nThis world’s a stage we’re all a song\n[Chorus]\nHappy days are rolling in\nLet the joy beneath my skin\nNo more shadows no more lies\nJust the truth that lifts me high\n[Bridge]\nThrow your worries out the door\nLet them sink to the ocean floor\nWe’re alive and it’s enough\nLife is messy but it’s love\n[Chorus]\nHappy days are rolling in\nLet the joy beneath my skin\nNo more shadows no more lies\nJust the truth that lifts me high",
  "audio_id": "38d3b9e2-0dfb-4338-b2a7-15e45656ed32",
  "instrumental": false,
  "custom": true,
  "title": "Cover"
}'
```

Тестування дозволено, згенерований ефект є подібним.

```json theme={null}
{
  "success": true,
  "task_id": "dbca350e-6fb9-46ca-9c7e-4c1a9080806f",
  "trace_id": "a39e0fff-ced8-4b31-ae23-aef3badd90fa",
  "data": [
    {
      "id": "e52dd729-38b4-4c2f-9031-59eb7953c593",
      "title": "Обкладинка",
      "image_url": "https://storage.googleapis.com/corpusant-app-public/riffs/7ce2b11a-179f-4b87-b5ff-397613c62c93/image/e52dd729-38b4-4c2f-9031-59eb7953c593.jpg",
      "lyric": "[Куплет]\nПрокинувся з сонцем в очах\nНемає хмар, лише блакить у небі\nВзуття на ногах, я готовий бігти\nКожен крок відчувається, як заряджений пістолет\n[Приспів]\nЩасливі дні наближаються\nНехай радість під моєю шкірою\nБільше немає тіней, більше немає брехні\nЛише правда, що підносить мене високо\n[Куплет 2]\nТанцюючи по вулицях міста\nРитм б’ється в моєму серці\nНезнайомці усміхаються, це заразно\nЦей світ - сцена, ми всі - пісня\n[Приспів]\nЩасливі дні наближаються\nНехай радість під моєю шкірою\nБільше немає тіней, більше немає брехні\nЛише правда, що підносить мене високо\n[Місток]\nВикинь свої турботи за двері\nНехай вони потонуть на дні океану\nМи живі, і цього достатньо\nЖиття безладне, але це любов\n[Приспів]\nЩасливі дні наближаються\nНехай радість під моєю шкірою\nБільше немає тіней, більше немає брехні\nЛише правда, що підносить мене високо",
      "audio_url": "https://storage.googleapis.com/corpusant-app-public/riffs/7ce2b11a-179f-4b87-b5ff-397613c62c93/audio/e52dd729-38b4-4c2f-9031-59eb7953c593.m4a",
      "video_url": null,
      "image_id": "e52dd729-38b4-4c2f-9031-59eb7953c593",
      "topic": null,
      "seed": "358803418",
      "sound": "",
      "created_at": "2025-12-30T17:32:32.951948Z",
      "model": "FUZZ-2.0 Pro",
      "progress": "100%",
      "state": "succeeded",
      "duration": "153.0659410430839"
    }
  ]
}
```

## Продовження пісні

Якщо хочете продовжити пісню, потрібно передати параметр `action` зі значенням: `extend`, далі ми повинні на основі тексту, заголовка, стилю налаштувати генерацію пісні.

Якщо хочете продовжити пісню, яку ви завантажили, можна встановити параметр `action` на `upload_extend` і ввести ID пісні, яку потрібно продовжити. ID пісні можна отримати за допомогою [Producer Upload API](https://api.xhuoapi.ai/documents/7fd2cb52-772e-4cc4-a018-e2626ff6f447), як показано на малюнку нижче:

<p>
  <img src="https://cdn.xhuoapi.ai/z7r5fd.png" width="500" className="m-auto" />
</p>

Приклад заповнення:

<p>
  <img src="https://cdn.xhuoapi.ai/r3ux6z.png" width="500" className="m-auto" />
</p>

Після заповнення автоматично згенерувався код, як показано нижче:

<p>
  <img src="https://cdn.xhuoapi.ai/fsww0u.png" width="500" className="m-auto" />
</p>

Відповідний код:

```shell theme={null}
curl -X POST 'https://api.xhuoapi.ai/v1/producer/audios' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "action": "extend",
  "model": "FUZZ-2.0 Pro",
  "instrumental": false,
  "lyric": "[Куплет]\nПрокинувся з сонцем в очах\nНемає хмар, лише блакить у небі\nВзуття на ногах, я готовий бігти\nКожен крок відчувається, як заряджений пістолет\n[Приспів]\nЩасливі дні наближаються\nНехай радість під моєю шкірою\nБільше немає тіней, більше немає брехні\nЛише правда, що підносить мене високо\n[Куплет 2]\nТанцюючи по вулицях міста\nРитм б’ється в моєму серці\nНезнайомці усміхаються, це заразно\nЦей світ - сцена, ми всі - пісня\n[Приспів]\nЩасливі дні наближаються\nНехай радість під моєю шкірою\nБільше немає тіней, більше немає брехні\nЛише правда, що підносить мене високо\n[Місток]\nВикинь свої турботи за двері\nНехай вони потонуть на дні океану\nМи живі, і цього достатньо\nЖиття безладне, але це любов\n[Приспів]\nЩасливі дні наближаються\nНехай радість під моєю шкірою\nБільше немає тіней, більше немає брехні\nЛише правда, що підносить мене високо",
  "continue_at": 3,
  "audio_id": "38d3b9e2-0dfb-4338-b2a7-15e45656ed32",
  "custom": true,
  "title": "Продовження",
  "weirdness": 0.3,
  "sound_strength": 0.3,
  "lyrics_strength": 0.6
}'
```

Тестування дозволено, згенерований ефект подібний.

```json theme={null}
{
  "success": true,
  "task_id": "834983cb-d62d-4750-b1aa-461da137e51f",
  "trace_id": "6923eee2-7403-432c-8bd1-e471086385b0",
  "data": [
    {
      "id": "d9ebc609-fb65-4a23-b914-c074747af6a4",
      "title": "Продовження",
      "image_url": "https://storage.googleapis.com/corpusant-app-public/riffs/7ce2b11a-179f-4b87-b5ff-397613c62c93/image/d9ebc609-fb65-4a23-b914-c074747af6a4.jpg",
      "lyric": "[Куплет]\n[Куплет]\nПрокинувся з сонцем в очах\nНемає хмар, лише блакить у небі\nВзуття на ногах, я готовий бігти\nКожен крок відчувається, як заряджений пістолет\n[Приспів]\nЩасливі дні наближаються\nНехай радість під моєю шкірою\nБільше немає тіней, більше немає брехні\nЛише правда, що підносить мене високо\n[Куплет 2]\nТанцюючи по вулицях міста\nРитм б’ється в моєму серці\nНезнайомці усміхаються, це заразно\nЦей світ - сцена, ми всі - пісня\n[Приспів]\nЩасливі дні наближаються\nНехай радість під моєю шкірою\nБільше немає тіней, більше немає брехні\nЛише правда, що підносить мене високо\n[Місток]\nВикинь свої турботи за двері\nНехай вони потонуть на дні океану\nМи живі, і цього достатньо\nЖиття безладне, але це любов\n[Приспів]\nЩасливі дні наближаються\nНехай радість під моєю шкірою\nБільше немає тіней, більше немає брехні\nЛише правда, що підносить мене високо",
      "audio_url": "https://storage.googleapis.com/corpusant-app-public/riffs/7ce2b11a-179f-4b87-b5ff-397613c62c93/audio/d9ebc609-fb65-4a23-b914-c074747af6a4.m4a",
      "video_url": null,
      "image_id": "d9ebc609-fb65-4a23-b914-c074747af6a4",
      "topic": null,
      "seed": "4294469624",
      "sound": "",
      "created_at": "2025-12-30T17:36:14.520928Z",
      "model": "FUZZ-2.0 Pro",
      "progress": "100%",
      "state": "succeeded",
      "duration": "173.87102040816328"
    }
  ]
}
```

## Музичні варіації

Якщо хочете створити нову музику, схожу на попередню, за значенням seed, потрібно передати параметр `action` зі значенням: `variation`, далі можна налаштувати генерацію нової музики, схожої на попередню.

Приклад заповнення:

<p>
  <img src="https://cdn.xhuoapi.ai/bxslxt.png" width="500" className="m-auto" />
</p>

Заповнивши, автоматично згенерувався код наступним чином:

<p>
  <img src="https://cdn.xhuoapi.ai/nojowk.png" width="500" className="m-auto" />
</p>

Відповідний код:

```shell theme={null}
curl -X POST 'https://api.xhuoapi.ai/v1/producer/audios' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "action": "variation",
  "audio_id": "d9ebc609-fb65-4a23-b914-c074747af6a4",
  "model": "FUZZ-2.0 Pro",
  "instrumental": false,
  "lyric": "[Verse]\nWoke up with the sun in my eyes\nNo clouds above just blue in the skies\nShoes on my feet I’m ready to run\nEvery step feels like a loaded gun\n[Chorus]\nHappy days are rolling in\nLet the joy beneath my skin\nNo more shadows no more lies\nJust the truth that lifts me high\n[Verse 2]\nDancing through the city streets\nA rhythm pounding in my heartbeat\nStrangers smile it’s catching on\nThis world’s a stage we’re all a song\n[Chorus]\nHappy days are rolling in\nLet the joy beneath my skin\nNo more shadows no more lies\nJust the truth that lifts me high\n[Bridge]\nThrow your worries out the door\nLet them sink to the ocean floor\nWe’re alive and it’s enough\nLife is messy but it’s love\n[Chorus]\nHappy days are rolling in\nLet the joy beneath my skin\nNo more shadows no more lies\nJust the truth that lifts me high",
  "custom": true
}'
```

Тестування дозволено, згенерований ефект є подібним.

```json theme={null}
{
    "success": true,
    "task_id": "3a74da6d-a37d-4b5d-b116-821f455bce39",
    "trace_id": "8e28cce0-0400-4bfd-83db-6d27f97422c7",
    "data": [
        {
            "id": "c14ca458-cd5a-4700-83d4-5249e15f2707",
            "title": "Woke up with the sun in my eyes",
            "image_url": "https://storage.googleapis.com/corpusant-app-public/riffs/7ce2b11a-179f-4b87-b5ff-397613c62c93/image/c14ca458-cd5a-4700-83d4-5249e15f2707.jpg",
            "lyric": "[Verse]\nWoke up with the sun in my eyes\nNo clouds above just blue in the skies\nShoes on my feet I’m ready to run\nEvery step feels like a loaded gun\n[Chorus]\nHappy days are rolling in\nLet the joy beneath my skin\nNo more shadows no more lies\nJust the truth that lifts me high\n[Verse 2]\nDancing through the city streets\nA rhythm pounding in my heartbeat\nStrangers smile it’s catching on\nThis world’s a stage we’re all a song\n[Chorus]\nHappy days are rolling in\nLet the joy beneath my skin\nNo more shadows no more lies\nJust the truth that lifts me high\n[Bridge]\nThrow your worries out the door\nLet them sink to the ocean floor\nWe’re alive and it’s enough\nLife is messy but it’s love\n[Chorus]\nHappy days are rolling in\nLet the joy beneath my skin\nNo more shadows no more lies\nJust the truth that lifts me high",
            "audio_url": "https://storage.googleapis.com/corpusant-app-public/riffs/7ce2b11a-179f-4b87-b5ff-397613c62c93/audio/c14ca458-cd5a-4700-83d4-5249e15f2707.m4a",
            "video_url": null,
            "image_id": "c14ca458-cd5a-4700-83d4-5249e15f2707",
            "topic": null,
            "seed": "2082104582",
            "sound": "",
            "created_at": "2025-12-30T17:48:40.135187Z",
            "model": "FUZZ-2.0",
            "progress": "100%",
            "state": "succeeded",
            "duration": "173.12798185941043"
        }
    ]
}
```

## Замінити фрагмент

Якщо ви хочете замінити фрагмент пісні, нам потрібно передати параметр `action` зі значенням: `replace_section`, далі ми повинні на основі тексту пісні, заголовка самостійно згенерувати пісню.

Якщо ви хочете продовжити заміну фрагмента для завантаженої вами пісні, ви можете встановити параметр `action` на `upload_replace_section` і ввести ID пісні, яку потрібно продовжити, ID пісні можна отримати за допомогою [Producer Upload API](https://api.xhuoapi.ai/documents/7fd2cb52-772e-4cc4-a018-e2626ff6f447), як показано на малюнку нижче:

<p>
  <img src="https://cdn.xhuoapi.ai/z7r5fd.png" width="500" className="m-auto" />
</p>

Приклад заповнення виглядає наступним чином:

<p>
  <img src="https://cdn.xhuoapi.ai/mzo9iw.png" width="500" className="m-auto" />
</p>

Заповнивши, автоматично згенерувався код наступним чином:

<p>
  <img src="https://cdn.xhuoapi.ai/877x6c.png" width="500" className="m-auto" />
</p>

Відповідний код:

```shell theme={null}
curl -X POST 'https://api.xhuoapi.ai/v1/producer/audios' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "action": "replace_section",
  "model": "FUZZ-2.0 Pro",
  "instrumental": false,
  "lyric": "[Verse]\\nWoke up with the sun in my eyes\\nNo clouds above just blue in the skies\\nShoes on my feet I’m ready to run\\nEvery step feels like a loaded gun\\n[Chorus]\\nHappy days are rolling in\\nLet the joy beneath my skin\\nNo more shadows no more lies\\nJust the truth that lifts me high\\n[Verse 2]\\nDancing through the city streets\\nA rhythm pounding in my heartbeat\\nStrangers smile it’s catching on\\nThis world’s a stage we’re all a song\\n[Chorus]\\nHappy days are rolling in\\nLet the joy beneath my skin\\nNo more shadows no more lies\\nJust the truth that lifts me high\\n[Bridge]\\nThrow your worries out the door\\nLet them sink to the ocean floor\\nWe’re alive and it’s enough\\nLife is messy but it’s love\\n[Chorus]\\nHappy days are rolling in\\nLet the joy beneath my skin\\nNo more shadows no more lies\\nJust the truth that lifts me high",
  "audio_id": "d9ebc609-fb65-4a23-b914-c074747af6a4",
  "replace_section_start": 3,
  "replace_section_end": 70,
  "custom": true
}'
```

Тестування дозволено, згенерований ефект є подібним.

```json theme={null}
{
    "success": true,
    "task_id": "3cb5ae96-01b0-4a37-afb0-e582608af56f",
    "trace_id": "3ebc6f63-5093-4499-bf9b-95c239e0da4f",
    "data": [
        {
            "id": "a54609c6-13e2-4176-be0f-4d7eebc68e1f",
            "title": "Прокинувся з сонцем в очах",
            "image_url": "https://storage.googleapis.com/corpusant-app-public/riffs/7ce2b11a-179f-4b87-b5ff-397613c62c93/image/a54609c6-13e2-4176-be0f-4d7eebc68e1f.jpg",
            "lyric": "[Куплет]\\nПрокинувся з сонцем в очах\\nНемає хмар, тільки блакить на небі\\nВзуття на ногах, я готовий бігти\\nКожен крок відчувається, як заряджений пістолет\\n[Приспів]\\nЩасливі дні наближаються\\nНехай радість під моєю шкірою\\nБільше немає тіней, більше немає брехні\\nТільки правда, що підносить мене високо\\n[Куплет 2]\\nТанцюючи вулицями міста\\nРитм б'ється в моєму серці\\nНезнайомці усміхаються, це заразно\\nЦей світ - сцена, ми всі - пісня\\n[Приспів]\\nЩасливі дні наближаються\\nНехай радість під моєю шкірою\\nБільше немає тіней, більше немає брехні\\nТільки правда, що підносить мене високо\\n[Місток]\\nВикинь свої турботи за двері\\nНехай вони потонуть на дні океану\\nМи живі, і цього достатньо\\nЖиття безладне, але це любов\\n[Приспів]\\nЩасливі дні наближаються\\nНехай радість під моєю шкірою\\nБільше немає тіней, більше немає брехні\\nТільки правда, що підносить мене високо",
            "audio_url": "https://storage.googleapis.com/corpusant-app-public/riffs/7ce2b11a-179f-4b87-b5ff-397613c62c93/audio/a54609c6-13e2-4176-be0f-4d7eebc68e1f.m4a",
            "video_url": null,
            "image_id": "a54609c6-13e2-4176-be0f-4d7eebc68e1f",
            "topic": null,
            "seed": "14887454",
            "sound": "",
            "created_at": "2025-12-30T18:01:19.907443Z",
            "model": "FUZZ-2.0 Pro",
            "progress": "100%",
            "state": "succeeded",
            "duration": "174.6140589569161"
        }
    ]
}
```

## Офіційна версія акомпанементу

Якщо ви хочете використовувати офіційну версію акомпанементу, ви можете встановити значення параметра `action` на: `swap_instrumentals`, далі ми повинні налаштувати генерацію пісні на основі тексту, заголовка.

Приклад заповнення:

<p>
  <img src="https://cdn.xhuoapi.ai/7l6976.png" width="500" className="m-auto" />
</p>

Після заповнення автоматично згенерувався код:

<p>
  <img src="https://cdn.xhuoapi.ai/pvi2n3.png" width="500" className="m-auto" />
</p>

Відповідний код:

```shell theme={null}
curl -X POST 'https://api.xhuoapi.ai/v1/producer/audios' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "action": "swap_instrumentals",
  "model": "FUZZ-2.0 Pro",
  "weirdness": 0.6,
  "prompt": "Щасливий",
  "audio_id": "d9ebc609-fb65-4a23-b914-c074747af6a4"
}'
```

Тестування дозволено, згенерований ефект подібний.

```json theme={null}
{
  "success": true,
  "task_id": "d17d8376-3a58-451d-a976-404719bac11d",
  "trace_id": "ab596807-910a-4e30-bae2-4647895f7d0b",
  "data": [
    {
      "id": "22d7d75c-9e0a-47a8-b22b-eea55eaa0c4b",
      "title": "Розширити (Заміна звуку)",
      "image_url": "https://storage.googleapis.com/corpusant-app-public/riffs/7ce2b11a-179f-4b87-b5ff-397613c62c93/image/22d7d75c-9e0a-47a8-b22b-eea55eaa0c4b.jpg",
      "lyric": "[Куплет]\nПрокинувся з сонцем в очах\nНемає хмар, тільки блакить на небі\nВзуття на ногах, я готовий бігти\nКожен крок відчувається, як заряджений пістолет\n[Приспів]\nЩасливі дні наближаються\nНехай радість під моєю шкірою\nБільше немає тіней, більше немає брехні\nТільки правда, що підносить мене високо\n[Куплет 2]\nТанцюючи вулицями міста\nРитм б'ється в моєму серці\nНезнайомці усміхаються, це заразно\nЦей світ - сцена, ми всі - пісня\n[Приспів]\nЩасливі дні наближаються\nНехай радість під моєю шкірою\nБільше немає тіней, більше немає брехні\nТільки правда, що підносить мене високо\n[Місток]\nВикинь свої турботи за двері\nНехай вони потонуть на дні океану\nМи живі, і цього достатньо\nЖиття безладне, але це любов\n[Приспів]\nЩасливі дні наближаються\nНехай радість під моєю шкірою\nБільше немає тіней, більше немає брехні\nТільки правда, що підносить мене високо",
      "audio_url": "https://storage.googleapis.com/corpusant-app-public/riffs/7ce2b11a-179f-4b87-b5ff-397613c62c93/audio/22d7d75c-9e0a-47a8-b22b-eea55eaa0c4b.m4a",
      "video_url": null,
      "image_id": "22d7d75c-9e0a-47a8-b22b-eea55eaa0c4b",
      "topic": null,
      "seed": "2157878068",
      "sound": "Щасливий",
      "created_at": "2025-12-30T18:09:49.594800Z",
      "model": "FUZZ-2.0 Pro",
      "progress": "100%",
      "state": "succeeded",
      "duration": "172.3849433106576"
    }
  ]
}
```

## Офіційна версія вокалу

Якщо ви хочете використовувати офіційну версію вокалу, ви можете встановити значення параметра `action` на: `swap_vocals`, далі ми повинні налаштувати генерацію пісні на основі тексту, заголовка, стилю.

Приклад заповнення:

<p>
  <img src="https://cdn.xhuoapi.ai/bk9ino.png" width="500" className="m-auto" />
</p>

Після заповнення автоматично згенерувався код:

<p>
  <img src="https://cdn.xhuoapi.ai/p5b1vg.png" width="500" className="m-auto" />
</p>

Відповідний код:

```shell theme={null}
curl -X POST 'https://api.xhuoapi.ai/v1/producer/audios' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "action": "swap_vocals",
  "model": "FUZZ-2.0 Pro",
  "instrumental": false,
  "lyric": "[Verse]\nПрокинувся з сонцем в очах\nНемає хмар, лише блакить у небі\nВзуття на ногах, я готовий бігти\nКожен крок відчувається, як заряджений пістолет\n[Chorus]\nЩасливі дні наближаються\nНехай радість під моєю шкірою\nБільше немає тіней, більше немає брехні\nЛише правда, що підносить мене високо\n[Verse 2]\nТанцюючи через вулиці міста\nРитм б’ється в моєму серці\nНезнайомці усміхаються, це заразно\nЦей світ - сцена, ми всі - пісня\n[Chorus]\nЩасливі дні наближаються\nНехай радість під моєю шкірою\nБільше немає тіней, більше немає брехні\nЛише правда, що підносить мене високо\n[Bridge]\nВикинь свої турботи за двері\nНехай вони потонуть на дні океану\nМи живі, і цього достатньо\nЖиття безладне, але це любов\n[Chorus]\nЩасливі дні наближаються\nНехай радість під моєю шкірою\nБільше немає тіней, більше немає брехні\nЛише правда, що підносить мене високо",
  "weirdness": 0.6,
  "lyrics_strength": 0.8,
  "audio_id": "d9ebc609-fb65-4a23-b914-c074747af6a4",
  "custom": true
}'
```

Тестування дозволено, згенерований ефект є подібним.

```json theme={null}
{
  "success": true,
  "task_id": "a903ac38-f129-4f85-9181-b1dc5579bd32",
  "trace_id": "9953af52-45e0-4808-bf13-88f0b21262c1",
  "data": [
    {
      "id": "7b2d653b-aaaa-41b0-b737-aee4c4c5693b",
      "title": "Прокинувся з сонцем в очах",
      "image_url": "https://storage.googleapis.com/corpusant-app-public/riffs/7ce2b11a-179f-4b87-b5ff-397613c62c93/image/7b2d653b-aaaa-41b0-b737-aee4c4c5693b.jpg",
      "lyric": "[Verse]\nПрокинувся з сонцем в очах\nНемає хмар, лише блакить у небі\nВзуття на ногах, я готовий бігти\nКожен крок відчувається, як заряджений пістолет\n[Chorus]\nЩасливі дні наближаються\nНехай радість під моєю шкірою\nБільше немає тіней, більше немає брехні\nЛише правда, що підносить мене високо\n[Verse 2]\nТанцюючи через вулиці міста\nРитм б’ється в моєму серці\nНезнайомці усміхаються, це заразно\nЦей світ - сцена, ми всі - пісня\n[Chorus]\nЩасливі дні наближаються\nНехай радість під моєю шкірою\nБільше немає тіней, більше немає брехні\nЛише правда, що підносить мене високо\n[Bridge]\nВикинь свої турботи за двері\nНехай вони потонуть на дні океану\nМи живі, і цього достатньо\nЖиття безладне, але це любов\n[Chorus]\nЩасливі дні наближаються\nНехай радість під моєю шкірою\nБільше немає тіней, більше немає брехні\nЛише правда, що підносить мене високо",
      "audio_url": "https://storage.googleapis.com/corpusant-app-public/riffs/7ce2b11a-179f-4b87-b5ff-397613c62c93/audio/7b2d653b-aaaa-41b0-b737-aee4c4c5693b.m4a",
      "video_url": null,
      "image_id": "7b2d653b-aaaa-41b0-b737-aee4c4c5693b",
      "topic": null,
      "seed": "2484735707",
      "sound": "",
      "created_at": "2025-12-30T18:13:01.349875Z",
      "model": "FUZZ-2.0 Pro",
      "progress": "100%",
      "state": "succeeded",
      "duration": "173.12798185941043"
    }
  ]
}
```

## Розділення слів і музики

Якщо ви хочете використовувати офіційне розділення слів і музики, ви можете встановити значення параметра `action` на: `stems`, далі ми повинні провести розділення слів і музики за ID пісні.

Заповніть приклад нижче:

<p>
  <img src="https://cdn.xhuoapi.ai/fnpgvc.png" width="500" className="m-auto" />
</p>

Після заповнення автоматично згенерувався код нижче:

<p>
  <img src="https://cdn.xhuoapi.ai/oq5iv5.png" width="500" className="m-auto" />
</p>

Відповідний код:

```shell theme={null}
curl -X POST 'https://api.xhuoapi.ai/v1/producer/audios' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "action": "stems",
  "audio_id": "a54609c6-13e2-4176-be0f-4d7eebc68e1f"
}'
```

Тестування дозволено, згенерований ефект є подібним.

```json theme={null}
{
    "success": true,
    "task_id": "561ac695-b4aa-47cf-978d-fb7be2b9ebfc",
    "trace_id": "66d0d397-2987-4bde-84fb-a60d0023b217",
    "data": [
        {
            "title": "Прокинувся з сонцем в очах",
            "lyric": "",
            "stems_url": "https://platform.cdn.xhuoapi.ai/producer/561ac695-b4aa-47cf-978d-fb7be2b9ebfc.zip",
            "model": "",
            "progress": "100%",
            "state": "succeeded"
        }
    ]
}
```

## Асинхронний зворотний виклик

Оскільки час генерації API Producer Audios може бути відносно довгим, якщо API довго не відповідає, HTTP запит буде постійно підтримувати з'єднання, що призводить до додаткових витрат системних ресурсів, тому цей API також надає підтримку асинхронного зворотного виклику.

Загальний процес: коли клієнт ініціює запит, додатково вказується поле `callback_url`, після ініціації API запит клієнт негайно отримує результат, що містить інформацію про поле `task_id`, що представляє поточний ID завдання. Коли завдання завершено, результат генерації завдання буде надіслано на вказаний клієнтом `callback_url` у форматі POST JSON, в якому також включено поле `task_id`, таким чином результати завдання можна пов'язати за ID.

Далі ми розглянемо приклад, щоб зрозуміти, як саме це працює.

По-перше, Webhook зворотний виклик - це сервіс, який може приймати HTTP запити, розробники повинні замінити його на URL свого власного HTTP сервера. Тут для зручності демонстрації використовується публічний веб-сайт з прикладом Webhook [https://webhook.site/](https://webhook.site/), відкривши цей сайт, ви отримаєте URL Webhook, як показано на малюнку:

![](https://cdn.xhuoapi.ai/tbcnai.png)

Скопіюйте цей URL, і ви зможете використовувати його як Webhook, приклад тут [https://webhook.site/#!/view/0d73431d-f833-4be4-9276-b6e1690d55c1](https://webhook.site/#!/view/0d73431d-f833-4be4-9276-b6e1690d55c1).

Далі ми можемо встановити поле `callback_url` на вказаний URL Webhook, одночасно заповнивши відповідні параметри, конкретний зміст, як показано на малюнку:

<p>
  <img src="https://cdn.xhuoapi.ai/wuzd4y.png" width="500" className="m-auto" />
</p>

Натиснувши "Запустити", ви можете виявити, що негайно отримаєте результат, як показано нижче:

```
{
  "task_id": "1a6ac2ad-10f2-4e2b-b500-66ec27fe82ad"
}
```

Зачекайте хвилинку, ми можемо спостерігати результати генерації завдання на [https://webhook.site/#!/view/0d73431d-f833-4be4-9276-b6e1690d55c1](https://webhook.site/#!/view/0d73431d-f833-4be4-9276-b6e1690d55c1), як показано на малюнку:

![](https://cdn.xhuoapi.ai/k0kf0y.png)

Зміст такий:

```json theme={null}
{
    "success": true,
    "task_id": "1a6ac2ad-10f2-4e2b-b500-66ec27fe82ad",
    "trace_id": "1da03537-4eb8-410d-b849-43f03085a3bb",
    "data": [
        {
            "id": "1dd08826-478e-43a6-868f-aff5ababac2c",
            "title": "Прокинувся з сонцем у очах",
            "image_url": "https://storage.googleapis.com/corpusant-app-public/riffs/3bff6223-fe13-4bef-973e-2cbaef430d5d/image/1dd08826-478e-43a6-868f-aff5ababac2c.jpg",
            "lyric": "[Куплет]\nПрокинувся з сонцем у очах\nНемає хмар, лише блакить у небі\nВзуття на ногах, я готовий бігти\nКожен крок відчувається, як заряджений пістолет\n[Приспів]\nЩасливі дні наближаються\nНехай радість під моєю шкірою\nБільше немає тіней, більше немає брехні\nЛише правда, що підносить мене високо\n[Куплет 2]\nТанцюючи вулицями міста\nРитм б'ється в моєму серці\nНезнайомці усміхаються, це заразно\nЦей світ - сцена, ми всі - пісня\n[Приспів]\nЩасливі дні наближаються\nНехай радість під моєю шкірою\nБільше немає тіней, більше немає брехні\nЛише правда, що підносить мене високо\n[Місток]\nВикинь свої турботи за двері\nНехай вони потонуть на дні океану\nМи живі, і цього достатньо\nЖиття безладне, але це любов\n[Приспів]\nЩасливі дні наближаються\nНехай радість під моєю шкірою\nБільше немає тіней, більше немає брехні\nЛише правда, що підносить мене високо",
            "audio_url": "https://storage.googleapis.com/corpusant-app-public/riffs/3bff6223-fe13-4bef-973e-2cbaef430d5d/audio/1dd08826-478e-43a6-868f-aff5ababac2c.m4a",
            "video_url": null,
            "image_id": "1dd08826-478e-43a6-868f-aff5ababac2c",
            "topic": null,
            "seed": "1490770667",
            "sound": "",
            "created_at": "2025-12-30T18:36:00.994141Z",
            "model": "FUZZ-2.0 Pro",
            "progress": "100%",
            "state": "succeeded",
            "duration": "135.2330158730159"
        }
    ]
}
```

Можна побачити, що в результаті є поле `task_id`, інші поля схожі на вищезгадані, через це поле можна реалізувати зв'язок завдань.

## Обробка помилок

При виклику API, якщо виникає помилка, API поверне відповідний код помилки та інформацію. Наприклад:

* `400 token_mismatched`: Неправильний запит, можливо, через відсутні або недійсні параметри.
* `400 api_not_implemented`: Неправильний запит, можливо, через відсутні або недійсні параметри.
* `401 invalid_token`: Неавторизовано, недійсний або відсутній токен авторизації.
* `429 too_many_requests`: Занадто багато запитів, ви перевищили ліміт запитів.
* `500 api_error`: Внутрішня помилка сервера, щось пішло не так на сервері.

### Приклад відповіді на помилку

```json theme={null}
{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "не вдалося отримати"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}
```

## Висновок

Завдяки цьому документу, ви вже зрозуміли, як використовувати API генерації аудіо продюсера для створення музики за допомогою введення підказок. Сподіваємося, цей документ допоможе вам краще інтегрувати та використовувати цей API. Якщо у вас є будь-які питання, будь ласка, звертайтеся до нашої команди технічної підтримки.
