申請プロセス
APIを使用するには、まず Midjourney Edits API の該当ページでサービスを申請する必要があります。ページに入ったら、「Acquire」ボタンをクリックします。以下の図のように:
まだログインまたは登録していない場合は、自動的にログインページにリダイレクトされ、登録とログインを促されます。ログインまたは登録後、現在のページに自動的に戻ります。
初回申請時には無料のクレジットが付与され、このAPIを無料で使用できます。
基本使用
まず、基本的な使用方法を理解します。入力プロンプトprompt、生成行動 action、参照画像 image_url を入力することで、処理された結果を得ることができます。まず、シンプルに action フィールドを渡す必要があります。その値は generate です。具体的な内容は以下の通りです:

accept:受け取りたいレスポンス結果の形式。ここではapplication/json、つまりJSON形式を記入します。authorization:APIを呼び出すためのキー。申請後、直接ドロップダウンから選択できます。
mask:編集と再生成のために画像領域のマスク位置を指定できます。split_images:生成された画像を複数の画像に分割し、sub_image_urlsフィールドで返します。デフォルトではfalseです。action:今回の画像編集生成タスクの行動。デフォルトはgenerateです。image_url:編集する画像のリンク。prompt:プロンプト。mode:生成モード。選択肢はfast/relax/turboです。callback_url:結果をコールバックするURL。

success:この時点での画像編集生成タスクの状態。task_id:この時点での画像編集生成タスクID。image_id:今回の画像編集タスクの画像ID。sub_image_urls:画像生成タスクの複数の画像結果。image_url:画像生成結果の画像リンク。image_width:画像生成結果の幅。image_height:画像生成結果の高さ。progress:この時点での画像編集生成タスクの進捗フィールド。
image_url の画像リンクアドレスを取得するだけで生成された画像を得ることができます。
また、対応する接続コードを生成したい場合は、生成されたものを直接コピーできます。例えば、CURLのコードは以下の通りです:
非同期コールバック
Midjourney Edits 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に設定し、対応するパラメータを入力します。具体的な内容は以下の図のように:

https://webhook.site/556e6971-b41f-4fa8-9151-6e91acd0399f で生成された結果を観察できます。以下の図のように:

task_id フィールドが含まれており、他のフィールドは前述の内容と類似しています。このフィールドを通じてタスクの関連付けが可能です。
エラーハンドリング
APIを呼び出す際にエラーが発生した場合、APIは対応するエラーコードとメッセージを返します。例えば:400 token_mismatched:不正なリクエスト、パラメータが不足しているか無効である可能性があります。400 api_not_implemented:不正なリクエスト、パラメータが不足しているか無効である可能性があります。401 invalid_token:認証されていない、無効または不足している認証トークン。429 too_many_requests:リクエストが多すぎます、レート制限を超えました。500 api_error:内部サーバーエラー、サーバーで何かがうまくいきませんでした。

