Estender vídeos

Você pode usar o Gemini Omni Flash ou o Veo na Gemini Enterprise Agent Platform para estender vídeos. O vídeo de entrada precisa ter entre 1 e 30 segundos de duração. Os vídeos podem ser estendidos até 40 segundos para o Gemini Omni Flash ou 37 segundos para o Veo na Gemini Enterprise Agent Platform. É possível estender vídeos usando o console Cloud de Confiance ou a API Agent Platform.

Os seguintes modelos permitem estender vídeos:

Gemini Omni Flash

Clique para abrir os modelos compatíveis

Veo

Clique para abrir os modelos compatíveis

Para informações sobre como escrever comandos de texto eficazes para geração de vídeos, consulte o guia de comandos 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.

    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 .

Limitações do Veo

Ao usar o Veo para estender vídeos, os vídeos de entrada estão sujeitos às seguintes limitações:

  • O arquivo de entrada precisa ser MP4.
  • A duração precisa ser de 1 a 30 segundos.
  • O frame rate precisa ser de 24 quadros por segundo.
  • A resolução precisa ser uma destas: 720p, 1080p ou 4k.
  • A proporção dos vídeos de entrada pode ser 9:16 ou 16:9.

Ao usar o Veo para estender vídeos, os vídeos de saída estão sujeitos às seguintes limitações:

  • O arquivo de saída é MP4.
  • A duração estendida é de 7 segundos.
  • O frame rate é de 24 quadros por segundo.
  • A resolução pode ser 720p, 1080p ou 4K.
  • A proporção dos vídeos de saída pode ser 9:16 ou 16:9.

Estender vídeos usando o Gemini Omni Flash

Para estender vídeos usando o Gemini Omni Flash, faça o seguinte:

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 manter o estado da 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_INPUT_URI: uma string que representa o bucket do Cloud Storage que contém a mídia de entrada. Por exemplo, "gs://video-bucket/input/".
  • 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"
  • 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 de "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"
    },
    {
      "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",
      "duration": "DURATION"
    }
  ],
  "generation_config": {
    "video_config": {
      "task": "extend"
    }
  }
}

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_INPUT_URI: uma string que representa o bucket do Cloud Storage que contém a mídia de entrada. Por exemplo, "gs://video-bucket/input/".
  • 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"
  • 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 de "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"
        },
        {
          "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",
      "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 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 está em um formato semelhante ao seguinte:
{
  "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_INPUT_URI: uma string que representa o bucket do Cloud Storage que contém a mídia de entrada. Por exemplo, "gs://video-bucket/input/".
  • 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"
  • 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 de "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"
        },
        {
          "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",
      "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 de 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_INPUT_URI: uma string que representa o bucket do Cloud Storage que contém a mídia de entrada. Por exemplo, "gs://video-bucket/input/".
  • 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"
  • 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 de "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"
    },
    {
      "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",
      "duration": "DURATION"
    }
  ],
  "generation_config": {
    "video_config": {
      "task": "extend"
    }
  }
}

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 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",
}

Estender vídeos usando o Veo

Os exemplos a seguir mostram como estender um vídeo do Veo:

Console

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

    Media Studio

  2. Clique em Vídeo.

  3. No menu Tarefa, selecione Extensão de vídeo.

  4. No menu Modelo, selecione uma das opções exibidas.

  5. Na seção Vídeo de entrada, clique em Adicionar.

  6. Na caixa Comando, insira um comando de texto que descreva os vídeos a serem gerados.

  7. Opcional: ajuste os seguintes parâmetros:

    • Número de resultados: ajuste o controle deslizante ou insira um valor entre 1 e 4.

    • Duração do vídeo: selecione uma duração no menu.

  • Diretório de saída: clique em Procurar para criar ou selecionar um bucket do Cloud Storage para armazenar os arquivos gerados.
  1. Clique em Executar.

Python

Instalar

pip install --upgrade google-genai

Para saber mais, 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, Video

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 butterfly flies in and lands on the flower",
    video=Video(
        uri="gs://cloud-samples-data/generative-ai/video/flower.mp4",
        mime_type="video/mp4",
    ),
    config=GenerateVideosConfig(
        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 o comando 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: 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. Use uma das seguintes opções ao especificar um primeiro ou último frame de vídeo:
      • Veo 3: veo-3.1-generate-001
      • Veo 3: veo-3.1-fast-generate-001
    • TEXT_PROMPT: o comando de texto usado para orientar a geração de vídeo.
    • PATH_TO_VIDEO: uma string que representa o caminho do Cloud Storage para o vídeo do Veo que você está estendendo. Por exemplo, "gs://video-bucket/input/veo-video.mp4".
    • OUTPUT_STORAGE_URI: opcional. Uma string que representa o bucket do Cloud Storage para armazenar os vídeos de saída. Se não for fornecido, os bytes de vídeo serão retornados na resposta. Por exemplo, "gs://video-bucket/output/".
    • RESPONSE_COUNT: o número de arquivos de vídeo a serem gerados. O intervalo de valores aceito é 1-4.
    • 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 modelos do Veo 3. É possível 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 mudar 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",
           "video": {
             "gcsUri": "PATH_TO_VIDEO",
             "mimeType": "video/mp4"
           }
        }
      ],
      "parameters": {
        "storageUri": "OUTPUT_STORAGE_URI",
        "sampleCount": RESPONSE_COUNT
      }
    }
    

    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 para consultar 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