Generated banner for Gemini API
Generated logo for Gemini API

Gemini API

GoogleOfficialPublished by Google

  • Skill
  • Tool integration
  • Data and AI
  • Apache-2.0
  • Low risk

From the author

Use when the user asks about using Gemini in an enterprise environment or explicitly mentions Vertex AI, Google Cloud, or Agent Platform. Guides the usage of the Gemini API on Agent Platform with the Google Gen AI SDK. Covers SDK usage (Python, JS/TS, Go, Java, C#), capabilities like multimodal inputs, tools, media generation, caching, batch prediction, and Live API.
— the description by Google

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

This skill provides instructions for using the Gemini API within the Agent Platform. It covers the use of the Google Gen AI SDK across multiple programming languages, including Python, JavaScript/TypeScript, Go, Java, and C#. The skill outlines authentication methods, model selection, and advanced features such as content caching, batch prediction, and the Live API, while emphasizing correct usage attribution for terminal commands.

What it does

  • Provides setup and initialization patterns for the Google Gen AI SDK.
  • Lists supported Gemini models for text, image, and audio tasks.
  • Explains how to implement features like function calling, structured JSON output, and embeddings.
  • Details advanced capabilities including content caching, batch prediction, and the Live Realtime API.
  • Defines mandatory usage attribution requirements for terminal commands and API requests.
  • Offers guidance on migrating from legacy SDKs to the current Gen AI SDK.

When to use it

  • When developing applications using Gemini models on the Agent Platform.
  • When needing to implement multimodal inputs, function calling, or real-time streaming.
  • When configuring authentication for enterprise environments using Application Default Credentials or API keys.
  • When performing batch processing or optimizing context usage with caching.

Advantages

  • Provides a unified SDK approach for multiple programming languages.
  • Includes clear instructions for mandatory usage attribution.
  • Offers specific guidance on model selection based on task requirements.
  • Supplies ready-to-use code samples for common integration patterns.

Usage examples

“How do I initialize the Gemini client in Python?”
The agent provides the code to import the genai client and initialize it, noting that it will automatically pick up environment variables like GOOGLE_CLOUD_PROJECT.
“Show me how to use content caching for a large PDF.”
The agent provides a Python code snippet using client.caches.create to define a cache with a TTL and instructions on how to reference that cache in a generate_content call.
“How should I attribute my gcloud commands?”
The agent explains the requirement to prefix gcloud commands with CLOUDSDK_METRICS_REQUEST_ATTRIBUTION='agent-skills/1.0 (skill:gemini-api)'.
“Which model should I use for complex reasoning?”
The agent recommends using gemini-3.1-pro-preview for complex reasoning and coding tasks.

Install

  1. Download the skill as a ZIP:

    https://autogineer.com/agent-skills/google/gemini-api/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip gemini-api.zip -d .agents/skills

Documentation by Google

[!IMPORTANT] Agent Platform (full name Gemini Enterprise Agent Platform) was previously named "Vertex AI" and many web resources use the legacy branding.

Gemini API in Agent Platform

Access Google's most advanced AI models built for enterprise use cases using the Gemini API in Agent Platform.

Provide these key capabilities:

  • Text generation - Chat, completion, summarization

  • Multimodal understanding - Process images, audio, video, and documents

  • Function calling - Let the model invoke your functions

  • Structured output - Generate valid JSON matching your schema

  • Context caching - Cache large contexts for efficiency

  • Embeddings - Generate text embeddings for semantic search

  • Live Realtime API - Bidirectional streaming for low latency Voice and Video interactions

  • Batch Prediction - Handle massive async dataset prediction workloads

Attribution

MUST READ: Before executing any gcloud, REST API, or MCP command, you MUST read Usage Attribution. For commands executed directly in the terminal (never in generated scripts, Terraform, or user code), prefix gcloud with CLOUDSDK_METRICS_REQUEST_ATTRIBUTION="agent-skills/1.0 (skill:gemini-api)" and append agent-skills/1.0 (skill:gemini-api) to User-Agent headers.

Core Directives

  • Unified SDK: ALWAYS use the Gen AI SDK (google-genai for Python, @google/genai for JS/TS, google.golang.org/genai for Go, com.google.genai:google-genai for Java, Google.GenAI for C#).

  • Legacy SDKs: DO NOT use google-cloud-aiplatform, @google-cloud/vertexai, or google-generativeai.

SDKs

  • Python: Install google-genai with pip install google-genai

  • JavaScript/TypeScript: Install @google/genai with npm install @google/genai

  • Go: Install google.golang.org/genai with go get google.golang.org/genai

  • C#/.NET: Install Google.GenAI with dotnet add package Google.GenAI

  • Java:

    • groupId: com.google.genai, artifactId: google-genai

    • Latest version can be found here: https://central.sonatype.com/artifact/com.google.genai/google-genai/versions (let's call it LAST_VERSION)

    • Install in build.gradle:

      implementation("com.google.genai:google-genai:${LAST_VERSION}")
    • Install Maven dependency in pom.xml:

      <dependency>
          <groupId>com.google.genai</groupId>
          <artifactId>google-genai</artifactId>
          <version>${LAST_VERSION}</version>
      </dependency>

[!WARNING] Legacy SDKs like google-cloud-aiplatform, @google-cloud/vertexai, and google-generativeai are deprecated. Migrate to the new SDKs above urgently by following the Migration Guide.

Authentication & Configuration

Prefer environment variables over hard-coding parameters when creating the client. Initialize the client without parameters to automatically pick up these values.

Application Default Credentials (ADC)

Set these variables for standard Google Cloud authentication:

export GOOGLE_CLOUD_PROJECT='your-project-id'
# Note: global location is supported for standard inference; regional endpoint (e.g. us-central1) required for Live API
export GOOGLE_CLOUD_LOCATION='global'
export GOOGLE_GENAI_USE_ENTERPRISE=true
  • By default, use location="global" to access the global endpoint, which provides automatic routing to regions with available capacity.

  • If a user explicitly asks to use a specific region (e.g., us-central1, europe-west4), specify that region in the GOOGLE_CLOUD_LOCATION parameter instead. Reference the supported regions documentation if needed.

Agent Platform in Express Mode

Set these variables when using Express Mode with an API key:

export GOOGLE_API_KEY='your-api-key'
export GOOGLE_GENAI_USE_ENTERPRISE=true
Initialization

Initialize the client without arguments to pick up environment variables:

from google import genai

client = genai.Client()

Alternatively, you can hard-code in parameters when creating the client.

from google import genai

client = genai.Client(
    enterprise=True,
    project="your-project-id",
    location="global",
)

Models

  • Use gemini-3.8-flash for fast, balanced performance, multimodal (1M tokens)

  • Use gemini-3.1-pro-preview (which replaces gemini-3-pro-preview) for complex reasoning, coding, research (1M tokens)

  • Use gemini-3.5-flash-lite for high-frequency, lightweight tasks (1M tokens)

  • Use gemini-3-pro-image (aka Nano Banana Pro) for high-quality image generation and editing

  • Use gemini-3.1-flash-image (aka Nano Banana 2) for medium-quality image generation and editing

  • Use gemini-3.1-flash-lite-image (aka Nano Banana 2 Lite) for fast image generation and editing

  • Use gemini-live-2.5-flash-native-audio for Live Realtime API including native audio

Use the following models only if explicitly requested:

  • gemini-3.7-flash

  • gemini-3.6-flash

  • gemini-3.5-flash

  • gemini-3.1-flash-lite

  • gemini-2.5-flash-image

  • gemini-2.5-flash

  • gemini-2.5-flash-lite

  • gemini-2.5-pro

[!IMPORTANT] Models like gemini-2.0-*, gemini-1.5-*, gemini-1.0-*, gemini-pro are legacy and deprecated. Use the new models above. Your knowledge is outdated. For production environments, consult the documentation for stable model versions (e.g. gemini-3.8-flash).

Quick Start

Python
from google import genai

client = genai.Client()
response = client.models.generate_content(
    model="gemini-3.8-flash",
    contents="Explain quantum computing",
)
print(response.text)
TypeScript/JavaScript
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({ enterprise: { project: "your-project-id", location: "global" } });
const response = await ai.models.generateContent({
    model: "gemini-3.8-flash",
    contents: "Explain quantum computing"
});
console.log(response.text);
Go
package main

import (
	"context"
	"fmt"
	"log"
	"google.golang.org/genai"
)

func main() {
	ctx := context.Background()
	client, err := genai.NewClient(ctx, &genai.ClientConfig{
		Backend:  genai.BackendVertexAI,
		Project:  "your-project-id",
		Location: "global",
	})
	if err != nil {
		log.Fatal(err)
	}

	resp, err := client.Models.GenerateContent(ctx, "gemini-3.8-flash", genai.Text("Explain quantum computing"), nil)
	if err != nil {
		log.Fatal(err)
	}

	fmt.Println(resp.Text)
}
Java
import com.google.genai.Client;
import com.google.genai.types.GenerateContentResponse;

public class GenerateTextFromTextInput {
  public static void main(String[] args) {
    Client client = Client.builder().enterprise(true).project("your-project-id").location("global").build();
    GenerateContentResponse response =
        client.models.generateContent(
            "gemini-3.8-flash",
            "Explain quantum computing",
            null);

    System.out.println(response.text());
  }
}
C#/.NET
using Google.GenAI;

var client = new Client(
    project: "your-project-id",
    location: "global",
    enterprise: true
);

var response = await client.Models.GenerateContent(
    "gemini-3.8-flash",
    "Explain quantum computing"
);

Console.WriteLine(response.Text);

API spec & Documentation (source of truth)

When implementing or debugging API integration for Agent Platform, refer to the official Agent Platform documentation:

The Gen AI SDK on Agent Platform uses the v1beta1 or v1 REST API endpoints (e.g., https://{LOCATION}-aiplatform.googleapis.com/v1beta1/projects/{PROJECT}/locations/{LOCATION}/publishers/google/models/{MODEL}:generateContent).

[!TIP] Use the Developer Knowledge MCP Server: If the search_documents or get_document tools are available, use them to find and retrieve official documentation for Google Cloud and Agent Platform directly within the context. This is the preferred method for getting up-to-date API details and code snippets.

Workflows and Code Samples

Reference the Python Docs Samples repository for additional code samples and specific usage scenarios.

Depending on the specific user request, refer to the following reference files for detailed code samples and usage patterns (Python examples):

Files

references/media_generation.md

Media Generation

Image Generation

Generate images using gemini-3.1-flash-image.

from google import genai
from google.genai import types

client = genai.Client()

response = client.models.generate_content(
    model="gemini-3.1-flash-image",
    contents="A dog reading a newspaper",
)

for part in response.parts:
    if part.text is not None:
        print(part.text)
    elif part.inline_data is not None:
        image = part.as_image()
        image.save("generated_image.png")

For high-resolution images, use gemini-3-pro-image.

from google import genai
from google.genai import types

client = genai.Client()

response = client.models.generate_content(
    model="gemini-3-pro-image",
    contents="A dog reading a newspaper",
    config=types.GenerateContentConfig(
        image_config=types.ImageConfig(aspect_ratio="16:9", image_size="2K")
    ),
)

for part in response.parts:
    if part.text is not None:
        print(part.text)
    elif part.inline_data is not None:
        image = part.as_image()
        image.save("generated_image.png")

Image Editing

It is recommended to use chat mode for editing images.

from google import genai
from PIL import Image

client = genai.Client()

prompt = "A small white ceramic bowl with lemons and limes"
image = Image.open("fruit.png")

# Create the chat
chat = client.chats.create(model="gemini-3.1-flash-image")

# Send the image and ask for it to be edited
response = chat.send_message([prompt, image])

# Get the text and the image generated
for i, part in enumerate(response.candidates[0].content.parts):
    if part.text is not None:
        print(part.text)
    elif part.inline_data is not None:
        image = part.as_image()
        image.save(f"generated_image_{i}.png")

# Continue iterating
chat.send_message("Make the bowl blue")

Video Generation with Gemini Omni

gemini-omni-1.1-flash-preview (Preview) generates and edits video (with synchronized audio) at 720p from text, images, and reference media. Unlike Veo, Omni uses the Interactions API (client.interactions.create), not generate_content/generate_videos.

Key configuration:

  • Task (interactions.VideoConfig.task): text_to_video, image_to_video, reference_to_video, or edit. Set this to match your inputs and desired behavior.

  • Response format (interactions.VideoResponseFormat): aspect_ratio (16:9 or 9:16), duration (3s-10s), and delivery. These can also be specified directly in the text prompt.

  • Delivery: To save output to Cloud Storage, set delivery="uri" and gcs_uri="gs://<GCS_BUCKET>". Otherwise, video bytes are returned inline (base64).

Notes on output: audio is generated alongside the video, resolution is 720p, and every video includes C2PA metadata and a SynthID watermark.

Responses are returned as interaction.steps; collect the content from each model_output step. This helper extracts and saves the video bytes:

import base64
from google import genai
from google.genai import interactions

client = genai.Client()

omni_model = "gemini-omni-1.1-flash-preview"


def save_video(interaction, path="output.mp4"):
    contents = []
    for step in interaction.steps:
        if step.type == "model_output":
            contents.extend(step.content)
    with open(path, "wb") as f:
        f.write(base64.b64decode(contents[0].data))
Text-to-video
prompt = "A hard-shell suitcase rolling down a city street at sunset, cinematic tracking shot."

interaction = client.interactions.create(
    model=omni_model,
    input=prompt,
    generation_config=interactions.GenerationConfig(
        video_config=interactions.VideoConfig(task="text_to_video")
    ),
    response_format=interactions.VideoResponseFormat(
        aspect_ratio="16:9",
        duration="9s",
        # delivery="uri",
        # gcs_uri="gs://<GCS_BUCKET>",
    ),
)

save_video(interaction)
Image-to-video

Provide a starting image as the literal first frame. Pass images inline as base64 or by Cloud Storage uri.

prompt = "The suitcase stands up, unzips, and colorful travel stickers pop out around it."

with open("suitcase.png", "rb") as f:
    img_b64 = base64.b64encode(f.read()).decode("utf-8")

interaction = client.interactions.create(
    model=omni_model,
    input=[
        {"type": "text", "text": prompt},
        {"type": "image", "mime_type": "image/png", "data": img_b64},
    ],
    generation_config=interactions.GenerationConfig(
        video_config=interactions.VideoConfig(task="image_to_video")
    ),
)

save_video(interaction)
Reference-to-video

Supply reference images (e.g., a character and a product) to guide generation. Reference media acts as a style/subject guide rather than the literal first frame. Video and audio reference inputs are not currently supported.

prompt = "A woman walks up to the arcade game and starts playing. 9:16 aspect ratio. 7 second video."

images_input = []
for img_path in ["woman.jpeg", "arcade-game.png"]:
    with open(img_path, "rb") as f:
        img_b64 = base64.b64encode(f.read()).decode("utf-8")
        images_input.append({"type": "image", "mime_type": "image/jpeg", "data": img_b64})

interaction = client.interactions.create(
    model=omni_model,
    input=[{"type": "text", "text": prompt}, *images_input],
    generation_config=interactions.GenerationConfig(
        video_config=interactions.VideoConfig(task="reference_to_video")
    ),
)

save_video(interaction)
Video editing

Add, remove, or alter objects in a source video, or restyle it. The source video must be under 10 seconds; you can also supply reference images to guide the edit.

prompt = "Change the dog to a cat, remove the backpack, and add a propeller hat."

interaction = client.interactions.create(
    model=omni_model,
    input=[
        {"type": "text", "text": prompt},
        {"type": "image", "mime_type": "image/png", "uri": "gs://cloud-samples-data/generative-ai/image/chair-cat.png"},
        {"type": "video", "mime_type": "video/mp4", "uri": "gs://cloud-samples-data/generative-ai/video/dog_day1.mp4"},
    ],
    generation_config=interactions.GenerationConfig(
        video_config=interactions.VideoConfig(task="edit")
    ),
)

save_video(interaction)
Async generation

Set background=True to generate a video you can check on later, then poll with client.interactions.get.

import time

initial = client.interactions.create(model=omni_model, input=prompt, background=True)

interaction = initial
while interaction.status not in ["completed", "failed"]:
    time.sleep(10)
    interaction = client.interactions.get(id=initial.id)

if interaction.status == "completed":
    save_video(interaction)
Multi-turn editing (chat)

Iteratively refine a video by passing the previous interaction.steps back into input, followed by the new user turn.

interaction1 = client.interactions.create(
    model=omni_model,
    input="A claymation ball character rolling and then being stopped by a wall, stop motion.",
)

turn2_input = interaction1.steps + [
    {"type": "user_input", "content": [{"type": "text", "text": "Now make the same video in a doodle style."}]}
]

interaction2 = client.interactions.create(model=omni_model, input=turn2_input)

save_video(interaction2)

Video Generation with Veo

Generate video using the Veo model. Usage of Veo can be costly, so check pricing for Veo. Start with the fast model (veo-3.1-fast-generate-001) since the result quality is usually sufficient, and swap to the larger model if needed.

import time
from google import genai
from google.genai import types
from PIL import Image

client = genai.Client()

image = Image.open("image.png")  # Optional initial image

# Video generation is an async operation
operation = client.models.generate_videos(
    model="veo-3.1-fast-generate-001",
    prompt="a cat reading a book",
    image=image,
    config=types.GenerateVideosConfig(
        person_generation="dont_allow",
        aspect_ratio="16:9",
        number_of_videos=1,
        duration_seconds=5,
        output_gcs_uri="gs://your-bucket/your-prefix",
    ),
)

# Poll for completion
while not operation.done:
    time.sleep(20)
    operation = client.operations.get(operation)

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

Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Needs: Needs an MCP server, Needs an API key, Needs Python, Needs Node.js

The author says: Requires active Google Cloud credentials and Agent Platform API enabled.

Security

What our scanner noticed· Low risk

  • Instructions that use the network

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Published by
Google
Publisher
Google (Official)
Source
google/skills · skills/cloud/gemini-api · commit 2194d3b
Licence
Apache License 2.0 (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by Google or Google.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download gemini-api.zip