gemini-live-api-dev – Coding skill for AI agents
Use this skill when building real-time, bidirectional streaming applications with the Gemini Live API.
Install the gemini-live-api-dev skill with one command
Pick the tool you use, copy the command and paste it in your terminal. The skill lands in that tool's skills folder and is ready in your next session.
Claude Code
mkdir -p ~/.claude/skills && curl -fsSL https://skill.dn1nguoi.com/z/gemini-live-api-dev-50417.tgz | tar xz -C ~/.claude/skills
Call it in Claude Code: /gemini-live-api-dev – then describe the task you want done.
Codex
mkdir -p ~/.codex/skills && curl -fsSL https://skill.dn1nguoi.com/z/gemini-live-api-dev-50417.tgz | tar xz -C ~/.codex/skills
Call it in Codex: $gemini-live-api-dev – then describe the task you want done.
Hermes Agent
mkdir -p ~/.hermes/skills && curl -fsSL https://skill.dn1nguoi.com/z/gemini-live-api-dev-50417.tgz | tar xz -C ~/.hermes/skills
Call it in Hermes Agent: /gemini-live-api-dev – then describe the task you want done.
DeepSeek
mkdir -p ~/.deepcode/skills && curl -fsSL https://skill.dn1nguoi.com/z/gemini-live-api-dev-50417.tgz | tar xz -C ~/.deepcode/skills
Call it in DeepSeek: /gemini-live-api-dev – then describe the task you want done.
SKILL.md content
Gemini Live API Development Skill
When to Use
Use this skill when building real-time, bidirectional streaming applications with the Gemini Live API. Covers WebSocket-based audio/video/text streaming, voice activity detection (VAD), native audio features, function calling, session management, ephemeral tokens for client-side auth,...
Overview
The Live API enables low-latency, real-time voice and video interactions with Gemini over WebSockets. It processes continuous streams of audio, video, or text to deliver immediate, human-like spoken responses.
Key capabilities:
- Bidirectional audio streaming — real-time mic-to-speaker conversations
- Video streaming — send camera/screen frames alongside audio
- Text input/output — send and receive text within a live session
- Audio transcriptions — get text transcripts of both input and output audio
- Voice Activity Detection (VAD) — automatic interruption handling
- Native audio — thinking (with configurable
thinkingLevel) - Function calling — synchronous tool use
- Google Search grounding — ground responses in real-time search results
- Session management — context compression, session resumption, GoAway signals
- Ephemeral tokens — secure client-side authentication
> [!NOTE]
> The Live API currently only supports WebSockets. For WebRTC support or simplified integration, use a [partner integration](#partner-integrations).
Models
gemini-3.1-flash-live-preview— Optimized for low-latency, real-time dialogue. Native audio output, thinking (viathinkingLevel). 128k context window. This is the recommended model for all Live API use cases.gemini-3.5-live-translate-preview— Real-time streaming translation model.
> [!WARNING]
> The following Live API models are deprecated and will be shut down. Migrate to gemini-3.1-flash-live-preview.
> - gemini-2.5-flash-native-audio-preview-12-2025 — Migrate to gemini-3.1-flash-live-preview.
> - gemini-live-2.5-flash-preview — Released June 17, 2025. Shutdown: December 9, 2025.
> - gemini-2.0-flash-live-001 — Released April 9, 2025. Shutdown: December 9, 2025.
SDKs
- Python:
google-genai—pip install google-genai - JavaScript/TypeScript:
@google/genai—npm install @google/genai
> [!WARNING]
> Legacy SDKs google-generativeai (Python) and @google/generative-ai (JS) are deprecated. Use the new SDKs above.
Partner Integrations
To streamline real-time audio/video app development, use a third-party integration supporting the Gemini Live API over WebRTC or WebSockets:
- [LiveKit](https://docs.livekit.io/agents/models/realtime/plugins/gemini/) — Use the Gemini Live API with LiveKit Agents.
- [Pipecat by Daily](https://docs.pipecat.ai/guides/features/gemini-live) — Create a real-time AI chatbot using Gemini Live and Pipecat.
- [Fishjam by Software Mansion](https://docs.fishjam.io/tutorials/gemini-live-integration) — Create live video and audio streaming applications with Fishjam.
- [Vision Agents by Stream](https://visionagents.ai/integrations/gemini) — Build real-time voice and video AI applications with Vision Agents.
- [Voximplant](https://voximplant.com/products/gemini-client) — Connect inbound and outbound calls to Live API with Voximplant.
- [Firebase AI SDK](https://firebase.google.com/docs/ai-logic/live-api?api=dev) — Get started with the Gemini Live API using Firebase AI Logic.
Audio Formats
- Input: Raw PCM, little-endian, 16-bit, mono. 16kHz native (will resample others). MIME type:
audio/pcm;rate=16000 - Output: Raw PCM, little-endian, 16-bit, mono. 24kHz sample rate.
> [!IMPORTANT]
> Use send_realtime_input / sendRealtimeInput for all real-time user input (audio, video, and text). send_client_content / sendClientContent is only supported for seeding initial context history (requires setting initial_history_in_client_content in history_config). Do not use it to send new user messages during the conversation.
> [!WARNING]
> Do not use media in sendRealtimeInput. Use the specific keys: audio for audio data, video for images/video frames, and text for text input.
---
Application boundaries
Examples are independent fragments, not a microphone/playback application. Define chunks, bounded input/output queues, sample conversion, cancellation and session cleanup; close the JavaScript session and Python client when finished. Confirm model availability and supported options in current model-specific docs rather than relying on universal capability claims. Obtain consent for microphone/camera streaming, minimize transcript logging, and never send API keys to browsers. Tool-call arguments are untrusted: validate and authorize each server-side action, including retries and cancelled calls.
Quick Start
Authentication
Python
import os
from google import genai
client = genai.Client(api_key=os.environ["GEMINI_API_KEY"])JavaScript
import { GoogleGenAI } from '@google/genai';
// Node/server only; browsers must receive short-lived ephemeral tokens.
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });Connecting to the Live API
Python
from google.genai import types
config = types.LiveConnectConfig(
response_modalities=[types.Modality.AUDIO],
system_instruction=types.Content(
parts=[types.Part(text="You are a helpful assistant.")]
)
)
async with client.aio.live.connect(model="gemini-3.1-flash-live-preview", config=config) as session:
pass # Session is activeJavaScript
const session = await ai.live.connect({
model: 'gemini-3.1-flash-live-preview',
config: {
responseModalities: ['audio'],
systemInstruction: { parts: [{ text: 'You are a helpful assistant.' }] }
},
callbacks: {
onopen: () => console.log('Connected'),
onmessage: (response) => { /* Process parts using the receive example below. */ },
onerror: () => console.error('Live connection error'),
onclose: () => console.log('Closed')
}
});Sending Text
Python
await session.send_realtime_input(text="Hello, how are you?")JavaScript
session.sendRealtimeInput({ text: 'Hello, how are you?' });Sending Audio
Python
await session.send_realtime_input(
audio=types.Blob(data=chunk, mime_type="audio/pcm;rate=16000")
)JavaScript
session.sendRealtimeInput({
audio: { data: chunk.toString('base64'), mimeType: 'audio/pcm;rate=16000' }
});Sending Video
Python
# frame: raw JPEG-encoded bytes
await session.send_realtime_input(
video=types.Blob(data=frame, mime_type="image/jpeg")
)JavaScript
session.sendRealtimeInput({
video: { data: frame.toString('base64'), mimeType: 'image/jpeg' }
});Receiving Audio and Text
> [!IMPORTANT]
> A single server event can contain multiple content parts simultaneously (e.g., audio chunks and transcript). Always process all parts in each event to avoid missing content.
Python
async for response in session.receive():
content = response.server_content
if content:
# Audio — process ALL parts in each event
if content.model_turn:
for part in content.model_turn.parts:
if part.inline_data:
audio_data = part.inline_data.data
# Transcription
if content.input_transcription:
print(f"User: {content.input_transcription.text}")
if content.output_transcription:
print(f"Gemini: {content.output_transcription.text}")
# Interruption
if content.interrupted is True:
pass # Stop playback, clear audio queueJavaScript
// Inside the onmessage callback
const content = response.serverContent;
if (content?.modelTurn?.parts) {
for (const part of content.modelTurn.parts) {
if (part.inlineData) {
const audioData = part.inlineData.data; // Base64 encoded
}
}
}
if (content?.inputTranscription) console.log('User:', content.inputTranscription.text);
if (content?.outputTranscription) console.log('Gemini:', content.outputTranscription.text);
if (content?.interrupted) { /* Stop playback, clear audio queue */ }---
Live Translation (Gemini Live Translate)
The Live API supports real-time, low-latency streaming translation of speech (audio) across 70+ languages. For full details on options and capabilities, see the [Live Translate Guide](https://ai.google.dev/gemini-api/docs/live-api/live-translate.md.txt).
Model
gemini-3.5-live-translate-preview— The recommended translation model for all Live Translate use cases.
Configuration (TranslationConfig)
To enable translation, specify a TranslationConfig object inside your live session setup:
- Python SDK: Configure the connection using
translation_configon `LiveConn
… (full content is in the download package)
Related skills
- gemini-omni-flash-api – Use this skill for generative video editing, text-to-video, image-referenced video…
- senior-fullstack – Fullstack development toolkit with project scaffolding for Next.js, FastAPI, MERN, and…
- gh-attach – Upload and download GitHub user-attachments (screenshots, PDFs, zips, videos) from the…
- gh-review-requests – Fetch unread GitHub notifications for open PRs where review is requested from a…
- gha-security-review – Review GitHub Actions workflows for exploitable vulnerabilities with concrete attack…
- git-advanced-workflows – Master advanced Git techniques to maintain clean history, collaborate effectively, and…
- git-commit-message – Generates conventional-commit messages from staged changes: type prefix + English…
- git-hooks-automation – Master Git hooks setup with Husky, lint-staged, pre-commit framework, and commitlint…