Инструкции

Gemini API: ключ Google, маршруты Zenith и расчёт стоимости

Ключ создаётся в Google AI Studio для связанного Google Cloud-проекта, а запросы отправляются в Gemini API. Native-маршрут Zenith использует отдельный ключ и базу https://api.zenithmarket.dev без /v1; это разные учётные записи и маршруты.

Ниже приведены документальные примеры Google и native-маршрута Zenith, пять SKU и расчёт для 4 000 входных и 800 выходных токенов. Генерация не запускалась. Значения Zenith — снимок полей GET /v1/models, полученный одним ключом 28.10.2026 в 20:23 UTC: это не текущий прайс и не проверка backend. Архив выбранных полей. Полный исходный ответ сохранён редакцией отдельно.

Как получить ключ Gemini API и настроить оплату

Для прямого доступа создайте ключ в AI Studio и настройте биллинг по инструкции Google. Переход с Free Tier требует связать платёжный аккаунт и внести минимум $5; ручное пополнение — от $5 до $5 000. При нулевом Prepay-балансе прекращают работать ключи всех связанных проектов, а запросы получают HTTP 402 до пополнения. Доступность модели и условия тарифа проверяйте для своего проекта.

В таблице Google для Gemini 3.1 Flash-Lite обычные входные и выходные токены в Free Tier указаны как бесплатные. Это не отменяет квот проекта, ограничений модели и возможной тарификации дополнительных функций; context caching в Free Tier недоступен. Лимиты включают RPM, входной TPM и RPD, причём RPD сбрасывается в полночь по Pacific. Лимит расходов может вернуть 429 RESOURCE_EXHAUSTED; новый ключ того же проекта квоту не увеличит. С 26.10.2026 новые платные проекты по умолчанию сохраняют запросы Generate Content API (store=true); для отдельных запросов можно указать store=false или отключить logging в Logs and Datasets. Настройки существующих проектов не меняются. Источники: тарифы, лимиты, изменения.

Откройте инструкцию Google по API keys и раздел API Keys в AI Studio. Выберите проект или импортируйте его через Dashboard → Projects → Import projects → Import. Затем откройте Dashboard → API Keys, создайте ключ для проекта и сохраните его в переменной окружения GEMINI_API_KEY либо защищённом хранилище.

Quickstart Google, сверенный 27.10.2026, показывает Python SDK и вызов Interactions API. Пример ниже документальный и не запускался; установка и доступность модели для конкретного ключа не проверялись. Установите SDK командой python -m pip install -U google-genai, сохраните пример как gemini_google.py и запустите python gemini_google.py. При выполнении ожидается текстовый ответ, но не обязательно ровно ok.

import getpass
import os
from google import genai

key = os.environ.get("GEMINI_API_KEY") or getpass.getpass("Google Gemini API key: ")
if not key:
    raise SystemExit("Ключ не введён")
client = genai.Client(api_key=key)
interaction = client.interactions.create(
    model="gemini-3.8-flash",
    input="Ответь ровно одним словом: ok",
)
print(interaction.output_text)
print("usage:", getattr(interaction, "usage", None))

Пять моделей Gemini: возможности и статус

Карточки прямых моделей Google для всех пяти перечисленных SKU указывают входы Text, Image, Video, Audio и PDF, текстовый выход, пределы 1 048 576 входных и 65 536 выходных токенов, а также function calling и structured outputs. Это спецификации Google, не подтверждение одноимённых SKU Zenith. Gemini 3.8 Flash (gemini-3.8-flash) стабильна; thinking — low, medium и high, но не minimal. Gemini 3.7 Flash (gemini-3.7-flash) deprecated: в AI Studio её нельзя выбрать, а запросы с этим ID автоматически направляются на 3.8 Flash. Gemini 3.6 Flash — предыдущая модель, доступная для production. Gemini 3.5 Flash-Lite и Gemini 3.1 Flash-Lite стабильны; computer use поддерживается у 3.5, но не у 3.1. Во всех пяти карточках image generation и Live API отмечены как неподдерживаемые. Источники: 3.8, 3.7, 3.6, 3.5 Flash-Lite и 3.1 Flash-Lite.

Каталог Zenith: отдельные ID и тарифы

SKU в GET /v1/models, снимок одного ключа 28.10.2026 20:23 UTC Endpoint types, metadata reasoningEffortModes, metadata Вход/выход, USD за миллион по полям microUSD
gemini-3.8-flash chat_completions, responses, gemini не перечислены 0,07 / 0,34
gemini-3.7-flash chat_completions, responses, gemini low, medium, high 0,07 / 0,34
gemini-3.6-flash chat_completions, responses, gemini minimal, low, medium, high 0,07 / 0,34
gemini-3.5-flash-lite chat_completions, responses, gemini не перечислены 0,027 / 0,23
gemini-3.1-flash-lite chat_completions, responses, gemini не перечислены 0,023 / 0,135

В read-only наблюдении native-каталога Zenith от 28.10.2026 получен HTTP 200: у всех пяти записей supportedGenerationMethods содержит generateContent и streamGenerateContent. Это метаданные одного ключа, а не результат генерации и не гарантия для других пользователей. Архив выбранных полей native-каталога.

SKU из native-каталога Изображение на входе JSON Schema Tools Методы, заявленные каталогом
gemini-3.8-flash не подтверждено не подтверждено не подтверждено generateContent, streamGenerateContent
gemini-3.7-flash не подтверждено не подтверждено не подтверждено generateContent, streamGenerateContent
gemini-3.6-flash не подтверждено не подтверждено не подтверждено generateContent, streamGenerateContent
gemini-3.5-flash-lite не подтверждено не подтверждено не подтверждено generateContent, streamGenerateContent
gemini-3.1-flash-lite не подтверждено не подтверждено не подтверждено generateContent, streamGenerateContent

Документация Zenith направляет за ключом в Telegram-бот сервиса и указывает внутренний баланс Zenith. Условия получения ключа и доступные способы оплаты уточняйте у сервиса.

Первый native-запрос через Zenith

Сохраните код как gemini_zenith.py и при необходимости запустите python gemini_zenith.py. Он документирует чтение объекта каталога с массивом models через x-goog-api-key, проверку выбранного ID и POST на generateContent. Запуск не выполнялся. При действующем ключе и доступном SKU ожидается JSON-объект с массивом candidates, текстом в content.parts[].text и, если поле присутствует, usageMetadata; это ожидаемый формат, а не подтверждённый результат.

import getpass
import json
import urllib.error
import urllib.parse
import urllib.request

key = getpass.getpass("Zenith API key: ").strip()
if not key:
    raise SystemExit("Ключ не введён")
base = "https://api.zenithmarket.dev"
headers = {
    "User-Agent": "Comrad404SourceReview/1.0",
    "x-goog-api-key": key,
    "Content-Type": "application/json",
}

try:
    request = urllib.request.Request(base + "/v1beta/models", headers=headers)
    with urllib.request.urlopen(request, timeout=30) as response:
        catalog = json.load(response)
    if not isinstance(catalog, dict) or not isinstance(catalog.get("models"), list):
        raise ValueError("Ожидался объект с массивом models")

    names = []
    for row in catalog["models"]:
        if not isinstance(row, dict):
            continue
        name = row.get("baseModelId")
        if not isinstance(name, str):
            name = row.get("name")
        if isinstance(name, str):
            names.append(name.removeprefix("models/"))
    print("ID в каталоге:", names)
    model = (input("ID [gemini-3.8-flash]: ").strip() or "gemini-3.8-flash").removeprefix("models/")
    if model not in names:
        raise SystemExit("ID отсутствует в полученном каталоге")

    url = base + "/v1beta/models/" + urllib.parse.quote(model, safe="") + ":generateContent"
    payload = {"contents": [{"role": "user", "parts": [{"text": "Ответь ровно одним словом: ok"}]}]}
    request = urllib.request.Request(url, data=json.dumps(payload).encode("utf-8"), headers=headers, method="POST")
    with urllib.request.urlopen(request, timeout=60) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    detail = error.read().decode("utf-8", errors="replace").replace(key, "[REDACTED]")[:1200]
    print("HTTP", error.code, detail)
    raise SystemExit(1)
except (urllib.error.URLError, TimeoutError, json.JSONDecodeError, ValueError) as error:
    print("Ошибка запроса или формата:", str(error).replace(key, "[REDACTED]")[:1200])
    raise SystemExit(1)

if not isinstance(result, dict):
    raise SystemExit("Ответ генерации не является JSON-объектом")
candidates = result.get("candidates")
if not isinstance(candidates, list):
    raise SystemExit("В ответе нет массива candidates")
texts = []
for candidate in candidates:
    if not isinstance(candidate, dict):
        continue
    content = candidate.get("content")
    if not isinstance(content, dict) or not isinstance(content.get("parts"), list):
        continue
    for part in content["parts"]:
        if isinstance(part, dict) and isinstance(part.get("text"), str):
            texts.append(part["text"])
if not texts:
    raise SystemExit("В candidates не найден текст content.parts[].text")
print("\n".join(texts))
print("usageMetadata:", result.get("usageMetadata"))

Ошибки ключа, квоты и формат запроса

Ситуация Действие
Клиент использует OpenAI Chat Completions Документация Zenith указывает базу https://api.zenithmarket.dev/v1 и схему messages; native contents не переносится механически
Каталог вернул models/ID Удалите префикс models/ перед вставкой в путь
Отказ ключа Проверьте домен и владельца ключа; не выводите секрет в лог
Google HTTP 402 Проверьте Prepay: при нулевом балансе останавливаются ключи связанных проектов
Google 429 RESOURCE_EXHAUSTED Проверьте RPM/TPM/RPD проекта и тело ответа; новый ключ того же проекта квоту не увеличит
Тайм-аут Проверьте историю соответствующего провайдера до повтора
Официальный Google ID Gemini 3.7 Flash Google направляет его на 3.8 Flash; одноимённый SKU Zenith не подтверждает такой маршрут

Стоимость 4 000 входных и 800 выходных токенов

По Standard Paid ставкам Google для Gemini 3.8 Flash до 31.12.2026: $0,75 за миллион входных и $3,75 за миллион выходных токенов. Для 4 000/800: 4000 × 0,75 / 1000000 + 800 × 3,75 / 1000000 = $0,006 за запрос, или $60 за 10 000. Расчёт не включает кэширование, Batch, инструменты и другие функции.

SKU, отдельный GET /v1/models; metadata одного ключа, 28.10.2026 20:23 UTC Расчётная сумма за запрос, USD За 10 000 запросов, USD
gemini-3.8-flash 0,000552 5,52
gemini-3.7-flash, backend неизвестен 0,000552 5,52
gemini-3.6-flash 0,000552 5,52
gemini-3.5-flash-lite 0,000292 2,92
gemini-3.1-flash-lite 0,000200 2,00

По Standard Paid ставкам Google с 01.01.2027 для тех же объёмов: 0,004 млн × $1,50 + 0,0008 млн × $7,50 = $0,012 за запрос, или $120 за 10 000. Это будущий расчёт без дополнительных тарифицируемых функций.