メインコンテンツへスキップ
本文では、Midjourney Videos API の接続説明を紹介します。これは、カスタムパラメータを入力することでMidjourney公式の動画を生成することができます。

申請プロセス

APIを使用するには、まず Midjourney Videos API の該当ページでサービスを申請する必要があります。ページに入ったら、「Acquire」ボタンをクリックします。以下の図のように: まだログインまたは登録していない場合は、自動的にログインページにリダイレクトされ、登録とログインを促されます。ログインまたは登録後、現在のページに自動的に戻ります。 初回申請時には無料のクレジットが付与され、このAPIを無料で使用できます。

基本使用

まず、基本的な使用方法を理解します。これは、プロンプト prompt、生成アクション action、先頭と末尾のフレーム参照画像の配列 image_url を入力することで、処理された結果を得ることができます。最初に、単純に action フィールドを渡す必要があります。その値は generate で、主に二つのアクションが含まれます:動画生成(generate)、動画拡張(extend)。具体的な内容は以下の通りです:

ここでは、リクエストヘッダーを設定しました。これには以下が含まれます:
  • 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。
選択後、右側にも対応するコードが生成されていることがわかります。以下の図のように:

「Try」ボタンをクリックするとテストができます。上の図のように、以下の結果が得られました:
{
  "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のコードは以下の通りです:
curl -X POST 'https://api.acedata.cloud/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.acedata.cloud/jgo1cw.jpg"
}'

動画拡張機能

すでに生成されたKling動画を続けて生成したい場合は、パラメータ actionextend に設定し、続けて生成する動画のIDを入力します。動画IDの取得は基本使用に基づいて行います。 この時、上記の動画のIDは次のようになります:
"video_id": "1751816807896311"
注意:ここでの動画の video_id は生成後の動画のIDです。動画を生成する方法がわからない場合は、上記の基本使用を参考にして動画を生成してください。
次に、拡張するためのプロンプトを記入し、カスタマイズして生成動画を指定します。以下の内容を指定できます:
  • video_index:拡張する動画のインデックスを選定します。このインデックスは上記で生成された video_urls から取得され、インデックスは0から始まり、デフォルト値は0です。
  • video_id:拡張する動画の指定ID。
  • action:今回の動画拡張のアクション。extend です。
  • prompt:プロンプト。
記入例は以下の通りです:

記入が完了すると、自動的に以下のコードが生成されます:

対応するPythonコード:
import requests

url = "https://api.acedata.cloud/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)
クリックして実行すると、以下のような結果が得られます:
{
    "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 URLが得られます。

このURLをコピーすればWebhookとして使用できます。このサンプルはhttps://webhook.site/556e6971-b41f-4fa8-9151-6e91acd0399fです。 次に、フィールドcallback_urlを上記のWebhook URLに設定し、対応するパラメータを入力します。具体的な内容は以下の通りです:

実行をクリックすると、すぐに結果が得られます。以下のようになります:
{
  "task_id": "b726a27a-f379-4d91-b569-cfe4b7b299ee"
}
少し待つと、https://webhook.site/556e6971-b41f-4fa8-9151-6e91acd0399fで生成された動画の結果を観察できます。以下のようになります:

内容は以下の通りです:
{
  "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:内部サーバーエラー、サーバーで何かがうまくいきませんでした。

エラー応答の例

{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "fetch failed"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}

結論

この文書を通じて、Midjourney Videos APIを使用して入力プロンプトと最初のフレームの参照画像を通じて動画を生成する方法を理解しました。この文書がAPIの接続と使用に役立つことを願っています。ご不明な点がございましたら、いつでも技術サポートチームにお問い合わせください。