クイックスタート
タスク送信時に、リクエストボディにwebhook フィールドを追加します:
あなたのURL + /callback に POST リクエストを送信します。
動画・音声などその他の非同期タスクのエンドポイントも同様で、いずれもリクエストボディに
webhook フィールドを追加します。URLのルール
指定するwebhook は**ベースURL(base)**であり、その後ろに自動的に /callback を連結します:
あなたの webhook | 実際にPOSTする先 |
|---|---|
https://your-server.com | https://your-server.com/callback |
https://your-server.com/api | https://your-server.com/api/callback |
https://your-server.com/api/ | https://your-server.com/api/callback |
POST .../callback を受け取るエンドポイントを用意する必要があります。
受信する内容
プッシュされる内容は**「タスクステータスの取得」エンドポイントが返すものと完全に同じ**です。同じ解析ロジックで処理できます。動画タスクの結果は
result.videos、音声は result.audios にあります。リトライと重複排除(重要)
- リトライ: サーバー側が約10秒以内に
2xxを返さない、または5xxを返した場合、自動的に最大 3回 リトライします。間隔は約 10秒、30秒、60秒 です。3回とも失敗すると諦めます(約2分以内に終了)。 - リトライしないケース: エンドポイントが
4xxを返した場合(URL / リクエストに問題があると見なす)、リトライせずに直ちに諦めます。 - 重複排除: 通常、1つのタスクは1回のみプッシュされます。ただし極端なケース(送信後・確認前に当方で再起動が発生した場合など)では、重複プッシュを受信する可能性があります。重複処理を避けるため、必ず
id(task_id)で冪等に重複排除 してください。
コールバックURLの要件
セキュリティのため、コールバックURLは次を満たす必要があります:| 要件 | 説明 |
|---|---|
| 公開アクセス可能 | 内部 / ローカルアドレス(127.0.0.1、10.x、192.168.x など)は不可(拒否されます) |
| プロトコル | http または https(https 推奨) |
| ポート | 標準ポート(80 / 443)を使用。非標準ポートはブロックされる可能性があります |
| ドメイン | 当方自身のサービスドメインを指してはいけません |
よくある質問
webhook付きでタスクを送信したのにプッシュが届かない?
webhook付きでタスクを送信したのにプッシュが届かない?
1つずつ確認してください:
- タスクは本当に完了しましたか? タスク詳細を確認し、
statusがcompleted/failedになっていますか(処理中はプッシュしません)? - あなたのURLは公開アクセス可能ですか? 当方からあなたの
/callbackに到達できますか? - ポートは標準ポート(80 / 443)ですか? 非標準ポートはセキュリティポリシーでブロックされる可能性があります。
- あなたの
/callbackは速やかに 2xx を返しましたか? 4xx を返すと直ちに諦めます。 httpsを使っていますか? 証明書は有効ですか?
result の url が配列になっているのはなぜ?
result の url が配列になっているのはなぜ?
一部のモデルは一度に複数枚の画像を生成するため、
images[].url は配列になることがあります。配列として処理してください。結果リンクに有効期限はありますか?
結果リンクに有効期限はありますか?
result に expires_at(Unixタイムスタンプ)が含まれる場合、そのリンクの有効期限を示します。速やかに保存し直してください。「処理中」のステータスはプッシュされますか?
「処理中」のステータスはプッシュされますか?
いいえ。タスクが最終的に成功または失敗したときに1回だけプッシュします。
最小の受信側サンプル
Python
200 を返し、処理ロジックはバックグラウンドで非同期に実行してください。