Gerar vídeos com base em referências

Você pode usar o Gemini Omni Flash ou o Veo na Gemini Enterprise Agent Platform para orientar a geração de vídeos usando imagens ou vídeos de referência.

Os seguintes modelos são compatíveis com imagens de referência:

Gemini Omni Flash

Com o Gemini Omni Flash, você pode usar imagens ou vídeos de referência para fornecer mais informações ao modelo ao gerar um vídeo.

Clique para abrir os modelos compatíveis

Veo

O Veo na Gemini Enterprise Agent Platform permite usar imagens de referência para direcionar o vídeo gerado. Você envia até três imagens de uma única pessoa, personagem ou produto. O Veo preserva a aparência do assunto no vídeo de saída.

Clique para abrir os modelos compatíveis

Para mais informações sobre como escrever comandos de texto eficazes para geração de vídeo, consulte o Guia de comandos de geração de vídeo.

Teste o Gemini Omni Flash no Colab

Antes de começar

  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. Configure a autenticação do ambiente.

    Selecione a guia para como planeja usar as amostras nesta página:

    Console

    Quando você usa o console do Cloud de Confiance para acessar os serviços e as APIs do Cloud de Confiance by S3NS , não é necessário configurar a autenticação.

    Python

    Para usar os exemplos de Python desta página em um ambiente de desenvolvimento local, instale e inicialize a CLI gcloud e configure o Application Default Credentials com suas credenciais de usuário.

    1. Instale a CLI do Google Cloud.

    2. Configure a CLI gcloud para usar sua identidade federada.

      Para mais informações, consulte Fazer login na CLI gcloud com sua identidade federada.

    3. Crie credenciais de autenticação local para sua conta de usuário:

      gcloud auth application-default login

      Se um erro de autenticação for retornado, confirme se você fez login na CLI gcloud com sua identidade federada.

    Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local na documentação de autenticação do Cloud de Confiance .

    REST

    Para usar as amostras da API REST desta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para a CLI gcloud.

      Instale a Google Cloud CLI e faça login na CLI gcloud com sua identidade federada.

    Saiba mais em Autenticar para usar REST na documentação de autenticação do Cloud de Confiance .

Usar o Gemini Omni Flash e referências para gerar vídeos

REST

A geração de vídeo pode levar mais de um minuto para ser concluída. É possível escolher entre vários modos de interação, dependendo do seu fluxo de trabalho:

  • Síncrono: sem estado: gere um vídeo em uma única solicitação sem persistir o estado de interação no servidor.
  • Síncrono: com estado: defina store como true para manter o estado da interação, o que permite recuperar o resultado mais tarde ou referenciar o ID da interação para edição de vídeo multiturno.
  • Síncrono: streaming com estado: defina store e stream como true para receber os pensamentos do modelo de forma incremental à medida que são gerados, seguidos pelo vídeo de saída.
  • Assíncrono: defina background como true para executar a geração de vídeo em segundo plano e recuperar o resultado mais tarde usando o ID de interação.

As interações armazenadas e assíncronas são retidas por até 14 dias.

Para mais informações sobre como usar a API Gemini Omni Flash, consulte API Interactions.

Síncrona: sem estado

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: uma string que representa o ID do projeto do Cloud de Confiance by S3NS .
  • MODEL_ID: uma string que representa o ID do modelo a ser usado. Os valores aceitos são:
    • "gemini-omni-1.1-flash-preview"
  • TEXT_PROMPT: o comando de texto usado para orientar a geração de vídeo.
  • CLOUD_STORAGE_IMAGE_URI: uma string que representa o bucket do Cloud Storage que contém a imagem de entrada. Por exemplo, "gs://video-bucket/input/".
  • IMAGE_MIME: Uma string que representa um tipo MIME de imagem. Os valores aceitos são:
    • image/png
    • image/jpeg
    • image/webp
    • image/heic
    • image/heif
  • CLOUD_STORAGE_VIDEO_URI: uma string que representa o bucket do Cloud Storage que contém o vídeo de entrada. Por exemplo, "gs://video-bucket/input/".
  • VIDEO_MIME: Uma string que representa um tipo MIME de vídeo. Os valores aceitos são:
    • video/3gpp
    • video/mp4
    • video/mpeg
    • video/quicktime
    • video/webm
    • video/x-flv
    • video/x-ms-wmv
  • CLOUD_STORAGE_OUTPUT_URI: Opcional: uma string que representa o bucket do Cloud Storage para armazenar os vídeos de saída. Se não forem fornecidos, os bytes de vídeo serão retornados na resposta. Por exemplo, "gs://video-bucket/output/".
  • ASPECT_RATIO: Opcional: uma string que representa a proporção de tela esperada do vídeo de saída. Se não for fornecida, a proporção será inferida do comando. Os valores aceitos são:
    • "16:9"
    • "9:16"
  • OUTPUT_RESOLUTION:

    Opcional: uma string que representa a resolução de saída do vídeo. Se não for fornecido, a saída padrão será 720p.

    gemini-omni-1.1-flash-preview aceita os seguintes valores:

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

    O gemini-omni-flash-preview só aceita "720p".

  • DURATION: uma string que representa a duração dos arquivos de vídeo gerados. As strings permitidas são números inteiros entre 3 e 10, seguidos por "s" para segundos. Por exemplo, "10s".

Método HTTP e URL:

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

Corpo JSON da solicitação:

{
  "model": "MODEL_ID",
  "input": [
    {
      "type": "text",
      "text": "TEXT_PROMPT Use the image(s) as references to
      generate the video."
    },
    {
      "type": "image",
      "uri": "CLOUD_STORAGE_IMAGE_URI",
      "mime_type": "IMAGE_MIME"
    },
    {
      "type": "video",
      "uri": "CLOUD_STORAGE_VIDEO_URI",
      "mime_type": "VIDEO_MIME"
    }
  ],
  "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": "reference_to_video"
    }
  }
}

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

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

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando abaixo:

$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
A resposta contém uma interação que inclui as ideias do modelo e um vídeo de saída.
{
  "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",
}

Síncrona: com estado

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: uma string que representa o ID do projeto do Cloud de Confiance by S3NS .
  • MODEL_ID: uma string que representa o ID do modelo a ser usado. Os valores aceitos são:
    • "gemini-omni-1.1-flash-preview"
  • TEXT_PROMPT: o comando de texto usado para orientar a geração de vídeo.
  • CLOUD_STORAGE_IMAGE_URI: uma string que representa o bucket do Cloud Storage que contém a imagem de entrada. Por exemplo, "gs://video-bucket/input/".
  • IMAGE_MIME: Uma string que representa um tipo MIME de imagem. Os valores aceitos são:
    • image/png
    • image/jpeg
    • image/webp
    • image/heic
    • image/heif
  • CLOUD_STORAGE_VIDEO_URI: uma string que representa o bucket do Cloud Storage que contém o vídeo de entrada. Por exemplo, "gs://video-bucket/input/".
  • VIDEO_MIME: Uma string que representa um tipo MIME de vídeo. Os valores aceitos são:
    • video/3gpp
    • video/mp4
    • video/mpeg
    • video/quicktime
    • video/webm
    • video/x-flv
    • video/x-ms-wmv
  • CLOUD_STORAGE_OUTPUT_URI: Opcional: uma string que representa o bucket do Cloud Storage para armazenar os vídeos de saída. Se não forem fornecidos, os bytes de vídeo serão retornados na resposta. Por exemplo, "gs://video-bucket/output/".
  • ASPECT_RATIO: Opcional: uma string que representa a proporção de tela esperada do vídeo de saída. Se não for fornecida, a proporção será inferida do comando. Os valores aceitos são:
    • "16:9"
    • "9:16"
  • OUTPUT_RESOLUTION:

    Opcional: uma string que representa a resolução de saída do vídeo. Se não for fornecido, a saída padrão será 720p.

    gemini-omni-1.1-flash-preview aceita os seguintes valores:

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

    O gemini-omni-flash-preview só aceita "720p".

  • DURATION: uma string que representa a duração dos arquivos de vídeo gerados. As strings permitidas são números inteiros entre 3 e 10, seguidos por "s" para segundos. Por exemplo, "10s".

Método HTTP e URL:

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

Corpo JSON da solicitação:

{
  "model": "MODEL_ID",
  "background": false,
  "store": true,
  "stream": false,
  "input": [
    {
      "type": "user_input",
      "content": [
        {
          "type": "text",
          "text": "TEXT_PROMPT Use the image(s) as references to generate the video."
        },
        {
          "type": "image",
          "uri": "CLOUD_STORAGE_IMAGE_URI",
          "mime_type": "IMAGE_MIME"
        },
        {
          "type": "video",
          "uri": "CLOUD_STORAGE_VIDEO_URI",
          "mime_type": "VIDEO_MIME"
        }
      ]
    }
  ],
  "response_format": [
    {
      "type": "video",
      "delivery": "uri",
      "gcs_uri": "CLOUD_STORAGE_OUTPUT_URI",
      "aspect_ratio": "ASPECT_RATIO",
      "resolution": "OUTPUT_RESOLUTION",
      "duration": "DURATION"
    }
  ]
}

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

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

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando abaixo:

$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
A resposta contém uma interação que inclui os pensamentos do modelo e um vídeo de saída.
{
  "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",
}
Use o INTERACTION_ID para acessar o vídeo gerado:

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: uma string que representa o ID do projeto do Cloud de Confiance by S3NS .
  • INTERACTION_ID: o ID de interação da solicitação assíncrona.

Método HTTP e URL:

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

Para enviar a solicitação, escolha uma destas opções:

curl

Execute o seguinte comando:

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

PowerShell

Execute o seguinte comando:

$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
A resposta tem um formato semelhante a este:
{
  "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",
}

Síncrono: streaming com estado

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: uma string que representa o ID do projeto do Cloud de Confiance by S3NS .
  • MODEL_ID: uma string que representa o ID do modelo a ser usado. Os valores aceitos são:
    • "gemini-omni-1.1-flash-preview"
  • TEXT_PROMPT: o comando de texto usado para orientar a geração de vídeo.
  • CLOUD_STORAGE_IMAGE_URI: uma string que representa o bucket do Cloud Storage que contém a imagem de entrada. Por exemplo, "gs://video-bucket/input/".
  • IMAGE_MIME: Uma string que representa um tipo MIME de imagem. Os valores aceitos são:
    • image/png
    • image/jpeg
    • image/webp
    • image/heic
    • image/heif
  • CLOUD_STORAGE_VIDEO_URI: uma string que representa o bucket do Cloud Storage que contém o vídeo de entrada. Por exemplo, "gs://video-bucket/input/".
  • VIDEO_MIME: Uma string que representa um tipo MIME de vídeo. Os valores aceitos são:
    • video/3gpp
    • video/mp4
    • video/mpeg
    • video/quicktime
    • video/webm
    • video/x-flv
    • video/x-ms-wmv
  • CLOUD_STORAGE_OUTPUT_URI: Opcional: uma string que representa o bucket do Cloud Storage para armazenar os vídeos de saída. Se não forem fornecidos, os bytes de vídeo serão retornados na resposta. Por exemplo, "gs://video-bucket/output/".
  • ASPECT_RATIO: Opcional: uma string que representa a proporção de tela esperada do vídeo de saída. Se não for fornecida, a proporção será inferida do comando. Os valores aceitos são:
    • "16:9"
    • "9:16"
  • OUTPUT_RESOLUTION:

    Opcional: uma string que representa a resolução de saída do vídeo. Se não for fornecido, a saída padrão será 720p.

    gemini-omni-1.1-flash-preview aceita os seguintes valores:

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

    O gemini-omni-flash-preview só aceita "720p".

  • DURATION: uma string que representa a duração dos arquivos de vídeo gerados. As strings permitidas são números inteiros entre 3 e 10, seguidos por "s" para segundos. Por exemplo, "10s".

Método HTTP e URL:

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

Corpo JSON da solicitação:

{
  "model": "MODEL_ID",
  "background": false,
  "store": true,
  "stream": true,
  "input": [
    {
      "type": "user_input",
      "content": [
        {
          "type": "text",
          "text": "TEXT_PROMPT Use the image(s) as references to generate the video."
        },
        {
          "type": "image",
          "uri": "CLOUD_STORAGE_IMAGE_URI",
          "mime_type": "IMAGE_MIME"
        },
        {
          "type": "video",
          "uri": "CLOUD_STORAGE_VIDEO_URI",
          "mime_type": "VIDEO_MIME"
        }
      ]
    }
  ],
  "response_format": [
    {
      "type": "video",
      "delivery": "uri",
      "gcs_uri": "CLOUD_STORAGE_OUTPUT_URI",
      "aspect_ratio": "ASPECT_RATIO",
      "resolution": "OUTPUT_RESOLUTION",
      "duration": "DURATION"
    }
  ]
}

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

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

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando abaixo:

$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
A resposta contém uma interação que inclui os pensamentos do modelo e um vídeo de saída.
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]
Use o INTERACTION_ID com `?stream=true` para transmitir a interação armazenada e o vídeo gerado:

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: uma string que representa o ID do projeto do Cloud de Confiance by S3NS .
  • INTERACTION_ID: O ID da interação da solicitação.

Método HTTP e URL:

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

Para enviar a solicitação, escolha uma destas opções:

curl

Execute o seguinte comando:

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

PowerShell

Execute o seguinte comando:

$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
A resposta é um stream de eventos enviados pelo servidor (SSE) em um formato semelhante ao seguinte:
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]

Assíncrono

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: uma string que representa o ID do projeto do Cloud de Confiance by S3NS .
  • MODEL_ID: uma string que representa o ID do modelo a ser usado. Os valores aceitos são:
    • "gemini-omni-1.1-flash-preview"
  • TEXT_PROMPT: o comando de texto usado para orientar a geração de vídeo.
  • CLOUD_STORAGE_IMAGE_URI: uma string que representa o bucket do Cloud Storage que contém a imagem de entrada. Por exemplo, "gs://video-bucket/input/".
  • IMAGE_MIME: Uma string que representa um tipo MIME de imagem. Os valores aceitos são:
    • image/png
    • image/jpeg
    • image/webp
    • image/heic
    • image/heif
  • CLOUD_STORAGE_VIDEO_URI: uma string que representa o bucket do Cloud Storage que contém o vídeo de entrada. Por exemplo, "gs://video-bucket/input/".
  • VIDEO_MIME: Uma string que representa um tipo MIME de vídeo. Os valores aceitos são:
    • video/3gpp
    • video/mp4
    • video/mpeg
    • video/quicktime
    • video/webm
    • video/x-flv
    • video/x-ms-wmv
  • CLOUD_STORAGE_OUTPUT_URI: Opcional: uma string que representa o bucket do Cloud Storage para armazenar os vídeos de saída. Se não forem fornecidos, os bytes de vídeo serão retornados na resposta. Por exemplo, "gs://video-bucket/output/".
  • ASPECT_RATIO: Opcional: uma string que representa a proporção de tela esperada do vídeo de saída. Se não for fornecida, a proporção será inferida do comando. Os valores aceitos são:
    • "16:9"
    • "9:16"
  • OUTPUT_RESOLUTION:

    Opcional: uma string que representa a resolução de saída do vídeo. Se não for fornecido, a saída padrão será 720p.

    gemini-omni-1.1-flash-preview aceita os seguintes valores:

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

    O gemini-omni-flash-preview só aceita "720p".

  • DURATION: uma string que representa a duração dos arquivos de vídeo gerados. As strings permitidas são números inteiros entre 3 e 10, seguidos por "s" para segundos. Por exemplo, "10s".

Método HTTP e URL:

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

Corpo JSON da solicitação:

{
  "model": "MODEL_ID",
  "input": [
    {
      "background": true,
      "type": "text",
      "text": "TEXT_PROMPT Use the image(s) as references to
      generate the video."
    },
    {
      "type": "image",
      "uri": "CLOUD_STORAGE_IMAGE_URI",
      "mime_type": "IMAGE_MIME"
    },
    {
      "type": "video",
      "uri": "CLOUD_STORAGE_VIDEO_URI",
      "mime_type": "VIDEO_MIME"
    }
  ],
  "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": "reference_to_video"
    }
  }
}

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

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

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando abaixo:

$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
A resposta contém um ID de interação, que você vai usar para acessar o vídeo gerado.
{
  "id":"INTERACTION_ID",
  "status":"in_progress",
  "object":"interaction"
}
Depois, use o INTERACTION_ID para acessar o vídeo gerado:

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • PROJECT_ID: uma string que representa o ID do projeto do Cloud de Confiance by S3NS .
  • INTERACTION_ID: O ID da interação da solicitação assíncrona.

Método HTTP e URL:

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

Para enviar a solicitação, escolha uma destas opções:

curl

Execute o seguinte comando:

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

PowerShell

Execute o seguinte comando:

$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
A resposta tem um formato semelhante a este:
{
  "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",
}

Usar o Veo e imagens de recursos para gerar vídeos

Faça o seguinte:

Console

  1. No console do Cloud de Confiance , acesse a página Agent Platform > Agent Platform Studio .

    Acessar o Agent Platform Studio

  2. Clique em Gerar mídia.

  3. Clique em Vídeo.

  4. No menu Tarefa, selecione Referência a vídeo (assunto).

  5. No menu Modelo, selecione uma das opções disponíveis.

  6. Na seção Imagens do assunto, clique em Adicionar.

    Uma caixa de diálogo de seleção de arquivos é exibida. Escolha de uma a três imagens no seu computador para fazer upload.

  7. Opcional: na seção Parâmetros, ajuste as seguintes configurações:

    • Proporção: selecione 16:9 ou 9:16.
    • Número de resultados: ajuste o controle deslizante ou insira um valor entre 1 e 4.
    • Duração do vídeo: selecione 8, 6 ou 4 segundos.
    • Resolução de saída: selecione uma das seguintes opções:
      • 720p
      • 1080p
      • 4k
  8. Opcional: na seção Segurança, selecione uma das seguintes configurações de Geração de pessoas:

    • Permitir (somente adultos): valor padrão. Gere apenas pessoas ou rostos adultos. Não gere pessoas ou rostos de jovens ou crianças.

    • Não permitir: não gera pessoas nem rostos.

  9. Opcional: na seção Opções avançadas, insira um valor de Seed para aleatorizar a geração de vídeos.

  10. Na caixa Comando, insira o comando de texto que descreve os vídeos a serem gerados.

  11. Clique em Executar.

Python

Instalar

pip install --upgrade google-genai

Para mais informações, consulte a documentação de referência do SDK.

Defina variáveis de ambiente para usar o SDK de IA generativa do Google com a 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, VideoGenerationReferenceImage

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-preview",
    prompt="A person walks in carrying a vase full of flowers and places the vase on a kitchen table.",
    config=GenerateVideosConfig(
        reference_images=[
            VideoGenerationReferenceImage(
                image=Image(
                    gcs_uri="gs://cloud-samples-data/generative-ai/image/vase.png",
                    mime_type="image/png",
                ),
                reference_type="asset",
            ),
        ],
        aspect_ratio="9:16",
        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

Para mais informações sobre a API Veo, consulte:

  1. Use os comandos a seguir para enviar uma solicitação de geração de vídeo. Essa solicitação inicia uma operação de longa duração e armazena a saída em um bucket do Cloud Storage especificado por você.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do projeto do Cloud de Confiance by S3NS .
    • MODEL_ID: uma string que representa o ID do modelo a ser usado. Os seguintes modelos são compatíveis:
      • veo-3.1-generate-preview preview
      • veo-3.1-generate-001
      • veo-3.1-fast-generate-preview preview
      • veo-3.1-fast-generate-001
    • TEXT_PROMPT: o comando de texto usado para orientar a geração de vídeo.
    • BASE64_ENCODED_IMAGE: uma imagem do assunto codificada em bytes base64. É possível repetir esse campo e mimeType para especificar até três imagens de assunto.
    • IMAGE_MIME_TYPE: o tipo MIME da imagem de entrada. Apenas uma das opções a seguir:

      • image/jpeg
      • image/png

      Você pode repetir esse campo e bytesBase64Encoded para especificar até três imagens de assunto.

    • ASPECT_RATIO: opcional. A proporção do vídeo gerado. Apenas uma das opções a seguir:

      • "16:9"
      • "9:16"

      O valor padrão é "16:9".

    • OUTPUT_STORAGE_URI: opcional: o bucket do Cloud Storage para armazenar os vídeos de saída. Se não for fornecido, um vídeo codificado em bytes Base64 será retornado na resposta. Por exemplo: gs://video-bucket/output/.
    • RESPONSE_COUNT: o número de arquivos de vídeo que você quer gerar. Valores inteiros aceitos: 1 a 4.
    • VIDEO_RESOLUTION: opcional: a resolução do vídeo gerado. Apenas um dos seguintes:

      • "720p"
      • "1080p"
      • "4k" (somente modelos de pré-lançamento do Veo 3.1)

      O valor padrão é "720p".

    • Outros parâmetros opcionais

      Use as seguintes variáveis opcionais dependendo do seu caso de uso. Adicione alguns ou todos os parâmetros a seguir no objeto "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: opcional: um valor de string que descreve a proporção dos vídeos gerados. Use estes valores:
        • "16:9" para paisagem
        • "9:16" para retrato

        O valor padrão é "16:9"

      • NEGATIVE_PROMPT: opcional. Um valor de string que descreve o conteúdo que você quer impedir que o modelo gere.
      • PERSON_SAFETY_SETTING: Opcional: um valor de string que controla a configuração de segurança para gerar pessoas ou rostos. Use estes valores:
        • "allow_adult": permite apenas a geração de pessoas e rostos adultos.
        • "disallow": não gera pessoas nem rostos.

        O valor padrão é "allow_adult".

      • RESOLUTION: Opcional: um valor de string que controla a resolução do vídeo gerado. Compatível apenas com os modelos do Veo 3. Você pode usar os seguintes valores:
        • "720p"
        • "1080p"
        • "4k" (somente modelos de pré-lançamento do Veo 3.1)

        O valor padrão é "720p".

      • RESPONSE_COUNT: Opcional. Um valor inteiro que descreve o número de vídeos a serem gerados. O intervalo de valores aceito é 1-4.
      • SEED_NUMBER: Opcional. Um valor uint32 que o modelo usa para gerar vídeos deterministas. Especificar um número de sugestão com sua solicitação sem alterar outros parâmetros orienta o modelo a produzir os mesmos vídeos. O intervalo aceito de valores é 0-4294967295.

    Método HTTP e URL:

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

    Corpo JSON da solicitação:

    {
      "instances": [
        {
          "prompt": "TEXT_PROMPT",
          // The following fields can be repeated for up to three total
          // images.
          "referenceImages": [
            {
              "image": {
                "bytesBase64Encoded": "BASE64_ENCODED_IMAGE",
                "mimeType": "IMAGE_MIME_TYPE"
              },
              "referenceType": "asset"
            }
          ]
        }
      ],
      "parameters": {
        "aspectRatio":, "ASPECT_RATIO,
        "durationSeconds": 8,
        "storageUri": "OUTPUT_STORAGE_URI",
        "sampleCount": RESPONSE_COUNT,
        "resolution": "VIDEO_RESOLUTION
      }
    }
    

    Para enviar a solicitação, escolha uma destas opções:

    curl

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando abaixo:

    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

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando abaixo:

    $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
    Essa solicitação retorna um nome de operação completo com um ID de operação exclusivo. Use esse nome completo da operação para pesquisar o status da solicitação de geração de vídeo.
    {
      "name":
      "projects/PROJECT_ID/locations/us-central1/publishers/google/models/MODEL_ID/operations/a1b07c8e-7b5a-4aba-bb34-3e1ccb8afcc8"
    }
    

  2. Opcional: verifique o status da operação de longa duração de geração de vídeo.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do projeto do Cloud de Confiance by S3NS .
    • MODEL_ID: o ID do modelo que será usado.
    • OPERATION_ID: o ID exclusivo da operação retornado na solicitação original de geração de vídeo.

    Método HTTP e URL:

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

    Corpo JSON da solicitação:

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

    Para enviar a solicitação, escolha uma destas opções:

    curl

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando abaixo:

    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

    Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando abaixo:

    $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
    Essa solicitação retorna informações sobre a operação, incluindo se ela ainda está em execução ou se foi concluída.

A seguir