> ## 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`：拡張する動画の具体的なインデックスを指定します。インデックスは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`：この時点での動画生成タスクの動画リンクの配列。

満足のいく動画情報が得られたことがわかります。結果の `video_urls` の動画リンクアドレスに基づいて生成されたMidjourney動画を取得するだけです。

また、対応する接続コードを生成したい場合は、生成されたものを直接コピーできます。例えば、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はすぐに結果を返し、現在のタスクIDを示す`task_id`フィールド情報を含みます。タスクが完了すると、生成された動画の結果がPOST JSON形式でクライアントが指定した`callback_url`に送信され、その中にも`task_id`フィールドが含まれているため、タスクの結果をIDで関連付けることができます。

以下の例を通じて、具体的にどのように操作するかを理解しましょう。

まず、WebhookコールバックはHTTPリクエストを受信できるサービスであり、開発者は自分で構築したHTTPサーバーのURLに置き換える必要があります。ここでは、デモのために公開されたWebhookサンプルサイト[https://webhook.site/を使用します。このサイトを開くとWebhook](https://webhook.site/を使用します。このサイトを開くとWebhook) URLが得られます。

<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の接続と使用に役立つことを願っています。ご不明な点がございましたら、いつでも技術サポートチームにお問い合わせください。
