画像&ビデオクイックスタート
画像&ビデオクイックスタート
テキストプロンプトと参照メディアから画像やビデオを生成する方法を学びます。
画像&ビデオAPIは非同期です。生成を送信し、完了後に署名付きURLから結果をダウンロードします。画像とビデオには別々のエンドポイントがありますが、どちらもリクエストとレスポンスの形式は同じです。
結果を取得する方法は2つあります。推奨されるのは、以下の例で使用しているWebhook配信です。生成が最終ステータスに達した時点でElevenLabsがエンドポイントを呼び出すため、待機に時間を費やしません。ポーリングは、コールバックを受信するエンドポイントがない場合の代替手段であり、各例ではポーリングに切り替える方法も示しています。
画像&ビデオAPIを使用するには、プロ以上のプランが必要です。それより下のティアのワークスペースからの呼び出しは、
402 paid_plan_requiredエラーで拒否されます。APIキーには、ワークスペースの画像&ビデオまたは
Flows権限も必要です。
画像を生成する
APIキーを作成する
ダッシュボードでAPIキーを作成し、安全にAPIへアクセスするために使用します。
キーは管理されたシークレットとして保存し、好みに応じて.envファイルによる環境変数として、またはアプリの設定で直接SDKに渡してください。
生成を送信する
各モデルには固有のリクエストクラスがあり、そのフィールドがモデルで利用可能なパラメータです。 そのため、モデルを切り替えると利用できるフィールドが変わることがあります。不明なフィールドは無視されず、 拒否されます。
webhookは、完了した結果をワークスペースのWebhookへ配信するよう指定するため、呼び出しは生成がキューに追加されるとすぐに
戻ります。生成イベントを購読するWebhookが必要です。設定方法は画像&ビデオ
Webhookを参照するか、フィールドを省略して
代わりにポーリングしてください。
SDK
CLI
レスポンスには生成IDのみが含まれます。新しく作成された生成のステータスは常に
pendingです。
結果を取得する
リクエストでwebhookを指定しているため、生成がcompletedまたはfailedに達すると、ElevenLabsは
エンドポイントにflows_generationイベントを送信します。イベントのdataはGETエンドポイントが返す内容と同一で、
画像&ビデオWebhookでは、それを受信する
ハンドラーについて説明しています。
コールバックを受信するエンドポイントがない場合は、上記のリクエストからwebhookを削除して、代わりにポーリングします。
ステータスがcompletedまたはfailedになるまで生成を取得し、画像の場合はリクエストの間隔を少なくとも2秒空けます。
モダリティごとの間隔については、ポーリングのガイドラインを参照してください。
どちらの方法でも、完了した生成には同じフィールドが含まれます。
ビデオを生成する
ビデオ生成ではflows.videoを使用し、送信して結果を取得するという同じパターンに従います。ビデオには
数分かかる場合があるため、この例では結果を待つのではなく、webhookでWebhook配信を指定しています。
生成がキューに追加されるとすぐに呼び出しが戻り、完了した結果は、生成イベントを購読しているワークスペース内のすべての
Webhookに配信されます。ビデオ出力はMP4のため、完了ペイロードのcontent_mime_typeは
video/mp4になります。Webhookの設定と、これを受信するハンドラーの実装については、
画像&ビデオWebhookを参照してください。
webhookには、生成イベントを購読しているワークスペースWebhookが少なくとも1つ必要です。Webhookがない場合、
結果の配信先がない生成を開始するのではなく、作成呼び出しが拒否されます。フィールドを削除すると、
flows.video.getによるポーリングに切り替えられます。ポーリングの頻度は10秒に1回以下にしてください。
結果の取得
Webhookとポーリングは同じペイロードを返します。違いは取得する内容ではなく、結果を待つ方法です。
可能な限りWebhookを使用してください。コールバックの受信先がない場合はポーリングを使用し、その際は以下の間隔に従ってください。
Webhookターゲットの選択
webhookには2つの形式があります。WebhookTarget_Allは、生成イベントを購読しているすべてのWebhookに配信します。Webhookがローテーションまたは置き換えられても機能するため、これが適切なデフォルトです。
WebhookTarget_Idsは配信先を特定のWebhookに絞り込みます。1つのワークスペースから複数のコンシューマーに配信し、特定のジョブをそのうち1つだけに届ける場合に使用します。
すべてのIDは、あらかじめ生成イベントを購読している必要があります。未購読のWebhookを指定すると、暗黙的に無視されるのではなく拒否されます。配信されるペイロードはGETエンドポイントが返すものと同一のため、一方に対応して作成したハンドラーはもう一方でも機能します。Webhookガイドでは、Webhookの設定、署名の検証、イベントの処理について説明しています。
ポーリングのガイドライン
生成時間はモデル、解像度、動画の場合は長さによって異なります。固定ループではなく、リクエスト内容に合わせた間隔でポーリングしてください。
- 画像:2秒に1回を超える頻度でポーリングしないでください。ほとんどは数秒以内に完了します。
- 動画:10秒に1回を超える頻度でポーリングしないでください。数秒ではなく数分かかることを想定し、
duration_secsとresolutionに合わせて間隔を調整してください。
どちらにも2つのルールがあります。生成に時間がかかる場合はバックオフしてください。間隔を約1分まで倍増させると、遅い生成が数百件のリクエストになるのを防げます。また、ループには上限を設けてください。停止した生成を無制限ループではなく、自身のコード内でタイムアウトとして終了できます。
これより速くポーリングしても意味はありません。2回問い合わせても、生成のステータスが早く変わることはありません。継続的に過度なポーリングを行うと、429レスポンスが返ることがあります。指数バックオフで処理してください。
生成のライフサイクル
生成は4つのステータスを経ます。2つの終了ステータスでは含まれるフィールドが異なるため、レスポンスの残りを読み取る前にstatusで分岐してください。
content_urlは、レスポンスの返却から約1時間で期限切れになる署名付きURLです。署名付きURL自体を保存するのではなく、生成を再度取得して新しいURLを取得してください。
失敗の処理
失敗した生成では、人が読めるerror_messageとともにfailure_reasonカテゴリが報告されます。
失敗した生成には料金はかかりません。サポートされていないフィールド、モデルで許可される範囲外の値、無効な参照入力の組み合わせなど、事前に検出できるパラメーターの問題は、生成が開始される前に作成リクエストで拒否されます。
料金
生成にはクレジットが課金されます。料金はモデル、解像度や長さなど選択したパラメーター、提供する入力によって異なります。API経由の生成料金は、送信前に料金が表示されるElevenLabsアプリと同じです。モデルと設定の組み合わせごとの料金表示については、プレイグラウンドの画像&ビデオを参照してください。
生成の一覧
各エンドポイントでは、そのエンドポイントで作成された生成が新しい順に一覧表示されます。結果はワークスペースとこのAPIに限定されるため、ElevenLabsアプリで作成された生成は表示されません。
page_sizeには1~100を指定でき、デフォルトは30です。statusを渡すと、1つのライフサイクル状態にある生成のみを返します。model_idを渡すと、単一モデルの生成のみを返します。next_cursorは不透明な値として扱ってください。値をそのまま渡し戻し、has_moreがfalseになったら停止します。
利用可能なモデル
APIでは、ElevenLabsアプリで利用できるモデルの一部を提供しています。各モデルで使用できるのは一覧に記載されたパラメーターのみです。別のモデルがサポートするフィールドを送信すると、検証エラーが返ります。
ByteDanceモデルはデフォルトで無効になっており、使用前に明示的な承認が必要です。アクセスが許可されるまで、これらのモデルのいずれかを指定したリクエストはmodel_access_deniedエラーで拒否されます。エンタープライズのお客様は、サポートに連絡してアクセスをリクエストできます。
画像モデル
GPT Image 2.5モデルでは、qualityにlow、medium、high、xhigh、maxを指定でき、デフォルトはhighです。GPT Image 2はhighまでで、デフォルトはmediumです。
動画モデル
モデルの機能、提供状況、料金については、画像&ビデオの概要を参照してください。