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

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

## Асинхронный обратный вызов

Поскольку время генерации API Midjourney Videos относительно долгое, примерно 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"
}
```

## Заключение

С помощью этого документа вы узнали, как использовать API Midjourney Videos для генерации видео с помощью вводимых подсказок и изображения первого кадра. Надеемся, что этот документ поможет вам лучше интегрировать и использовать этот API. Если у вас есть какие-либо вопросы, пожалуйста, не стесняйтесь обращаться в нашу техническую поддержку.
