Эфемерные токены — это краткосрочные токены аутентификации для доступа к API Gemini через WebSockets . Они предназначены для повышения безопасности при прямом подключении к API с устройства пользователя ( клиент-серверная реализация). Как и стандартные ключи API, эфемерные токены можно извлекать из клиентских приложений, таких как веб-браузеры или мобильные приложения. Однако, поскольку эфемерные токены быстро истекают и их использование можно ограничить, они значительно снижают риски безопасности в производственной среде.
Как работают эфемерные токены
Вот как работают эфемерные токены на высоком уровне:
- Ваш клиент (например, веб-приложение) аутентифицируется на вашем бэкэнде.
- Ваш бэкэнд запрашивает эфемерный токен у службы обеспечения Gemini API.
- Gemini API выпускает краткосрочный токен.
- Ваш бэкенд отправляет токен клиенту для подключения к Live API по WebSocket. Вы можете сделать это, заменив свой ключ API на временный токен.
- Затем клиент использует токен как ключ API.

Это повышает безопасность, поскольку даже после извлечения токен имеет короткий срок службы, в отличие от долгосрочного API-ключа, развёрнутого на стороне клиента. Поскольку клиент отправляет данные непосредственно в Gemini, это также уменьшает задержку и избавляет ваши бэкенды от необходимости проксировать данные в режиме реального времени.
Создать эфемерный токен
 Вот упрощённый пример получения эфемерного токена от Gemini. По умолчанию у вас будет 1 минута для запуска новых сеансов Live API с использованием токена из этого запроса ( newSessionExpireTime ) и 30 минут для отправки сообщений по этому соединению ( expireTime ). 
Питон
import datetime
now = datetime.datetime.now(tz=datetime.timezone.utc)
client = genai.Client(
    http_options={'api_version': 'v1alpha',}
)
token = client.auth_tokens.create(
    config = {
    'uses': 1, # The ephemeral token can only be used to start a single session
    'expire_time': now + datetime.timedelta(minutes=30), # Default is 30 minutes in the future
    # 'expire_time': '2025-05-17T00:00:00Z',   # Accepts isoformat.
    'new_session_expire_time': now + datetime.timedelta(minutes=1), # Default 1 minute in the future
    'http_options': {'api_version': 'v1alpha'},
  }
)
# You'll need to pass the value under token.name back to your client to use it
JavaScript
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
const expireTime = new Date(Date.now() + 30 * 60 * 1000).toISOString();
  const token: AuthToken = await client.authTokens.create({
    config: {
      uses: 1, // The default
      expireTime: expireTime // Default is 30 mins
      newSessionExpireTime: new Date(Date.now() + (1 * 60 * 1000)), // Default 1 minute in the future
      httpOptions: {apiVersion: 'v1alpha'},
    },
  });
 Сведения об ограничениях значения expireTime , значениях по умолчанию и других спецификациях полей см. в справочнике API . В течение периода expireTime вам потребуется sessionResumption для повторного подключения вызова каждые 10 минут (это можно сделать с тем же токеном, даже если uses: 1 ).
Также можно привязать эфемерный токен к набору конфигураций. Это может быть полезно для дальнейшего повышения безопасности вашего приложения и сохранения системных инструкций на стороне сервера.
Питон
client = genai.Client(
    http_options={'api_version': 'v1alpha',}
)
token = client.auth_tokens.create(
    config = {
    'uses': 1,
    'live_connect_constraints': {
        'model': 'gemini-2.0-flash-live-001',
        'config': {
            'session_resumption':{},
            'temperature':0.7,
            'response_modalities':['TEXT']
        }
    },
    'http_options': {'api_version': 'v1alpha'},
    }
)
# You'll need to pass the value under token.name back to your client to use it
JavaScript
import { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({});
const expireTime = new Date(Date.now() + 30 * 60 * 1000).toISOString();
const token = await client.authTokens.create({
    config: {
        uses: 1, // The default
        expireTime: expireTime,
        liveConnectConstraints: {
            model: 'gemini-2.0-flash-live-001',
            config: {
                sessionResumption: {},
                temperature: 0.7,
                responseModalities: ['TEXT']
            }
        },
        httpOptions: {
            apiVersion: 'v1alpha'
        }
    }
});
// You'll need to pass the value under token.name back to your client to use it
Вы также можете заблокировать подмножество полей. Подробнее см. документацию SDK .
Подключитесь к Live API с помощью эфемерного токена
 Получив временный токен, вы можете использовать его так, как если бы это был ключ API (но помните, что он работает только для действующего API и только с версией API v1alpha ).
Обратите внимание, что использование эфемерных токенов имеет ценность только при развертывании приложений, реализующих подход «клиент-сервер» .
JavaScript
import { GoogleGenAI, Modality } from '@google/genai';
// Use the token generated in the "Create an ephemeral token" section here
const ai = new GoogleGenAI({
  apiKey: token.name
});
const model = 'gemini-2.0-flash-live-001';
const config = { responseModalities: [Modality.TEXT] };
async function main() {
  const session = await ai.live.connect({
    model: model,
    config: config,
    callbacks: { ... },
  });
  // Send content...
  session.close();
}
main();
Дополнительные примеры см. в разделе Начало работы с Live API .
Лучшие практики
-  Установите короткий срок действия с помощью параметра expire_time.
- Срок действия токенов истекает, что требует повторной инициализации процесса предоставления.
- Проверьте безопасность аутентификации для вашего бэкенда. Эфемерные токены будут настолько же безопасны, насколько безопасен ваш метод аутентификации.
- Как правило, следует избегать использования временных токенов для соединений между сервером и Gemini, поскольку этот путь обычно считается безопасным.
Ограничения
В настоящее время эфемерные токены совместимы только с Live API .
Что дальше?
- Для получения более подробной информации ознакомьтесь со справочником Live API по эфемерным токенам.