Membuat video menggunakan frame video pertama dan terakhir

Anda dapat menggunakan Gemini Omni Flash atau Veo di Gemini Enterprise Agent Platform untuk membuat video dengan menentukan frame pertama dan terakhir video. Antarmuka yang didukung mencakup konsol Cloud de Confiance dan Agent Platform API.

Model berikut mendukung pembuatan video dari frame video pertama dan terakhir:

Gemini Omni Flash

Klik untuk meluaskan model yang didukung

Veo

Klik untuk meluaskan model yang didukung

Untuk mengetahui informasi selengkapnya tentang cara menulis perintah teks yang efektif untuk pembuatan video, lihat panduan perintah Veo.

Coba Gemini Omni Flash di Colab

Sebelum memulai

  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. Siapkan autentikasi untuk lingkungan Anda.

    Pilih tab untuk melihat bagaimana Anda berencana menggunakan contoh di halaman ini:

    Konsol

    Saat menggunakan konsol Cloud de Confiance untuk mengakses layanan dan API Cloud de Confiance by S3NS , Anda tidak perlu menyiapkan autentikasi.

    REST

    Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.

      Instal Google Cloud CLI, lalu login ke gcloud CLI dengan identitas gabungan Anda.

    Untuk mengetahui informasi selengkapnya, lihat Melakukan autentikasi untuk menggunakan REST dalam dokumentasi autentikasi Cloud de Confiance .

Menggunakan Gemini Omni Flash untuk membuat video dari frame pertama dan terakhir

Untuk membuat video menggunakan Gemini Omni Flash, lakukan hal berikut:

REST

Pembuatan video dapat memerlukan waktu lebih dari satu menit hingga selesai. Anda dapat memilih dari beberapa mode interaksi, bergantung pada alur kerja Anda:

  • Sinkron: tanpa status: Buat video dalam satu permintaan tanpa mempertahankan status interaksi di server.
  • Sinkron: stateful: Tetapkan store ke true untuk mempertahankan status interaksi, yang memungkinkan Anda mengambil hasil nanti atau merujuk ID interaksi untuk pengeditan video multi-turn.
  • Sinkron: streaming stateful: Tetapkan store dan stream ke true untuk menerima pemikiran model secara inkremental saat dibuat, diikuti dengan video output.
  • Asinkron: Setel background ke true untuk menjalankan pembuatan video di latar belakang dan mengambil hasilnya nanti menggunakan ID interaksi.

Interaksi yang disimpan dan asinkron dipertahankan hingga 14 hari.

Untuk mengetahui informasi selengkapnya tentang cara menggunakan Gemini Omni Flash API, lihat Interactions API.

Sinkron: stateless

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: String yang mewakili project ID Cloud de Confiance by S3NS Anda.
  • MODEL_ID: String yang mewakili ID model yang akan digunakan. Berikut adalah nilai yang diterima:
    • "gemini-omni-1.1-flash-preview"
  • TEXT_PROMPT: Perintah teks yang digunakan untuk memandu pembuatan video.
  • CLOUD_STORAGE_INPUT_URI: String yang mewakili bucket Cloud Storage yang berisi media input. Contoh: "gs://video-bucket/input/".
  • CLOUD_STORAGE_OUTPUT_URI: Opsional: String yang mewakili bucket Cloud Storage untuk menyimpan video output. Jika tidak diberikan, byte video akan ditampilkan dalam respons. Contoh: "gs://video-bucket/output/".
  • ASPECT_RATIO: Opsional: String yang merepresentasikan rasio aspek yang diharapkan dari video output. Jika tidak diberikan, rasio aspek akan disimpulkan dari perintah. Berikut adalah nilai yang diterima:
    • "16:9"
    • "9:16"
  • OUTPUT_RESOLUTION:

    Opsional: String yang mewakili resolusi output video. Jika tidak diberikan, output defaultnya adalah 720p.

    gemini-omni-1.1-flash-preview mendukung nilai berikut:

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

    gemini-omni-flash-preview hanya mendukung "720p".

  • DURATION: String yang menampilkan panjang file video yang dihasilkan. String yang diizinkan adalah bilangan bulat antara 3 dan 10, diikuti dengan "s" untuk detik. Contoh, "10s".

Metode HTTP dan URL:

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

Meminta isi JSON:

{
  "model": "MODEL_ID",
  "input": [
    {
      "type": "text",
      "text": "TEXT_PROMPT"
    },
    {
      "type": "image",
      "uri": "CLOUD_STORAGE_INPUT_URI",
      "mime_type": "image/png"
    },
    {
      "type": "image",
      "uri": "CLOUD_STORAGE_INPUT_URI",
      "mime_type": "image/png"
    }
  ],
  "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": "image_to_video"
    }
  }
}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, lalu jalankan perintah berikut:

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

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$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
Respons berisi interaksi yang mencakup pemikiran model dan video output.
{
  "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",
}

Sinkron: stateful

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: String yang mewakili Cloud de Confiance by S3NS project ID Anda.
  • MODEL_ID: String yang mewakili ID model yang akan digunakan. Berikut adalah nilai yang diterima:
    • "gemini-omni-1.1-flash-preview"
  • TEXT_PROMPT: Perintah teks yang digunakan untuk memandu pembuatan video.
  • CLOUD_STORAGE_INPUT_URI: String yang mewakili bucket Cloud Storage yang berisi media input. Contoh: "gs://video-bucket/input/".
  • CLOUD_STORAGE_OUTPUT_URI: Opsional: String yang mewakili bucket Cloud Storage untuk menyimpan video output. Jika tidak diberikan, byte video akan ditampilkan dalam respons. Contoh: "gs://video-bucket/output/".
  • ASPECT_RATIO: Opsional: String yang merepresentasikan rasio aspek yang diharapkan dari video output. Jika tidak diberikan, rasio aspek akan disimpulkan dari perintah. Berikut adalah nilai yang diterima:
    • "16:9"
    • "9:16"
  • OUTPUT_RESOLUTION:

    Opsional: String yang mewakili resolusi output video. Jika tidak diberikan, output defaultnya adalah 720p.

    gemini-omni-1.1-flash-preview mendukung nilai berikut:

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

    gemini-omni-flash-preview hanya mendukung "720p".

  • DURATION: String yang menampilkan panjang file video yang dihasilkan. String yang diizinkan adalah bilangan bulat antara 3 dan 10, diikuti dengan "s" untuk detik. Contoh, "10s".

Metode HTTP dan URL:

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

Meminta isi JSON:

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

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, lalu jalankan perintah berikut:

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

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$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
Respons berisi interaksi yang mencakup pemikiran model dan video output.
{
  "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",
}
Gunakan INTERACTION_ID untuk mendapatkan video yang dihasilkan:

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: String yang mewakili project ID Cloud de Confiance by S3NS Anda.
  • INTERACTION_ID: ID interaksi dari permintaan asinkron.

Metode HTTP dan URL:

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

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Jalankan perintah berikut:

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

PowerShell

Jalankan perintah berikut:

$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
Responsnya dalam format yang mirip dengan berikut ini:
{
  "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",
}

Sinkron: streaming stateful

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: String yang mewakili project ID Cloud de Confiance by S3NS Anda.
  • MODEL_ID: String yang mewakili ID model yang akan digunakan. Berikut adalah nilai yang diterima:
    • "gemini-omni-1.1-flash-preview"
  • TEXT_PROMPT: Perintah teks yang digunakan untuk memandu pembuatan video.
  • CLOUD_STORAGE_INPUT_URI: String yang mewakili bucket Cloud Storage yang berisi media input. Contoh: "gs://video-bucket/input/".
  • CLOUD_STORAGE_OUTPUT_URI: Opsional: String yang mewakili bucket Cloud Storage untuk menyimpan video output. Jika tidak diberikan, byte video akan ditampilkan dalam respons. Contoh: "gs://video-bucket/output/".
  • ASPECT_RATIO: Opsional: String yang merepresentasikan rasio aspek yang diharapkan dari video output. Jika tidak diberikan, rasio aspek akan disimpulkan dari perintah. Berikut adalah nilai yang diterima:
    • "16:9"
    • "9:16"
  • OUTPUT_RESOLUTION:

    Opsional: String yang mewakili resolusi output video. Jika tidak diberikan, output defaultnya adalah 720p.

    gemini-omni-1.1-flash-preview mendukung nilai berikut:

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

    gemini-omni-flash-preview hanya mendukung "720p".

  • DURATION: String yang menampilkan panjang file video yang dihasilkan. String yang diizinkan adalah bilangan bulat antara 3 dan 10, diikuti dengan "s" untuk detik. Contoh, "10s".

Metode HTTP dan URL:

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

Meminta isi JSON:

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

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, lalu jalankan perintah berikut:

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

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$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
Respons berisi interaksi yang mencakup pemikiran model dan video output.
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":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]
Gunakan INTERACTION_ID dengan `?stream=true` untuk melakukan streaming interaksi yang disimpan dan video yang dibuat:

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: String yang mewakili Cloud de Confiance by S3NS project ID Anda.
  • INTERACTION_ID: ID interaksi dari permintaan.

Metode HTTP dan URL:

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

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Jalankan perintah berikut:

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

PowerShell

Jalankan perintah berikut:

$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
Respons adalah aliran Peristiwa yang Dikirim Server (SSE) dalam format yang mirip dengan berikut:
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]

Asinkron

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: String yang mewakili project ID Cloud de Confiance by S3NS Anda.
  • MODEL_ID: String yang mewakili ID model yang akan digunakan. Berikut adalah nilai yang diterima:
    • "gemini-omni-1.1-flash-preview"
  • TEXT_PROMPT: Perintah teks yang digunakan untuk memandu pembuatan video.
  • CLOUD_STORAGE_INPUT_URI: String yang mewakili bucket Cloud Storage yang berisi media input. Contoh: "gs://video-bucket/input/".
  • CLOUD_STORAGE_OUTPUT_URI: Opsional: String yang mewakili bucket Cloud Storage untuk menyimpan video output. Jika tidak diberikan, byte video akan ditampilkan dalam respons. Contoh: "gs://video-bucket/output/".
  • ASPECT_RATIO: Opsional: String yang merepresentasikan rasio aspek yang diharapkan dari video output. Jika tidak diberikan, rasio aspek akan disimpulkan dari perintah. Berikut adalah nilai yang diterima:
    • "16:9"
    • "9:16"
  • OUTPUT_RESOLUTION:

    Opsional: String yang mewakili resolusi output video. Jika tidak diberikan, output defaultnya adalah 720p.

    gemini-omni-1.1-flash-preview mendukung nilai berikut:

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

    gemini-omni-flash-preview hanya mendukung "720p".

  • DURATION: String yang menampilkan panjang file video yang dihasilkan. String yang diizinkan adalah bilangan bulat antara 3 dan 10, diikuti dengan "s" untuk detik. Contoh, "10s".

Metode HTTP dan URL:

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

Meminta isi JSON:

{
  "model": "MODEL_ID",
  "input": [
    {
      "background": true,
      "type": "text",
      "text": "TEXT_PROMPT"
    },
    {
      "type": "image",
      "uri": "CLOUD_STORAGE_INPUT_URI",
      "mime_type": "image/png"
    },
    {
      "type": "image",
      "uri": "CLOUD_STORAGE_INPUT_URI",
      "mime_type": "image/png"
    }
  ],
  "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": "image_to_video"
    }
  }
}

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Simpan isi permintaan dalam file bernama request.json, lalu jalankan perintah berikut:

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

Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

$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
Respons berisi ID interaksi, yang akan Anda gunakan untuk mendapatkan video yang dibuat.
{
  "id":"INTERACTION_ID",
  "status":"in_progress",
  "object":"interaction"
}
Selanjutnya, gunakan INTERACTION_ID untuk mendapatkan video yang dibuat:

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PROJECT_ID: String yang mewakili project ID Cloud de Confiance by S3NS Anda.
  • INTERACTION_ID: ID interaksi dari permintaan asinkron.

Metode HTTP dan URL:

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

Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

curl

Jalankan perintah berikut:

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

PowerShell

Jalankan perintah berikut:

$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
Responsnya dalam format yang mirip dengan berikut ini:
{
  "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",
}

Menggunakan Veo untuk membuat video dari frame pertama dan terakhir

Contoh berikut menunjukkan cara menentukan frame pertama dan terakhir video Veo:

Konsol

  1. Di konsol Cloud de Confiance , buka halaman Agent Platform > Media Studio.

    Media Studio

  2. Klik Video.

  3. Di menu Task, pilih Image-to-video.

  4. Dari menu Model, pilih model dari opsi yang ditampilkan.

  5. Di kotak Perintah, masukkan perintah teks yang menjelaskan video yang akan dibuat.

  6. Di bagian Input images, klik Start untuk mengupload gambar untuk frame pertama.

  7. Opsional: klik Akhir untuk mengupload gambar untuk frame terakhir.

  8. Opsional: Sesuaikan Parameter berikut:

    • Rasio aspek: pilih 16:9 atau 9:16.

    • Number of results: sesuaikan penggeser atau masukkan nilai antara 1 dan 4.

    • Durasi video: pilih durasi video dari menu.

    • Direktori output: klik Jelajahi untuk membuat atau memilih bucket Cloud Storage untuk menyimpan file yang dihasilkan.

  9. Klik Run.

Python

Instal

pip install --upgrade google-genai

Untuk mempelajari lebih lanjut, lihat dokumentasi referensi SDK.

Tetapkan variabel lingkungan untuk menggunakan Google Gen AI SDK dengan Vertex AI:

# 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, Image

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 hand reaches in and places a glass of milk next to the plate of cookies",
    image=Image(
        gcs_uri="gs://cloud-samples-data/generative-ai/image/cookies.png",
        mime_type="image/png",
    ),
    config=GenerateVideosConfig(
        aspect_ratio="16:9",
        last_frame=Image(
            gcs_uri="gs://cloud-samples-data/generative-ai/image/cookies-milk.png",
            mime_type="image/png",
        ),
        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

REST

Untuk mengetahui informasi selengkapnya tentang Veo API, lihat referensi berikut:

  1. Gunakan perintah berikut untuk mengirim permintaan pembuatan video. Permintaan ini memulai operasi yang berjalan lama dan menyimpan output ke bucket Cloud Storage yang Anda tentukan.

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • PROJECT_ID: String yang mewakili project ID Cloud de Confiance by S3NS Anda.
    • MODEL_ID: String yang mewakili ID model yang akan digunakan. Gunakan salah satu opsi berikut saat menentukan frame video pertama atau terakhir:
      • Veo 3: veo-3.1-generate-001
      • Veo 3: veo-3.1-fast-generate-001
    • TEXT_PROMPT: Perintah teks yang digunakan untuk memandu pembuatan video.
    • PATH_TO_FIRST_FRAME_IMAGE: String yang mewakili jalur Cloud Storage ke gambar frame pertama. Contoh: "gs://video-bucket/input/first-frame.jpg".
    • IMAGE_MIME_TYPE: String yang merepresentasikan jenis MIME gambar input. Hanya gambar dengan jenis MIME berikut yang didukung:
      • image/jpeg
      • image/png
    • PATH_TO_LAST_FRAME_IMAGE: String yang mewakili jalur Cloud Storage ke gambar frame terakhir. Contoh: "gs://video-bucket/input/last-frame.jpg".
    • OUTPUT_STORAGE_URI: Opsional: String yang merepresentasikan bucket Cloud Storage untuk menyimpan video output. Jika tidak diberikan, byte video akan ditampilkan dalam respons. Contoh: "gs://video-bucket/output/".
    • RESPONSE_COUNT: Jumlah file video yang akan dibuat. Rentang nilai yang diterima adalah 1-4.
    • DURATION: Bilangan bulat yang merepresentasikan durasi file video yang dihasilkan. Berikut adalah nilai yang diterima untuk setiap model:
      • Model Veo 2: 5-8. Defaultnya adalah 8.
      • Model Veo 3: 4, 6, atau 8. Defaultnya adalah 8.
    • Parameter opsional tambahan

      Gunakan variabel opsional berikut, bergantung pada kasus penggunaan Anda. Tambahkan beberapa atau semua parameter berikut dalam objek "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: Opsional: Nilai string yang menjelaskan rasio aspek video yang dibuat. Anda dapat menggunakan nilai berikut:
        • "16:9" untuk lanskap
        • "9:16" untuk potret

        Nilai defaultnya adalah "16:9"

      • NEGATIVE_PROMPT: Opsional: Nilai string yang menjelaskan konten yang tidak ingin Anda hasilkan oleh model.
      • PERSON_SAFETY_SETTING: Opsional: Nilai string yang mengontrol setelan keamanan untuk membuat orang atau wajah. Anda dapat menggunakan nilai berikut:
        • "allow_adult": Hanya mengizinkan pembuatan orang dan wajah dewasa.
        • "disallow": Tidak menghasilkan orang atau wajah.

        Nilai defaultnya adalah "allow_adult".

      • RESOLUTION: Opsional: Nilai string yang mengontrol resolusi video yang dihasilkan. Hanya didukung oleh model Veo 3. Anda dapat menggunakan nilai berikut:
        • "720p"
        • "1080p"
        • "4k" (Khusus model Pratinjau Veo 3.1)

        Nilai defaultnya adalah "720p".

      • RESPONSE_COUNT: Opsional. Nilai bilangan bulat yang menjelaskan jumlah video yang akan dibuat. Rentang nilai yang diterima adalah 1-4.
      • SEED_NUMBER: Opsional. Nilai uint32 yang digunakan model untuk menghasilkan video deterministik. Menentukan nomor seed dengan permintaan Anda tanpa mengubah parameter lain akan memandu model untuk menghasilkan video yang sama. Rentang nilai yang diterima adalah 0-4294967295.

    Metode HTTP dan URL:

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

    Meminta isi JSON:

    {
      "instances": [
        {
          "prompt": "TEXT_PROMPT",
           "image": {
             "gcsUri": "PATH_TO_FIRST_FRAME_IMAGE,
             "mimeType": "IMAGE_MIME_TYPE"
           },
           "lastFrame:" {
             "gcsUri": "PATH_TO_LAST_FRAME_IMAGE,
             "mimeType": "IMAGE_MIME_TYPE"
           }
        }
      ],
      "parameters": {
        "storageUri": "OUTPUT_STORAGE_URI",
        "sampleCount": RESPONSE_COUNT
      }
    }
    

    Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

    curl

    Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

    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

    Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

    $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
    Permintaan ini menampilkan nama operasi lengkap dengan ID operasi yang unik. Gunakan nama operasi lengkap ini untuk melakukan polling status permintaan pembuatan video.
    {
      "name":
      "projects/PROJECT_ID/locations/us-central1/publishers/google/models/MODEL_ID/operations/a1b07c8e-7b5a-4aba-bb34-3e1ccb8afcc8"
    }
    

  2. Opsional: Periksa status operasi yang berjalan lama pembuatan video.

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • PROJECT_ID: Project ID Cloud de Confiance by S3NS Anda.
    • MODEL_ID: ID model yang akan digunakan.
    • OPERATION_ID: ID operasi unik yang ditampilkan dalam permintaan pembuatan video asli.

    Metode HTTP dan URL:

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

    Meminta isi JSON:

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

    Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

    curl

    Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

    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

    Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

    $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
    Permintaan ini menampilkan informasi tentang operasi, termasuk apakah operasi masih berjalan atau sudah selesai.

Langkah berikutnya