Genera videos a partir de referencias

Puedes usar Gemini Omni Flash o Veo en Gemini Enterprise Agent Platform para guiar la generación de videos con imágenes o videos de referencia.

Los siguientes modelos admiten imágenes de referencia:

Gemini Omni Flash

Gemini Omni Flash te permite usar imágenes o videos de referencia para proporcionar información adicional al modelo cuando generas un video.

Haz clic para expandir los modelos compatibles

Veo

Veo en Gemini Enterprise Agent Platform te permite usar imágenes de referencia del sujeto para dirigir el video generado. Proporcionas hasta tres imágenes de una sola persona, personaje o producto. Veo conserva la apariencia del sujeto en el video resultante.

Haz clic para expandir los modelos compatibles

Si deseas obtener más información para escribir instrucciones de texto eficaces para la generación de videos, consulta la guía de instrucciones para la generación de videos.

Prueba Gemini Omni Flash en un Colab

Antes de comenzar

  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. Configura la autenticación para tu entorno.

    Selecciona la pestaña que corresponda a la forma en que planeas usar las muestras de esta página:

    Console

    Cuando usas la consola de Cloud de Confiance para acceder a los servicios y las APIs de Cloud de Confiance by S3NS , no necesitas configurar la autenticación.

    Python

    Para usar las muestras de Python de esta página en un entorno de desarrollo local, instala e inicializa la gcloud CLI y, luego, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.

    1. Instala Google Cloud CLI.

    2. Configura gcloud CLI para usar tu identidad federada.

      Para obtener más información, consulta Accede a gcloud CLI con tu identidad federada.

    3. Crea credenciales de autenticación locales para tu cuenta de usuario:

      gcloud auth application-default login

      Si se devuelve un error de autenticación, confirma que accediste a gcloud CLI con tu identidad federada.

    Para obtener más información, consulta Configura ADC para un entorno de desarrollo local en la documentación de autenticación de Cloud de Confiance .

    REST

    Para usar las muestras de la API de REST incluidas en esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la gcloud CLI.

      Instala Google Cloud CLI y, luego, accede a gcloud CLI con tu identidad federada.

    Para obtener más información, consulta Autentícate para usar REST en la documentación de autenticación de Cloud de Confiance .

Usa Gemini Omni Flash y referencias para generar videos

REST

La generación de video puede tardar más de un minuto en completarse. Puedes elegir entre varios modos de interacción según tu flujo de trabajo:

  • Síncrono: sin estado: Genera un video en una sola solicitud sin conservar el estado de interacción en el servidor.
  • Síncrono: con estado: Establece store en true para conservar el estado de la interacción, lo que te permite recuperar el resultado más adelante o hacer referencia al ID de interacción para la edición de video de varios turnos.
  • Síncrono: transmisión con estado: Establece store y stream en true para recibir los pensamientos del modelo de forma incremental a medida que se generan, seguidos del video de salida.
  • Asíncrono: Establece background en true para ejecutar la generación de video en segundo plano y recuperar el resultado más tarde con el ID de interacción.

Las interacciones almacenadas y asíncronas se conservan durante un máximo de 14 días.

Para obtener más información sobre el uso de la API de Gemini Omni Flash, consulta la API de Interactions.

Síncrona: sin estado

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: Es una cadena que representa el ID del proyecto de Cloud de Confiance by S3NS .
  • MODEL_ID: Es una cadena que representa el ID del modelo que se usará. Los siguientes son valores aceptados:
    • "gemini-omni-1.1-flash-preview"
  • TEXT_PROMPT: Es la instrucción de texto que se usa para guiar la generación de video.
  • CLOUD_STORAGE_IMAGE_URI: Es una cadena que representa el bucket de Cloud Storage que contiene la imagen de entrada. Por ejemplo: "gs://video-bucket/input/".
  • IMAGE_MIME: Es una cadena que representa un tipo de MIME de imagen. Se aceptan los siguientes valores:
    • image/png
    • image/jpeg
    • image/webp
    • image/heic
    • image/heif
  • CLOUD_STORAGE_VIDEO_URI: Es una cadena que representa el bucket de Cloud Storage que contiene el video de entrada. Por ejemplo: "gs://video-bucket/input/".
  • VIDEO_MIME: Es una cadena que representa un tipo de MIME de video. Se aceptan los siguientes valores:
    • video/3gpp
    • video/mp4
    • video/mpeg
    • video/quicktime
    • video/webm
    • video/x-flv
    • video/x-ms-wmv
  • CLOUD_STORAGE_OUTPUT_URI: Opcional. Es una cadena que representa el bucket de Cloud Storage en el que se almacenarán los videos de salida. Si no se proporciona, se devuelven los bytes del video en la respuesta. Por ejemplo: "gs://video-bucket/output/".
  • ASPECT_RATIO: Opcional: Es una cadena que representa la relación de aspecto esperada del video de salida. Si no se proporciona, la relación de aspecto se infiere de la instrucción. Los siguientes son valores aceptados:
    • "16:9"
    • "9:16"
  • OUTPUT_RESOLUTION:

    Opcional: Es una cadena que representa la resolución de salida del video. Si no se proporciona, el valor predeterminado de la salida es 720p.

    gemini-omni-1.1-flash-preview admite los siguientes valores:

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

    gemini-omni-flash-preview solo admite "720p".

  • DURATION: Es una cadena que representa la duración de los archivos de video generados. Las cadenas permitidas son números enteros entre 3 y 10, seguidos de "s" para los segundos. Por ejemplo, "10s".

HTTP method and URL:

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

Cuerpo JSON de la solicitud:

{
  "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 tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

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

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

$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
La respuesta contiene una interacción que incluye las reflexiones del modelo y un video de salida.
{
  "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íncrono: Con estado

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: Es una cadena que representa el ID de tu proyecto de Cloud de Confiance by S3NS .
  • MODEL_ID: Es una cadena que representa el ID del modelo que se usará. Los siguientes son valores aceptados:
    • "gemini-omni-1.1-flash-preview"
  • TEXT_PROMPT: Es la instrucción de texto que se usa para guiar la generación de video.
  • CLOUD_STORAGE_IMAGE_URI: Es una cadena que representa el bucket de Cloud Storage que contiene la imagen de entrada. Por ejemplo: "gs://video-bucket/input/".
  • IMAGE_MIME: Es una cadena que representa un tipo de MIME de imagen. Se aceptan los siguientes valores:
    • image/png
    • image/jpeg
    • image/webp
    • image/heic
    • image/heif
  • CLOUD_STORAGE_VIDEO_URI: Es una cadena que representa el bucket de Cloud Storage que contiene el video de entrada. Por ejemplo: "gs://video-bucket/input/".
  • VIDEO_MIME: Es una cadena que representa un tipo de MIME de video. Se aceptan los siguientes valores:
    • video/3gpp
    • video/mp4
    • video/mpeg
    • video/quicktime
    • video/webm
    • video/x-flv
    • video/x-ms-wmv
  • CLOUD_STORAGE_OUTPUT_URI: Opcional. Es una cadena que representa el bucket de Cloud Storage en el que se almacenarán los videos de salida. Si no se proporciona, se devuelven los bytes del video en la respuesta. Por ejemplo: "gs://video-bucket/output/".
  • ASPECT_RATIO: Opcional: Es una cadena que representa la relación de aspecto esperada del video de salida. Si no se proporciona, la relación de aspecto se infiere de la instrucción. Los siguientes son valores aceptados:
    • "16:9"
    • "9:16"
  • OUTPUT_RESOLUTION:

    Opcional: Es una cadena que representa la resolución de salida del video. Si no se proporciona, el valor predeterminado de la salida es 720p.

    gemini-omni-1.1-flash-preview admite los siguientes valores:

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

    gemini-omni-flash-preview solo admite "720p".

  • DURATION: Es una cadena que representa la duración de los archivos de video generados. Las cadenas permitidas son números enteros entre 3 y 10, seguidos de "s" para los segundos. Por ejemplo, "10s".

HTTP method and URL:

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

Cuerpo JSON de la solicitud:

{
  "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 tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

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

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

$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
La respuesta contiene una interacción que incluye los pensamientos del modelo y un video de salida.
{
  "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",
}
Usa INTERACTION_ID para obtener el video generado:

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: Es una cadena que representa el ID del proyecto de Cloud de Confiance by S3NS .
  • INTERACTION_ID: Es el ID de interacción de la solicitud asíncrona.

Método HTTP y URL:

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

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el siguiente comando:

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

PowerShell

Ejecuta el siguiente 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
La respuesta tiene un formato similar al siguiente:
{
  "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íncrona: transmisión con estado

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: Es una cadena que representa el ID del proyecto de Cloud de Confiance by S3NS .
  • MODEL_ID: Es una cadena que representa el ID del modelo que se usará. Los siguientes son valores aceptados:
    • "gemini-omni-1.1-flash-preview"
  • TEXT_PROMPT: Es la instrucción de texto que se usa para guiar la generación de video.
  • CLOUD_STORAGE_IMAGE_URI: Es una cadena que representa el bucket de Cloud Storage que contiene la imagen de entrada. Por ejemplo: "gs://video-bucket/input/".
  • IMAGE_MIME: Es una cadena que representa un tipo de MIME de imagen. Se aceptan los siguientes valores:
    • image/png
    • image/jpeg
    • image/webp
    • image/heic
    • image/heif
  • CLOUD_STORAGE_VIDEO_URI: Es una cadena que representa el bucket de Cloud Storage que contiene el video de entrada. Por ejemplo: "gs://video-bucket/input/".
  • VIDEO_MIME: Es una cadena que representa un tipo de MIME de video. Se aceptan los siguientes valores:
    • video/3gpp
    • video/mp4
    • video/mpeg
    • video/quicktime
    • video/webm
    • video/x-flv
    • video/x-ms-wmv
  • CLOUD_STORAGE_OUTPUT_URI: Opcional. Es una cadena que representa el bucket de Cloud Storage en el que se almacenarán los videos de salida. Si no se proporciona, se devuelven los bytes del video en la respuesta. Por ejemplo: "gs://video-bucket/output/".
  • ASPECT_RATIO: Opcional: Es una cadena que representa la relación de aspecto esperada del video de salida. Si no se proporciona, la relación de aspecto se infiere de la instrucción. Los siguientes son valores aceptados:
    • "16:9"
    • "9:16"
  • OUTPUT_RESOLUTION:

    Opcional: Es una cadena que representa la resolución de salida del video. Si no se proporciona, el valor predeterminado de la salida es 720p.

    gemini-omni-1.1-flash-preview admite los siguientes valores:

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

    gemini-omni-flash-preview solo admite "720p".

  • DURATION: Es una cadena que representa la duración de los archivos de video generados. Las cadenas permitidas son números enteros entre 3 y 10, seguidos de "s" para los segundos. Por ejemplo, "10s".

HTTP method and URL:

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

Cuerpo JSON de la solicitud:

{
  "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 tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

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

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

$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
La respuesta contiene una interacción que incluye los pensamientos del modelo y un video de salida.
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]
Usa INTERACTION_ID con `?stream=true` para transmitir la interacción almacenada y el video generado:

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: Es una cadena que representa el ID del proyecto de Cloud de Confiance by S3NS .
  • INTERACTION_ID: Es el ID de interacción de la solicitud.

Método HTTP y URL:

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

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el siguiente comando:

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

PowerShell

Ejecuta el siguiente 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
La respuesta es un flujo de eventos enviados por el servidor (SSE) en un formato similar al siguiente:
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]

Asíncrono

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: Es una cadena que representa el ID de tu proyecto de Cloud de Confiance by S3NS .
  • MODEL_ID: Es una cadena que representa el ID del modelo que se usará. Se aceptan los siguientes valores:
    • "gemini-omni-1.1-flash-preview"
  • TEXT_PROMPT: Es la instrucción de texto que se usa para guiar la generación de video.
  • CLOUD_STORAGE_IMAGE_URI: Es una cadena que representa el bucket de Cloud Storage que contiene la imagen de entrada. Por ejemplo: "gs://video-bucket/input/".
  • IMAGE_MIME: Es una cadena que representa un tipo de MIME de imagen. Se aceptan los siguientes valores:
    • image/png
    • image/jpeg
    • image/webp
    • image/heic
    • image/heif
  • CLOUD_STORAGE_VIDEO_URI: Es una cadena que representa el bucket de Cloud Storage que contiene el video de entrada. Por ejemplo: "gs://video-bucket/input/".
  • VIDEO_MIME: Es una cadena que representa un tipo de MIME de video. Se aceptan los siguientes valores:
    • video/3gpp
    • video/mp4
    • video/mpeg
    • video/quicktime
    • video/webm
    • video/x-flv
    • video/x-ms-wmv
  • CLOUD_STORAGE_OUTPUT_URI: Opcional. Es una cadena que representa el bucket de Cloud Storage en el que se almacenarán los videos de salida. Si no se proporciona, se devuelven los bytes del video en la respuesta. Por ejemplo: "gs://video-bucket/output/".
  • ASPECT_RATIO: Opcional: Es una cadena que representa la relación de aspecto esperada del video de salida. Si no se proporciona, la relación de aspecto se infiere de la instrucción. Los siguientes son valores aceptados:
    • "16:9"
    • "9:16"
  • OUTPUT_RESOLUTION:

    Opcional: Es una cadena que representa la resolución de salida del video. Si no se proporciona, el valor predeterminado de la salida es 720p.

    gemini-omni-1.1-flash-preview admite los siguientes valores:

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

    gemini-omni-flash-preview solo admite "720p".

  • DURATION: Es una cadena que representa la duración de los archivos de video generados. Las cadenas permitidas son números enteros entre 3 y 10, seguidos de "s" para los segundos. Por ejemplo, "10s".

HTTP method and URL:

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

Cuerpo JSON de la solicitud:

{
  "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 tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

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

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

$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
La respuesta contiene un ID de interacción, que usarás para obtener el video que generaste.
{
  "id":"INTERACTION_ID",
  "status":"in_progress",
  "object":"interaction"
}
Más adelante, usa INTERACTION_ID para obtener el video generado:

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PROJECT_ID: Es una cadena que representa el ID de tu proyecto de Cloud de Confiance by S3NS .
  • INTERACTION_ID: Es el ID de interacción de la solicitud asíncrona.

Método HTTP y URL:

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

Para enviar tu solicitud, elige una de estas opciones:

curl

Ejecuta el siguiente comando:

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

PowerShell

Ejecuta el siguiente 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
La respuesta tiene un formato similar al siguiente:
{
  "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",
}

Usa Veo y las imágenes de recursos para generar videos

Haz lo siguiente:

Console

  1. En la consola de Cloud de Confiance , ve a la página Agent Platform > Agent Platform Studio .

    Ir a Agent Platform Studio

  2. Haz clic en Generar contenido multimedia.

  3. Haz clic en Video.

  4. En el menú Tarea, selecciona Referencia a video (tema).

  5. En el menú Modelo, selecciona un modelo de las opciones disponibles.

  6. En la sección Imágenes del sujeto, haz clic en Agregar.

    Se mostrará un diálogo de selección de archivos. Elige de una a tres imágenes en tu computadora para subirlas.

  7. Opcional: En la sección Parámetros, ajusta los siguientes parámetros de configuración:

    • Relación de aspecto: Selecciona 16:9 o 9:16.
    • Cantidad de resultados: Ajusta el control deslizante o ingresa un valor entre 1 y 4.
    • Duración del video: Selecciona 8, 6 o 4 segundos.
    • Resolución de salida: Selecciona una de las siguientes opciones:
      • 720p
      • 1080p
      • 4K
  8. Opcional: En la sección Seguridad, selecciona uno de los siguientes parámetros de configuración de generación de personas:

    • Permitir (solo para adultos): Es el valor predeterminado. Generar solo personas o rostros adultos No se deben generar imágenes de personas o rostros de jóvenes o niños.

    • No permitir: No se generan personas ni rostros.

  9. Opcional: En la sección Opciones avanzadas, ingresa un valor de Valor de inicialización para aleatorizar la generación de videos.

  10. En el cuadro Instrucción, ingresa la instrucción de texto que describe los videos que se generarán.

  11. Haz clic en Ejecutar.

Python

Instalar

pip install --upgrade google-genai

Para obtener más información, consulta la documentación de referencia del SDK.

Establece variables de entorno para usar el SDK de IA generativa de Google con 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 obtener más información sobre la API de Veo, consulta los siguientes recursos:

  1. Usa los siguientes comandos para enviar una solicitud de generación de video. Esta solicitud inicia una operación de larga duración y almacena el resultado en un bucket de Cloud Storage que especifiques.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_ID: Es el ID del proyecto de Cloud de Confiance by S3NS .
    • MODEL_ID: Es una cadena que representa el ID del modelo que se usará. Se admiten los siguientes modelos:
      • 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: Es la instrucción de texto que se usa para guiar la generación de video.
    • BASE64_ENCODED_IMAGE: Es una imagen del sujeto codificada en bytes en base64. Puedes repetir este campo y mimeType para especificar hasta tres imágenes del sujeto.
    • IMAGE_MIME_TYPE: Es el tipo de MIME de la imagen de entrada. Solo uno de los siguientes documentos:

      • image/jpeg
      • image/png

      Puedes repetir este campo y bytesBase64Encoded para especificar hasta tres imágenes del sujeto.

    • ASPECT_RATIO: Opcional: Es la relación de aspecto del video generado. Solo uno de los siguientes documentos:

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

      El valor predeterminado es "16:9".

    • OUTPUT_STORAGE_URI: Opcional: Es el bucket de Cloud Storage para almacenar los videos de salida. Si no se proporciona, se devuelve un video codificado en bytes Base64 en la respuesta. Por ejemplo: gs://video-bucket/output/.
    • RESPONSE_COUNT: Es la cantidad de archivos de video que deseas generar. Valores de números enteros aceptados: de 1 a 4.
    • VIDEO_RESOLUTION: Opcional: Es la resolución del video generado. Solo uno de los siguientes:

      • "720p"
      • "1080p"
      • "4k" (solo para modelos de la versión preliminar de Veo 3.1)

      El valor predeterminado es "720p".

    • Parámetros opcionales adicionales

      Usa las siguientes variables opcionales según tu caso de uso. Agrega algunos o todos los siguientes parámetros en el 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. Es un valor de cadena que describe la relación de aspecto de los videos generados. Puedes usar los siguientes valores:
        • "16:9" para horizontal
        • "9:16" para el modo Retrato

        El valor predeterminado es "16:9".

      • NEGATIVE_PROMPT: Opcional. Es un valor de cadena que describe el contenido que deseas evitar que genere el modelo.
      • PERSON_SAFETY_SETTING: Opcional: Es un valor de cadena que controla el parámetro de configuración de seguridad para generar personas o rostros. Puedes usar los siguientes valores:
        • "allow_adult": Solo permite la generación de personas y rostros adultos.
        • "disallow": No genera personas ni rostros.

        El valor predeterminado es "allow_adult".

      • RESOLUTION: Opcional: Es un valor de cadena que controla la resolución del video generado. Solo es compatible con los modelos de Veo 3. Puedes usar los siguientes valores:
        • "720p"
        • "1080p"
        • "4k" (solo para modelos de la versión preliminar de Veo 3.1)

        El valor predeterminado es "720p".

      • RESPONSE_COUNT: Opcional. Es un valor entero que describe la cantidad de videos que se generarán. El rango de valores aceptado es de 1 a 4.
      • SEED_NUMBER: Opcional. Es un valor uint32 que el modelo usa para generar videos determinísticos. Especificar un número de origen con tu solicitud sin cambiar otros parámetros guía al modelo para que produzca los mismos videos. El rango de valores aceptado es de 0 a 4294967295.

    Método HTTP y URL:

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

    Cuerpo JSON de la solicitud:

    {
      "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 tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

    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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

    $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
    Esta solicitud devuelve un nombre de operación completo con un ID de operación único. Usa este nombre de operación completo para sondear el estado de la solicitud de generación de video.
    {
      "name":
      "projects/PROJECT_ID/locations/us-central1/publishers/google/models/MODEL_ID/operations/a1b07c8e-7b5a-4aba-bb34-3e1ccb8afcc8"
    }
    

  2. Opcional: Verifica el estado de la operación de larga duración de generación de video.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_ID: Es el Cloud de Confiance by S3NS ID del proyecto.
    • MODEL_ID: Es el ID del modelo que se usará.
    • OPERATION_ID: Es el ID de operación único que se muestra en la solicitud de generación de video original.

    Método HTTP y URL:

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

    Cuerpo JSON de la solicitud:

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

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

    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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

    $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
    Esta solicitud devuelve información sobre la operación, incluido si la operación aún se está ejecutando o si ya finalizó.

¿Qué sigue?