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

# Інструкція з інтеграції Midjourney Videos API

> Midjourney generation 集成指南 - XHuoAPI

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

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

Щоб використовувати API, спочатку потрібно перейти на сторінку [Midjourney Videos API](https://api.xhuoapi.ai/documents/midjourney-videos) для подачі заявки на відповідну послугу. Після переходу на сторінку натисніть кнопку «Acquire», як показано на малюнку:

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

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

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

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

Спочатку потрібно ознайомитися з основним способом використання, а саме введенням підказки `prompt`, дії `action`, масиву посилань на зображення для першого та останнього кадрів `image_url`, щоб отримати оброблений результат. Спочатку потрібно просто передати поле `action`, значення якого буде `generate`. Воно містить дві основні дії: генерувати відео (`generate`), розширити відео (`extend`), деталі наведені нижче:

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

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

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

Також налаштовано тіло запиту, яке включає:

* `image_url`: посилання на зображення для першого кадру відео.
* `end_image_url`: необов'язковий, вказує на зображення для останнього кадру відео.
* `video_id`: потрібно вказати ID відео при розширенні відео.
* `video_index`: потрібно вказати, яке саме відео з `video_id`, індекс починається з 0, за замовчуванням 0.
* `action`: дія для цього завдання генерації відео, основні дії: генерувати відео (`generate`), розширити відео (`extend`).
* `prompt`: підказка.
* `mode`: режим швидкості генерації відео, за замовчуванням fast.
* `resolution`: чіткість відео, за замовчуванням 720p.
* `loop`: чи потрібно генерувати циклічне відео, за замовчуванням false.
* `callback_url`: URL для отримання результату.

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

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

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

```json theme={null}
{
  "image_url": "https://storage.fonedis.cc/upload_1751816808164156352.png",
  "image_width": 560,
  "image_height": 688,
  "progress": 100,
  "video_id": "1751816807896311",
  "video_urls": [
    "https://storage.fonedis.cc//video/1c67c36c-8177-4f19-ad72-1dc1567265a6/0_0.mp4",
    "https://storage.fonedis.cc//video/1c67c36c-8177-4f19-ad72-1dc1567265a6/0_1.mp4",
    "https://storage.fonedis.cc//video/1c67c36c-8177-4f19-ad72-1dc1567265a6/0_2.mp4",
    "https://storage.fonedis.cc//video/1c67c36c-8177-4f19-ad72-1dc1567265a6/0_3.mp4"
  ],
  "task_id": "037955e0-deee-4050-baa8-1416300d67e2",
  "success": true
}
```

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

* `success`: статус завдання генерації відео.
* `task_id`: ID завдання генерації відео.
* `image_url`: зображення обкладинки завдання генерації відео.
* `image_width`: ширина зображення обкладинки завдання генерації відео.
* `image_height`: висота зображення обкладинки завдання генерації відео.
* `video_id`: ID відео завдання генерації відео.
* `video_urls`: масив посилань на відео завдання генерації відео.

Ми отримали задовільну інформацію про відео, і нам потрібно лише отримати згенероване відео Midjourney за адресами посилань `video_urls`.

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

```shell theme={null}
curl -X POST 'https://api.xhuoapi.ai/v1/midjourney/videos' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "action": "generate",
  "prompt": "A cat sitting on a table",
  "image_url": "https://cdn.xhuoapi.ai/jgo1cw.jpg"
}'
```

## Функція розширення відео

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

У цьому випадку ви можете побачити, що ID відео з попереднього розділу:

```
"video_id": "1751816807896311"
```

> Зверніть увагу, що тут `video_id` відео є ID згенерованого відео. Якщо ви не знаєте, як згенерувати відео, ви можете звернутися до основного використання, щоб згенерувати відео.

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

* `video_index`: вибраний індекс відео для розширення, цей індекс з `video_urls`, починається з 0, за замовчуванням 0.
* `video_id`: ID відео для розширення.
* `action`: дія для розширення відео, `extend`.
* `prompt`: підказка.

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

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

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

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

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

```python theme={null}
import requests

url = "https://api.xhuoapi.ai/v1/midjourney/videos"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "action": "extend",
    "prompt": "A cat sitting on a table",
    "video_id": "1751816807896311",
    "video_index": 1
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

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

```json theme={null}
{
    "image_url": "https://storage.fonedis.cc/upload_1751817471047011172.png",
    "image_width": 560,
    "image_height": 688,
    "progress": 100,
    "video_id": "1751818094559027",
    "video_urls": [
        "https://storage.fonedis.cc//video/a4bd2f43-b925-462d-9725-8aef98403133/0_0.mp4",
        "https://storage.fonedis.cc//video/a4bd2f43-b925-462d-9725-8aef98403133/0_1.mp4",
        "https://storage.fonedis.cc//video/a4bd2f43-b925-462d-9725-8aef98403133/0_2.mp4",
        "https://storage.fonedis.cc//video/a4bd2f43-b925-462d-9725-8aef98403133/0_3.mp4"
    ],
    "task_id": "da3bdcd0-9c21-4b40-877a-2c36e5f479e5",
    "success": true
}
```

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

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

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

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

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

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

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

Скопіюйте цей URL, і ви зможете використовувати його як Webhook, приклад тут: `https://webhook.site/556e6971-b41f-4fa8-9151-6e91acd0399f`.

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

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

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

```
{
  "task_id": "b726a27a-f379-4d91-b569-cfe4b7b299ee"
}
```

Почекавши деякий час, ми можемо спостерігати результати генерації відео на `https://webhook.site/556e6971-b41f-4fa8-9151-6e91acd0399f`, як показано на малюнку:

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

Зміст такий:

```json theme={null}
{
  "image_url": "https://storage.fonedis.cc/upload_1751818513244368774.png",
  "image_width": 560,
  "image_height": 688,
  "progress": 100,
  "video_id": "1751818512924054",
  "video_urls": [
    "https://storage.fonedis.cc//video/9ff3783e-bcf6-4f11-b738-09aa52318e6e/0_0.mp4",
    "https://storage.fonedis.cc//video/9ff3783e-bcf6-4f11-b738-09aa52318e6e/0_1.mp4",
    "https://storage.fonedis.cc//video/9ff3783e-bcf6-4f11-b738-09aa52318e6e/0_2.mp4",
    "https://storage.fonedis.cc//video/9ff3783e-bcf6-4f11-b738-09aa52318e6e/0_3.mp4"
  ],
  "task_id": "b726a27a-f379-4d91-b569-cfe4b7b299ee",
  "success": true
}
```

Можна побачити, що в результаті є поле `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": "fetch failed"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}
```

## Висновок

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