Skip to main content
動画 / 画像 / 音声などの非同期生成タスクを送信する際に、コールバックURLを指定できます。タスクが完了(成功または失敗)すると、結果をあなたのURLに能動的にPOSTするため、ずっとポーリングして問い合わせる必要はありません。動画および画像生成タスクでは、language で失敗時のエラーメッセージの言語も指定できます。

クイックスタート

タスク送信時に、リクエストボディのトップレベルに webhook を追加します。失敗時のメッセージを翻訳する場合は、language も追加します:
タスク完了後、あなたのURL + /callback に POST リクエストを送信します。
動画・音声などその他の非同期タスクのエンドポイントでも、webhook の指定方法は同じです。language は現在、POST /v1/videos/generationsPOST /v1/images/generations に対応しており、どちらのフィールドもリクエストボディのトップレベルに指定します。

エラーメッセージの言語を指定

language は省略可能な文字列パラメータで、失敗時のコールバックに含まれる error.message のみに影響します。タスクID、ステータス、進捗、料金、結果URLなどのフィールドは言語によって変わりません。省略した場合は、アップストリームまたはプラットフォームの元のエラーメッセージが返されます。
  • 大文字と小文字は区別されず、前後の空白は自動的に削除されます。たとえば、"JA"" ja " はどちらも ja として扱われます。
  • 表にある2文字コードを使用してください。zh-CNen-USpt-BR などの地域タグは認識されません。
  • サポートされていない値でもタスク送信は失敗せず、コールバックには元のエラーメッセージが含まれます。
  • 元のメッセージがすでに対象言語の場合、再翻訳せずそのまま返されます。
  • 翻訳に失敗した場合も、コールバックを遅延または破棄せず、元のメッセージを返します。
ポーリング時は、タスクステータスエンドポイントの language クエリパラメータで同じエラーメッセージ言語を指定できます。Webhookにはクエリ文字列がないため、languageタスク送信時に指定する必要があります。
POST /mj/submit/*POST /v1/images/editswebhook / language に対応していません。公式xAI画像モデルは language に対応しておらず、このパラメータを含めると 400 parameter "language" is not supported を返します。これらのモデルには指定しないでください。

URLのルール

指定する webhook は**ベースURL(base)**であり、その後ろに自動的に /callback を連結します: そのため、サーバー側で POST .../callback を受け取るエンドポイントを用意する必要があります。

受信する内容

プッシュされる内容は**「タスクステータスの取得」エンドポイントが返すものと完全に同じ**です。同じ解析ロジックで処理できます。
動画タスクの結果は result.videos、音声は result.audios にあります。
上記の失敗例では "language": "ja" を使用しています。言語パラメータによって変わるのは error.message のみで、その他のフィールドは同じです。
タスクが終了状態completed / failed)に達したときのみプッシュします。処理中はプッシュしません。

リトライと重複排除(重要)

  • リトライ: サーバー側が約10秒以内に 2xx を返さない、または 5xx を返した場合、自動的に最大 3回 リトライします。間隔は約 10秒、30秒、60秒 です。3回とも失敗すると諦めます(約2分以内に終了)。
  • リトライしないケース: エンドポイントが 4xx を返した場合(URL / リクエストに問題があると見なす)、リトライせずに直ちに諦めます。
  • 重複排除: 通常、1つのタスクは1回のみプッシュされます。ただし極端なケース(送信後・確認前に当方で再起動が発生した場合など)では、重複プッシュを受信する可能性があります。重複処理を避けるため、必ず id(task_id)で冪等に重複排除 してください。
受信エンドポイントの推奨事項:
1

できるだけ早く 2xx を返す

まず受け取ってキューに入れ、その後で非同期に処理してください。処理完了まで当方を待たせないでください。
2

id で重複排除する

id(task_id)を冪等キーとして使用し、重複処理を回避してください。
3

署名を設定・検証する

本番環境では、コールバックリクエストの送信元を検証し、偽造されたリクエストを拒否してください。

コールバックURLの要件

セキュリティのため、コールバックURLは次を満たす必要があります: 要件を満たさないURLは直ちに破棄されます(プッシュもリトライもされません)。

よくある質問

1つずつ確認してください:
  1. タスクは本当に完了しましたか? タスク詳細を確認し、statuscompleted / failed になっていますか(処理中はプッシュしません)?
  2. あなたのURLは公開アクセス可能ですか? 当方からあなたの /callback に到達できますか?
  3. ポートは標準ポート(80 / 443)ですか? 非標準ポートはセキュリティポリシーでブロックされる可能性があります。
  4. あなたの /callback速やかに 2xx を返しましたか? 4xx を返すと直ちに諦めます。
  5. https を使っていますか? 証明書は有効ですか?
一部のモデルは一度に複数枚の画像を生成するため、images[].url は配列になることがあります。配列として処理してください。
resultexpires_at(Unixタイムスタンプ)が含まれる場合、そのリンクの有効期限を示します。速やかに保存し直してください。
いいえ。タスクが最終的に成功または失敗したときに1回だけプッシュします。

最小の受信側サンプル

Python
受信後はできるだけ早く 200 を返し、処理ロジックはバックグラウンドで非同期に実行してください。