Нативный API Gemini
Вызывайте Gemini 4 Argon, Gemini 3.8 Flash и Gemini 3.1 Pro запросами Gemini generateContent с одним ключом BeatAPI.
- Для всех актуальных моделей Gemini:
POST /v1beta/models/{model}:generateContent, а для потоковой передачи —:streamGenerateContent?alt=sse. - Текст и изображения на входе, текст на выходе, потоковая передача, вызовы функций и рассуждения.
- Передавайте ключ в заголовке
x-goog-api-keyлибо как токен Bearer. - Модель указывается в URL, а не в теле запроса.
Для текстовых запросов используйте базовый URL https://direct.beatapi.io. Этот адрес не ограничен 100-секундным тайм-аутом Cloudflare, который может прервать долгий запрос без потоковой передачи. Если ваша сеть не может подключиться к нему, используйте https://api.beatapi.io. Ключи, модели и цены одинаковы. API изображений и видео используют только https://api.beatapi.io.
Открывает эндпоинт в API Explorer. Если ввести ключ BeatAPI и отправить запрос, будет выполнен реальный вызов с оплатой из вашего баланса.
Модели
Подставьте один из этих ID в URL вместо {model}.
- Указаны базовые цены со скидкой. Не включены тарифы для длинного контекста, кэшированного ввода и записи в кэш. См. страницу цен.
—означает, что каталог не публикует это значение.
Старые ID этого семейства остаются доступны. См. старые модели.
Быстрый старт
Храните ключ в BEATAPI_API_KEY и не помещайте его в код браузерного приложения. ID модели указывается в URL, поэтому в теле нет поля model. Ниже показаны примеры запросов, а не записанные ответы модели.
Прочитайте ответ в candidates[0].content.parts[0].text, затем проверьте candidates[0].finishReason и usageMetadata. Сам по себе HTTP 200 не означает, что ответ решает вашу задачу: проверяйте результат в приложении. Текстовые запросы возвращают ответ напрямую; опрашивать /v1/tasks для них не нужно.
Эндпоинт и аутентификация
POST https://direct.beatapi.io/v1beta/models/{model}:generateContent
x-goog-api-key
string
Обязательно
Передайте ключ BeatAPI в заголовке x-goog-api-key. Также поддерживается Authorization: Bearer <BEATAPI_API_KEY>.
Для потоковой передачи используйте POST /v1beta/models/{model}:streamGenerateContent?alt=sse. Ключ можно передать в x-goog-api-key или в Authorization: Bearer <key>: работают оба варианта.
:countTokens недоступен и возвращает 404.
Параметры запроса
Перечислены поля, которые действительно влияют на запрос. Остальные поля Gemini принимаются, но не действуют: generationConfig.thinkingConfig, generationConfig.responseMimeType, generationConfig.responseSchema, generationConfig.seed, safetySettings, toolConfig и cachedContent. Не полагайтесь на них.
contents
object[]
Обязательно
История диалога, от самого раннего хода к последнему. У каждого элемента есть role (user или model) и parts. Части могут иметь тип text, inlineData (mimeType и base64 data), fileData (mimeType и fileUri), functionCall или functionResponse.
- Все актуальные модели Gemini поддерживают изображения на входе: используйте
inlineDataилиfileDataсо ссылкой на изображение. Для других медиа сначала проверьте нужный тип файла, прежде чем полагаться на него в приложении. - Пустой или отсутствующий
contentsприводит к400 bad_request.
Пример
systemInstruction
object
Необязательно
Системный промпт в формате { "parts": [{ "text": "..." }] }. Используются только части text.
Пример
generationConfig
object
Необязательно
Параметры генерации. Действуют следующие вложенные поля: maxOutputTokens, temperature, topP, topK, stopSequences и candidateCount.
Пример
generationConfig.maxOutputTokens
integer
Необязательно
Максимальное число генерируемых токенов, включая рассуждения.
- Максимально допустимое значение — 1 073 741 823; превышение возвращает
400 bad_request. При этом не превышайте максимальный объём вывода модели из таблицы выше. - Модели Gemini рассуждают по умолчанию. Токены рассуждений оплачиваются как выходные и входят в этот лимит. Маленький лимит может быть полностью потрачен на рассуждения: ответ окажется пустым, а
finishReason— равным"MAX_TOKENS". Для короткого ответа оставляйте не менее 1 000 токенов. maxOutputTokensтакже используется для оценки необходимого баланса. Слишком большое значение может привести к402 insufficient_credits, даже если фактический ответ был бы коротким. Указывайте столько токенов, сколько требуется задаче.
generationConfig.temperature
number
Необязательно
Температура семплирования.
generationConfig.topP
number
Необязательно
Выборка по ядру (nucleus sampling). Значение 0 игнорируется.
generationConfig.topK
integer
Необязательно
Выборка Top-K. Значение 0 игнорируется.
generationConfig.stopSequences
string[]
Необязательно
Строки, при обнаружении которых генерация останавливается. Используется не более 4 строк.
generationConfig.candidateCount
integer
Необязательно
Число возвращаемых вариантов ответа. Не задавайте, если нужен только один.
tools
object[]
Необязательно
Объявления функций, которые может вызвать модель, в формате [{ "functionDeclarations": [...] }]. У каждого объявления есть name, description и parameters (JSON Schema). Вызов возвращается частью functionCall; передайте результат частью functionResponse в следующем ходе user.
- Используются только
functionDeclarations. Встроенные инструменты, напримерgoogleSearchиcodeExecution, игнорируются.
Пример
Ответ
Без потоковой передачи запрос возвращает один JSON-объект. Ниже приведён сокращённый пример.
Поля ответа
Потоковая передача
Вызовите :streamGenerateContent?alt=sse. Каждое событие — строка data: {...} с объектом candidates в том же формате, что и ответ без потоковой передачи.
- Последнее событие содержит
finishReason, например"STOP". - Тип ответа —
text/event-stream. Ошибка до вызова модели возвращается обычным JSON-ответом с HTTP-кодом, а не событием потока. - Явно задайте тайм-ауты и предусмотрите безопасное восстановление соединения при потоковой передаче.
Устранение ошибок
Обзор HTTP-ошибок
Нативные эндпоинты Gemini возвращают ошибки в формате {"error": {"message", "type": "beatapi_error", "code"}}. Код находится в error.code, ID запроса — в конце message. Поля retryable нет. См. ошибки.
Все коды и правила повторных запросов: ошибки.
Примечания
- Модели Gemini также доступны через Chat Completions, Responses и Anthropic Messages. См. другие страницы Gemini.
- Токены рассуждений оплачиваются как выходные. Оставляйте лимит и для рассуждений, и для ответа, а не только для видимого ответа.
- Храните ключи на доверенных серверах, записывайте ID запроса из ответа и повторяйте запросы только при ошибках
429,500и503.
Аутентификация
Передавайте API-ключ в виде Authorization: Bearer <BEATAPI_API_KEY>.
Параметры пути
Запрос
История диалога, от самого раннего хода к последнему. У каждого элемента есть role (user или model) и parts. Части могут иметь тип text, inlineData (mimeType и base64 data), fileData (mimeType и fileUri), functionCall или functionResponse.
Все актуальные модели Gemini поддерживают изображения на входе: используйте inlineData или fileData со ссылкой на изображение. Для других медиа сначала проверьте нужный тип файла, прежде чем полагаться на него в приложении.
Пустой или отсутствующий contents приводит к 400 bad_request.
Системный промпт в формате { "parts": [{ "text": "..." }] }. Используются только части text.
Параметры генерации. Действуют следующие вложенные поля: maxOutputTokens, temperature, topP, topK, stopSequences и candidateCount.
Объявления функций, которые может вызвать модель, в формате [{ "functionDeclarations": [...] }]. У каждого объявления есть name, description и parameters (JSON Schema). Вызов возвращается частью functionCall; передайте результат частью functionResponse в следующем ходе user.
Используются только functionDeclarations. Встроенные инструменты, например googleSearch и codeExecution, игнорируются.
Ответ
Без потоковой передачи запрос возвращает один JSON-объект. Ниже приведён сокращённый пример.

