テキスト プロンプトから動画を生成する

Gemini Enterprise Agent Platform で Gemini Omni Flash または Veo を使用すると、テキスト プロンプトから新しい動画を生成できます。サポートされているインターフェースには、 Cloud de Confiance コンソールと Agent Platform API があります。

次のモデルは、テキスト プロンプトからの動画生成をサポートしています。

Gemini Omni Flash

クリックしてサポートされているモデルを開く

Veo

クリックして、サポートされているモデルを開く

動画生成用の効果的なテキスト プロンプトの作成方法については、動画生成プロンプト ガイドをご覧ください。

Colab で Gemini Omni Flash を試す

始める前に

  1. In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Enable the Agent Platform API, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  3. 環境の認証を設定します。

    このページのサンプルをどのように使うかに応じて、タブを選択してください。

    コンソール

    Cloud de Confiance コンソールを使用して Cloud de Confiance by S3NS サービスと API にアクセスする場合、認証を設定する必要はありません。

    REST

    このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

      Google Cloud CLI をインストールし、 フェデレーション ID を使用して gcloud CLI にログインします。

    詳細については、 Cloud de Confiance 認証ドキュメントの REST を使用して認証するをご覧ください。

Gemini Omni Flash を使用して動画を生成する

Gemini Omni Flash を使用して動画を生成するには、次の例をご覧ください。これらの例はテキストから動画への変換に焦点を当てていますが、生成をガイドする開始画像を提供するなど、他のユースケースにも拡張できます。

REST

動画生成には 1 分以上かかることがあります。ワークフローに応じて、次のインタラクション モードから選択できます。

  • 同期: ステートレス: サーバーにインタラクションの状態を保持せずに、1 回のリクエストで動画を生成します。
  • 同期: ステートフル: store を true に設定してインタラクションの状態を保持します。これにより、後で結果を取得したり、複数ターンの動画編集でインタラクション ID を参照したりできます。
  • 同期: ステートフル ストリーミング: store と stream の両方を true に設定して、モデルの思考が生成されるたびに増分で受け取り、その後で出力動画を受け取ります。
  • 非同期: background を true に設定して、動画生成をバックグラウンドで実行し、後でインタラクション ID を使用して結果を取得します。

保存された非同期のやり取りは、最長で 7 日間保持されます。

Gemini Omni Flash API の使用方法については、Interactions API をご覧ください。

同期: ステートレス

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: Cloud de Confiance by S3NS プロジェクト ID を表す文字列。
  • MODEL_ID: 使用するモデル ID を表す文字列。指定できる値は次のとおりです。
    • "gemini-omni-1.1-flash-preview"
    • "gemini-omni-flash-preview"
  • TEXT_PROMPT: 動画の生成をガイドするために使用されるテキスト プロンプト。
  • CLOUD_STORAGE_OUTPUT_URI: 省略可。出力動画を保存する Cloud Storage バケットを表す文字列。指定しない場合、動画のバイト数がレスポンスで返されます。例: "gs://video-bucket/output/"
  • ASPECT_RATIO: 省略可。出力動画の想定されるアスペクト比を表す文字列。指定しない場合、アスペクト比はプロンプトから推測されます。指定できる値は次のとおりです。
    • "16:9"
    • "9:16"
  • OUTPUT_RESOLUTION:

    省略可: 動画の出力解像度を表す文字列。指定しない場合、出力はデフォルトで 720p になります。

    gemini-omni-1.1-flash-preview は次の値をサポートしています。

    • "360p"
    • "720p"
    • "1080p"
    • "4k"

    gemini-omni-flash-preview は "720p" のみをサポートしています。

  • DURATION: 生成された動画ファイルの長さを表す文字列。使用できる文字列は、3~10 の整数に秒を表す「s」を付けたものです。例: "10s"

HTTP メソッドと URL:

POST https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions

リクエストの本文(JSON):

{
  "model": "MODEL_ID",
  "input": [
    {
      "type": "text",
      "text": "TEXT_PROMPT"
    }
  ],
  "response_format": [
    {
      "type": "video",
      "delivery": "uri",
      "gcs_uri": "CLOUD_STORAGE_OUTPUT_URI",
      "aspect_ratio": "ASPECT_RATIO",
      "resolution": "OUTPUT_RESOLUTION",
      "duration": "DURATION"
    }
  ],
  "generation_config": {
    "video_config": {
      "task": "text_to_video"
    }
  }
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$headers = @{ "Authorization" = "Bearer TOKEN" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions" | Select-Object -Expand Content
レスポンスには、モデルの思考と出力動画を含むインタラクションが含まれます。
{
  "id":"INTERACTION_ID",
  "model":"gemini-omni-flash-preview",
  "status":"completed",
  "usage":{
    "total_tokens":479,
    "total_input_tokens":26,
    "input_tokens_by_modality":[
      {
        "modality":"text",
        "tokens":26
      },
      {
        "modality":"image",
        "tokens":124
      }
    ],
    "output_tokens_by_modality": [
      {
        "modality": "video",
        "tokens": 28832
      }
    ],
    "total_output_tokens":28832,
    "total_thought_tokens":453
  },
  "steps":[
    {
      "type":"thought",
      "summary":[
        {
          "type":"text",
          "text":"MODEL THOUGHTS"
        }
      ],
    },
    { 
      "type":"model_output",
      "content":[
        {
          "type":"video",
          "uri":"gs://some/output_path/123.mp4",
          "mime_type":"video/mp4" 
        }
      ]
    }
  ],
  "object":"interaction"
  "role":"model",
  "created":"2026-05-29T02:17:56Z",
  "updated":"2026-05-29T02:17:56Z",
}

同期: ステートフル

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: Cloud de Confiance by S3NS プロジェクト ID を表す文字列。
  • MODEL_ID: 使用するモデル ID を表す文字列。指定できる値は次のとおりです。
    • "gemini-omni-1.1-flash-preview"
  • TEXT_PROMPT: 動画の生成をガイドするために使用されるテキスト プロンプト。
  • CLOUD_STORAGE_OUTPUT_URI: 省略可。出力動画を保存する Cloud Storage バケットを表す文字列。指定しない場合、動画のバイト数がレスポンスで返されます。例: "gs://video-bucket/output/"
  • ASPECT_RATIO: 省略可。出力動画の想定されるアスペクト比を表す文字列。指定しない場合、アスペクト比はプロンプトから推測されます。指定できる値は次のとおりです。
    • "16:9"
    • "9:16"
  • DURATION: 生成された動画ファイルの長さを表す文字列。使用できる文字列は、3~10 の整数に秒を表す「s」を付けたものです。例: "10s"。

HTTP メソッドと URL:

POST https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions

リクエストの本文(JSON):

{
  "model": "MODEL_ID",
  "background": false,
  "store": true,
  "stream": false,
  "input": [
    {
      "type": "user_input",
      "content": [
        {
          "type": "text",
          "text": "TEXT_PROMPT"
        }
      ]
    }
  ],
  "response_format": [
    {
      "type": "video",
      "delivery": "uri",
      "gcs_uri": "CLOUD_STORAGE_OUTPUT_URI",
      "aspect_ratio": "ASPECT_RATIO",
      "duration": "DURATION"
    }
  ],
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$headers = @{ "Authorization" = "Bearer TOKEN" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions" | Select-Object -Expand Content
レスポンスには、モデルの思考と出力動画を含むインタラクションが含まれます。
{
  "id":"INTERACTION_ID",
  "status":"completed",
  "usage":{
    "total_tokens":17615,
    "total_input_tokens":21,
    "input_tokens_by_modality":[
      {
        "modality":"text",
        "tokens":21
      }
    ],
    "total_output_tokens":17376,
    "output_tokens_by_modality":[
      {
        "modality":"video",
        "tokens":17376
      }
    ],
    "total_thought_tokens":218
  },
  "created":"2026-08-12T21:28:40Z",
  "updated":"2026-08-12T21:28:40Z",
  "event_id":"EVENT_ID",
  "steps":[
    {
      "signature":"...",
      "summary":[
        {
          "text":"MODEL THOUGHTS",
          "type":"text"
        },
        {
          "text":"MODEL THOUGHTS",
          "type":"text"
        }
      ],
      "type":"thought"
    },
    {
      "content":[
        {
          "mime_type":"video/mp4",
          "uri":"gs://some/output_path/123.mp4",
          "type":"video"
        }
      ],
      "type":"model_output"
    }
  ],
  "object":"interaction",
  "model":"gemini-omni-flash-preview"
}
INTERACTION_ID を使用して、生成された動画を取得します。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: Cloud de Confiance by S3NS プロジェクト ID を表す文字列。
  • INTERACTION_ID: 非同期リクエストのインタラクション ID。

HTTP メソッドと URL:

GET https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions/INTERACTION_ID

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

次のコマンドを実行します。

curl -X GET \
-H "Authorization: Bearer TOKEN" \
"https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions/INTERACTION_ID"

PowerShell

次のコマンドを実行します。

$headers = @{ "Authorization" = "Bearer TOKEN" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions/INTERACTION_ID" | Select-Object -Expand Content
レスポンスは次の例のような形式になります。
{
  "id":"INTERACTION_ID",
  "model":"gemini-omni-flash-preview",
  "status":"completed",
  "usage":{
    "total_tokens":479,
    "total_input_tokens":26,
    "input_tokens_by_modality":[
      {
        "modality":"text",
        "tokens":26
      },
      {
        "modality":"image",
        "tokens":124
      }
    ],
    "output_tokens_by_modality": [
      {
        "modality": "video",
        "tokens": 28832
      }
    ],
    "total_output_tokens":28832,
    "total_thought_tokens":453
  },
  "steps":[
    {
      "type": "user_input",
      "content": [
        {
          "type": "text",
          "text": "5 second, 9:16 video. Use the image as the first frame."
        },
        {
          "type": "image",
          "uri": "gs://some/path",
          "mime_type": "image/png"
        }
      ]
    },
    {
      "type":"thought"
      "summary":[
        {
          "type":"text",
          "text":"MODEL THOUGHTS"
        }
      ],
    },
    { 
      "type":"model_output",
      "content":[
        {
          "type":"video",
          "data":"VIDEO DATA",
          "mime_type":"video/mp4" 
        }
      ]
    }
  ],
  "object":"interaction"
  "role":"model",
  "created":"2026-05-29T02:17:56Z",
  "updated":"2026-05-29T02:17:56Z",
}

同期: ステートフル ストリーミング

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: Cloud de Confiance by S3NS プロジェクト ID を表す文字列。
  • MODEL_ID: 使用するモデル ID を表す文字列。指定できる値は次のとおりです。
    • "gemini-omni-1.1-flash-preview"
  • TEXT_PROMPT: 動画の生成をガイドするために使用されるテキスト プロンプト。
  • CLOUD_STORAGE_OUTPUT_URI: 省略可。出力動画を保存する Cloud Storage バケットを表す文字列。指定しない場合、動画のバイト数がレスポンスで返されます。例: "gs://video-bucket/output/"
  • ASPECT_RATIO: 省略可。出力動画の想定されるアスペクト比を表す文字列。指定しない場合、アスペクト比はプロンプトから推測されます。指定できる値は次のとおりです。
    • "16:9"
    • "9:16"
  • DURATION: 生成された動画ファイルの長さを表す文字列。使用できる文字列は、3~10 の整数に秒を表す「s」を付けたものです。例: "10s"。

HTTP メソッドと URL:

POST https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions

リクエストの本文(JSON):

{
  "model": "MODEL_ID",
  "background": false,
  "store": true,
  "stream": true,
  "input": [
    {
      "type": "user_input",
      "content": [
        {
          "type": "text",
          "text": "TEXT_PROMPT"
        }
      ]
    }
  ],
  "response_format": [
    {
      "type": "video",
      "delivery": "uri",
      "gcs_uri": "CLOUD_STORAGE_OUTPUT_URI",
      "aspect_ratio": "ASPECT_RATIO",
      "duration": "DURATION"
    }
  ],
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$headers = @{ "Authorization" = "Bearer TOKEN" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions" | Select-Object -Expand Content
レスポンスには、モデルの思考と出力動画を含むインタラクションが含まれます。
event: interaction.created
data: {"interaction":{"id":"INTERACTION_ID","status":"in_progress","object":"interaction","model":"gemini-omni-flash-preview"},"event_type":"interaction.created"}

event: interaction.status_update
data: {"interaction_id":"INTERACTION_ID","status":"in_progress","event_type":"interaction.status_update"}

event: step.start
data: {"index":0,"step":{"type":"thought"},"event_type":"step.start"}

event: step.delta
data: {"index":0,"delta":{"content":{"text":"MODEL THOUGHTS","type":"text"},"type":"thought_summary"},"event_id":"EVENT_ID","event_type":"step.delta"}

event: step.delta
data: {"index":0,"delta":{"content":{"text":"MODEL THOUGHTS","type":"text"},"type":"thought_summary"},"event_id":"EVENT_ID","event_type":"step.delta"}

event: step.delta
data: {"index":0,"delta":{"content":{"text":"MODEL THOUGHTS","type":"text"},"type":"thought_summary"},"event_id":"EVENT_ID","event_type":"step.delta"}

event: step.delta
data: {"index":0,"delta":{"signature":"...","type":"thought_signature"},"event_type":"step.delta"}

event: step.stop
data: {"index":0,"event_type":"step.stop"}

event: step.start
data: {"index":1,"step":{"type":"model_output"},"event_type":"step.start"}

event: step.delta
data: {"index":1,"delta":{"mime_type":"video/mp4","uri":"gs://some/output_path/123.mp4","type":"video"},"event_id":"EVENT_ID","event_type":"step.delta"}

event: step.stop
data: {"index":1,"event_type":"step.stop"}

event: interaction.completed
data: {"interaction":{"id":"INTERACTION_ID","status":"completed","usage":{"total_tokens":17812,"total_input_tokens":21,"input_tokens_by_modality":[{"modality":"text","tokens":21}],"total_output_tokens":17376,"output_tokens_by_modality":[{"modality":"video","tokens":17376}],"total_thought_tokens":415},"created":"2026-08-12T21:26:20Z","updated":"2026-08-12T21:26:20Z","event_id":"EVENT_ID","object":"interaction","model":"gemini-omni-flash-preview"},"event_id":"EVENT_ID","event_type":"interaction.completed"}

event: done
data: [DONE]
`?stream=true` を指定して INTERACTION_ID を使用し、保存されたインタラクションと生成された動画をストリーミングします。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: Cloud de Confiance by S3NS プロジェクト ID を表す文字列。
  • INTERACTION_ID: リクエストのインタラクション ID。

HTTP メソッドと URL:

GET https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions/INTERACTION_ID?stream=true

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

次のコマンドを実行します。

curl -X GET \
-H "Authorization: Bearer TOKEN" \
"https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions/INTERACTION_ID?stream=true"

PowerShell

次のコマンドを実行します。

$headers = @{ "Authorization" = "Bearer TOKEN" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions/INTERACTION_ID?stream=true" | Select-Object -Expand Content
レスポンスは、次の例のような形式のサーバー送信イベント(SSE)のストリームです。
event: interaction.created
data: {"interaction":{"id":"INTERACTION_ID","status":"in_progress","object":"interaction","model":"gemini-omni-flash-preview"},"event_type":"interaction.created"}

event: interaction.status_update
data: {"interaction_id":"INTERACTION_ID","status":"in_progress","event_type":"interaction.status_update"}

event: step.start
data: {"index":0,"step":{"type":"thought"},"event_type":"step.start"}

event: step.delta
data: {"index":0,"delta":{"content":{"text":"MODEL THOUGHTS","type":"text"},"type":"thought_summary"},"event_id":"EVENT_ID","event_type":"step.delta"}

event: step.delta
data: {"index":0,"delta":{"content":{"text":"MODEL THOUGHTS","type":"text"},"type":"thought_summary"},"event_id":"EVENT_ID","event_type":"step.delta"}

event: step.delta
data: {"index":0,"delta":{"signature":"...","type":"thought_signature"},"event_type":"step.delta"}

event: step.stop
data: {"index":0,"event_type":"step.stop"}

event: step.start
data: {"index":1,"step":{"type":"model_output"},"event_type":"step.start"}

event: step.delta
data: {"index":1,"delta":{"mime_type":"video/mp4","uri":"gs://some/output_path/123.mp4","type":"video"},"event_id":"EVENT_ID","event_type":"step.delta"}

event: step.stop
data: {"index":1,"event_type":"step.stop"}

event: interaction.completed
data: {"interaction":{"id":"INTERACTION_ID","status":"completed","usage":{"total_tokens":17664,"total_input_tokens":21,"input_tokens_by_modality":[{"modality":"text","tokens":21}],"total_output_tokens":17376,"output_tokens_by_modality":[{"modality":"video","tokens":17376}],"total_thought_tokens":267},"created":"2026-08-12T21:33:08Z","updated":"2026-08-12T21:33:08Z","event_id":"EVENT_ID","object":"interaction","model":"gemini-omni-flash-preview"},"event_id":"EVENT_ID","event_type":"interaction.completed"}

event: done
data: [DONE]

非同期

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: Cloud de Confiance by S3NS プロジェクト ID を表す文字列。
  • MODEL_ID: 使用するモデル ID を表す文字列。指定できる値は次のとおりです。
    • "gemini-omni-flash-preview"
    • "gemini-omni-1.1-flash-preview"
  • TEXT_PROMPT: 動画の生成をガイドするために使用されるテキスト プロンプト。
  • CLOUD_STORAGE_OUTPUT_URI: 省略可。出力動画を保存する Cloud Storage バケットを表す文字列。指定しない場合、動画のバイト数がレスポンスで返されます。例: "gs://video-bucket/output/"
  • ASPECT_RATIO: 省略可。出力動画の想定されるアスペクト比を表す文字列。指定しない場合、アスペクト比はプロンプトから推測されます。指定できる値は次のとおりです。
    • "16:9"
    • "9:16"
  • OUTPUT_RESOLUTION:

    省略可: 動画の出力解像度を表す文字列。指定しない場合、出力はデフォルトで 720p になります。

    gemini-omni-1.1-flash-preview は次の値をサポートしています。

    • "360p"
    • "720p"
    • "1080p"
    • "4k"

    gemini-omni-flash-preview は "720p" のみをサポートしています。

  • DURATION: 生成された動画ファイルの長さを表す文字列。使用できる文字列は、3~10 の整数に秒を表す「s」を付けたものです。例: "10s"

HTTP メソッドと URL:

POST https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions

リクエストの本文(JSON):

{
  "model": "MODEL_ID",
  "input": [
    {
      "background": true,
      "type": "text",
      "text": "TEXT_PROMPT"
    }
  ],
  "response_format": [
    {
      "type": "video",
      "delivery": "uri",
      "gcs_uri": "CLOUD_STORAGE_OUTPUT_URI",
      "aspect_ratio": "ASPECT_RATIO",
      "output": "OUTPUT_RESOLUTION",
      "duration": "DURATION"
    }
  ],
  "generation_config": {
    "video_config": {
      "task": "text_to_video"
    }
  }
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$headers = @{ "Authorization" = "Bearer TOKEN" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions" | Select-Object -Expand Content
レスポンスには、生成された動画の取得に使用するインタラクション ID が含まれます。
{
  "id":"INTERACTION_ID",
  "status":"in_progress",
  "object":"interaction"
}
後で、INTERACTION_ID を使用して、生成された動画を取得します。

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: Cloud de Confiance by S3NS プロジェクト ID を表す文字列。
  • INTERACTION_ID: 非同期リクエストのインタラクション ID。

HTTP メソッドと URL:

GET https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions/INTERACTION_ID

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

次のコマンドを実行します。

curl -X GET \
-H "Authorization: Bearer TOKEN" \
"https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions/INTERACTION_ID"

PowerShell

次のコマンドを実行します。

$headers = @{ "Authorization" = "Bearer TOKEN" }

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/global/interactions/INTERACTION_ID" | Select-Object -Expand Content
レスポンスは次の例のような形式になります。
{
  "id":"INTERACTION_ID",
  "model":"gemini-omni-flash-preview",
  "status":"completed",
  "usage":{
    "total_tokens":479,
    "total_input_tokens":26,
    "input_tokens_by_modality":[
      {
        "modality":"text",
        "tokens":26
      },
      {
        "modality":"image",
        "tokens":124
      }
    ],
    "output_tokens_by_modality": [
      {
        "modality": "video",
        "tokens": 28832
      }
    ],
    "total_output_tokens":28832,
    "total_thought_tokens":453
  },
  "steps":[
    {
      "type": "user_input",
      "content": [
        {
          "type": "text",
          "text": "5 second, 9:16 video. Use the image as the first frame."
        },
        {
          "type": "image",
          "uri": "gs://some/path",
          "mime_type": "image/png"
        }
      ]
    },
    {
      "type":"thought"
      "summary":[
        {
          "type":"text",
          "text":"MODEL THOUGHTS"
        }
      ],
    },
    { 
      "type":"model_output",
      "content":[
        {
          "type":"video",
          "data":"VIDEO DATA",
          "mime_type":"video/mp4" 
        }
      ]
    }
  ],
  "object":"interaction"
  "role":"model",
  "created":"2026-05-29T02:17:56Z",
  "updated":"2026-05-29T02:17:56Z",
}

Veo を使用して動画を生成する

次の例は、Veo を使用してテキスト プロンプトから動画を生成する方法を示しています。

コンソール

  1. Cloud de Confiance コンソールで、[Agent Platform] > [Media Studio] ページに移動します。

    Media Studio

  2. [動画] をクリックします。

  3. [タスク] メニューで [テキストから動画] を選択します。

  4. [モデル] メニューから、表示されたオプションからモデルを選択します。

  5. [プロンプト] ボックスに、生成する動画の説明となるテキスト プロンプトを入力します。

  6. 省略可: 次のパラメータを調整します。

    • アスペクト比: 16:9 または 9:16 を選択します。

    • 検索結果の表示件数: スライダーを調整するか、1~4 の値を入力します。

    • 動画の長さ: メニューから動画の長さを選択します。

    • 出力ディレクトリ: [参照] をクリックして、生成されたファイルを保存する Cloud Storage バケットを作成または選択します。

  7. [実行] をクリックします。

Python

インストール

pip install --upgrade google-genai

詳しくは、SDK リファレンス ドキュメントをご覧ください。

Vertex AI で Google Gen AI SDK を使用するための環境変数を設定します。

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_ENTERPRISE=True

import time
from google import genai
from google.genai.types import GenerateVideosConfig

client = genai.Client()

# TODO(developer): Update and un-comment below line
# output_gcs_uri = "gs://your-bucket/your-prefix"

operation = client.models.generate_videos(
    model="veo-3.1-generate-001",
    prompt="a cat reading a book",
    config=GenerateVideosConfig(
        aspect_ratio="16:9",
        output_gcs_uri=output_gcs_uri,
    ),
)

while not operation.done:
    time.sleep(15)
    operation = client.operations.get(operation)
    print(operation)

if operation.response:
    print(operation.result.generated_videos[0].video.uri)

# Example response:
# gs://your-bucket/your-prefix

Go

Go をインストールまたは更新する方法について学びます。

詳しくは、SDK リファレンス ドキュメントをご覧ください。

Vertex AI で Google Gen AI SDK を使用するための環境変数を設定します。

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_ENTERPRISE=True

import (
	"context"
	"fmt"
	"io"
	"time"

	"google.golang.org/genai"
)

// generateVideoWithText shows how to gen video from text.
func generateVideoWithText(w io.Writer, outputGCSURI string) error {
	//outputGCSURI = "gs://your-bucket/your-prefix"
	ctx := context.Background()

	client, err := genai.NewClient(ctx, &genai.ClientConfig{
		HTTPOptions: genai.HTTPOptions{APIVersion: "v1"},
	})
	if err != nil {
		return fmt.Errorf("failed to create genai client: %w", err)
	}

	config := &genai.GenerateVideosConfig{
		AspectRatio:  "16:9",
		OutputGCSURI: outputGCSURI,
	}

	modelName := "veo-3.0-generate-preview"
	prompt := "a cat reading a book"
	operation, err := client.Models.GenerateVideos(ctx, modelName, prompt, nil, config)
	if err != nil {
		return fmt.Errorf("failed to start video generation: %w", err)
	}

	// Polling until the operation is done
	for !operation.Done {
		time.Sleep(15 * time.Second)
		operation, err = client.Operations.GetVideosOperation(ctx, operation, nil)
		if err != nil {
			return fmt.Errorf("failed to get operation status: %w", err)
		}
	}

	if operation.Response != nil && len(operation.Response.GeneratedVideos) > 0 {
		videoURI := operation.Response.GeneratedVideos[0].Video.URI
		fmt.Fprintln(w, videoURI)
		return nil
	}

	// Example response:
	// gs://your-bucket/your-prefix/videoURI

	return fmt.Errorf("video generation failed or returned no results")
}

Node.js

インストール

npm install @google/genai

詳しくは、SDK リファレンス ドキュメントをご覧ください。

Vertex AI で Google Gen AI SDK を使用するための環境変数を設定します。

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_ENTERPRISE=True

const {GoogleGenAI} = require('@google/genai');

const GOOGLE_CLOUD_PROJECT = process.env.GOOGLE_CLOUD_PROJECT;
const GOOGLE_CLOUD_LOCATION = process.env.GOOGLE_CLOUD_LOCATION || 'global';

async function generateVideo(
  outputGcsUri,
  projectId = GOOGLE_CLOUD_PROJECT,
  location = GOOGLE_CLOUD_LOCATION
) {
  const client = new GoogleGenAI({
    vertexai: true,
    project: projectId,
    location: location,
  });

  let operation = await client.models.generateVideos({
    model: 'veo-3.1-fast-generate-001',
    prompt: 'a cat reading a book',
    config: {
      aspectRatio: '16:9',
      outputGcsUri: outputGcsUri,
    },
  });

  while (!operation.done) {
    await new Promise(resolve => setTimeout(resolve, 15000));
    operation = await client.operations.get({operation: operation});
    console.log(operation);
  }

  if (operation.response) {
    console.log(operation.response.generatedVideos[0].video.uri);
  }
  return operation;
}

Java

Java をインストールまたは更新する方法について学びます。

詳しくは、SDK リファレンス ドキュメントをご覧ください。

Vertex AI で Google Gen AI SDK を使用するための環境変数を設定します。

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_ENTERPRISE=True


import com.google.genai.Client;
import com.google.genai.types.GenerateVideosConfig;
import com.google.genai.types.GenerateVideosOperation;
import com.google.genai.types.GenerateVideosResponse;
import com.google.genai.types.GenerateVideosSource;
import com.google.genai.types.GeneratedVideo;
import com.google.genai.types.GetOperationConfig;
import com.google.genai.types.Video;
import java.util.concurrent.TimeUnit;

public class VideoGenWithTxt {

  public static void main(String[] args) throws InterruptedException {
    // TODO(developer): Replace these variables before running the sample.
    String modelId = "veo-3.1-generate-001";
    String outputGcsUri = "gs://your-bucket/your-prefix";
    generateContent(modelId, outputGcsUri);
  }

  // Generates a video with a text prompt.
  public static String generateContent(String modelId, String outputGcsUri)
      throws InterruptedException {
    // Client Initialization. Once created, it can be reused for multiple requests.
    try (Client client = Client.builder().location("global").vertexAI(true).build()) {

      GenerateVideosOperation operation =
          client.models.generateVideos(
              modelId,
              GenerateVideosSource.builder().prompt("a cat reading a book").build(),
              GenerateVideosConfig.builder()
                  .aspectRatio("16:9")
                  .outputGcsUri(outputGcsUri)
                  .build());

      while (!operation.done().orElse(false)) {
        TimeUnit.SECONDS.sleep(15);
        operation =
            client.operations.getVideosOperation(operation, GetOperationConfig.builder().build());
      }

      String generatedVideoUri =
          operation
              .response()
              .flatMap(GenerateVideosResponse::generatedVideos)
              .flatMap(videos -> videos.stream().findFirst())
              .flatMap(GeneratedVideo::video)
              .flatMap(Video::uri)
              .orElseThrow(
                  () ->
                      new IllegalStateException(
                          "Could not get the URI from the generated video"));

      System.out.println("Generated video URI: " + generatedVideoUri);
      // Example response:
      // Generated video URI: gs://your-bucket/your-prefix/generated-video-123.mp4
      return generatedVideoUri;
    }
  }
}

REST

Veo API の詳細については、以下をご覧ください。

  1. 動画生成リクエストを送信するには、次のコマンドを使用します。このリクエストにより長時間実行オペレーションが開始され、指定した Cloud Storage バケットに出力が保存されます。

    リクエストのデータを使用する前に、次のように置き換えます。

    • PROJECT_ID: Cloud de Confiance by S3NS プロジェクト ID を表す文字列。
    • MODEL_ID: 使用するモデル ID を表す文字列。指定できる値は次のとおりです。
      • Veo 2: "veo-2.0-generate-001"
      • Veo 3: "veo-3.0-generate-001"
      • Veo 3: "veo-3.0-fast-generate-001"
      • Veo 3: "veo-3.0-generate-preview"(プレビュー)
      • Veo 3: "veo-3.0-fast-generate-preview"(プレビュー)
      • Veo 3.1: "veo-3.1-generate-001"
      • Veo 3.1: "veo-3.1-fast-generate-001"
    • TEXT_PROMPT: 動画の生成をガイドするために使用されるテキスト プロンプト。
    • OUTPUT_STORAGE_URI: 省略可。出力動画を保存する Cloud Storage バケットを表す文字列。指定しない場合、動画のバイト数がレスポンスで返されます。たとえば "gs://video-bucket/output/"。
    • RESPONSE_COUNT: 生成する動画ファイルの数。指定できる値の範囲は 1~4 です。
    • DURATION: 生成された動画ファイルの長さを表す整数。各モデルで使用できる値は次のとおりです。
      • Veo 2 モデル: 5~8。デフォルトは 8 です。
      • Veo 3 モデル: 4、6、8。デフォルトは 8 です。
    • その他のオプション パラメータ

      ユースケースに応じて、次のオプションの変数を使用します。"parameters": {} オブジェクトに次のパラメータの一部またはすべてを追加します。

      "parameters": {
        "aspectRatio": "ASPECT_RATIO",
        "negativePrompt": "NEGATIVE_PROMPT",
        "personGeneration": "PERSON_SAFETY_SETTING",
        // "resolution": RESOLUTION, // Veo 3 models only
        "sampleCount": RESPONSE_COUNT,
        "seed": SEED_NUMBER
      }
      • ASPECT_RATIO: 省略可。生成された動画のアスペクト比を示す文字列値。使用できる値は次のとおりです。
        • "16:9"(横向き)
        • "9:16"(縦向き)

        デフォルト値は "16:9" です。

      • NEGATIVE_PROMPT: 省略可。モデルが生成するのを防止するコンテンツを記述した文字列値。
      • PERSON_SAFETY_SETTING: 省略可。人物や顔の生成の安全に関する設定を制御する文字列値。使用できる値は次のとおりです。
        • "allow_adult": 成人の人物とその顔のみが生成されるようにします。
        • "disallow": 人物や顔を生成しません。

        デフォルト値は "allow_adult" です。

      • RESOLUTION: 省略可。生成された動画の解像度を制御する文字列値。Veo 3 モデルのみでサポートされています。使用できる値は次のとおりです。
        • "720p"
        • "1080p"
        • "4k"(Veo 3.1 プレビュー モデルのみ)

        デフォルト値は "720p" です。

      • RESPONSE_COUNT: 省略可。生成する動画の数を表す整数値。指定できる値の範囲は 1~4 です。
      • SEED_NUMBER: 省略可。モデルが決定的な動画を生成するために使用する uint32 値。他のパラメータを変更せずにリクエストでシード番号を指定すると、モデルは同じ動画を作成するように誘導されます。指定できる値の範囲は 0~4294967295 です。

    HTTP メソッドと URL:

    POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/MODEL_ID:predictLongRunning

    リクエストの本文(JSON):

    {
      "instances": [
        {
          "prompt": "TEXT_PROMPT"
        }
      ],
      "parameters": {
        "storageUri": "OUTPUT_STORAGE_URI",
        "sampleCount": "RESPONSE_COUNT"
      }
    }
    

    リクエストを送信するには、次のいずれかのオプションを選択します。

    curl

    リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/MODEL_ID:predictLongRunning"

    PowerShell

    リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/MODEL_ID:predictLongRunning" | Select-Object -Expand Content
    このリクエストは、一意のオペレーション ID を含む完全なオペレーション名を返します。この完全なオペレーション名を使用して、動画生成リクエストのステータスをポーリングします。
    {
      "name": "projects/PROJECT_ID/locations/us-central1/publishers/google/models/MODEL_ID/operations/a1b07c8e-7b5a-4aba-bb34-3e1ccb8afcc8"
    }
    

  2. 省略可: 動画生成の長時間実行オペレーションのステータスを確認します。

    リクエストのデータを使用する前に、次のように置き換えます。

    • PROJECT_ID: 実際の Cloud de Confiance by S3NS プロジェクト ID。
    • MODEL_ID: 使用するモデル ID。
    • OPERATION_ID: 元の動画生成リクエストで返された一意のオペレーション ID。

    HTTP メソッドと URL:

    POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/MODEL_ID:fetchPredictOperation

    リクエストの本文(JSON):

    {
      "operationName": "projects/PROJECT_ID/locations/us-central1/publishers/google/models/MODEL_ID/operations/OPERATION_ID"
    }
    

    リクエストを送信するには、次のいずれかのオプションを選択します。

    curl

    リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/MODEL_ID:fetchPredictOperation"

    PowerShell

    リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/MODEL_ID:fetchPredictOperation" | Select-Object -Expand Content
    このリクエストは、オペレーションがまだ実行中か完了しているかなど、オペレーションに関する情報を返します。

次のステップ