Документация API429

Ниже — клиентская документация API429: как получить список моделей, отправить LLM-запрос, сгенерировать изображение и проверить текущий баланс токена.

Playground + Swagger

Интерактивный playground и Swagger только для клиентских API

Для быстрого старта используйте playground для live-запросов и отдельный Swagger для схем, параметров и клиентской OpenAPI-спецификации.

Что внутри

Только клиентские endpoints, схемы запросов, ответы и code samples по языкам.

Playground

Можно выполнять запросы прямо из браузера со своим Bearer-токеном.

Источник данных

Swagger и playground строятся по отдельной публичной спецификации без служебных и внутренних маршрутов.

1. Base URL и авторизация

Канонический base URL для клиентских запросов: https://balancer.api429.com/v1. Для всех запросов используйте Bearer-токен в заголовке Authorization.

Проверка токена и каталога моделей
curl https://balancer.api429.com/v1/models \
  -H "Authorization: Bearer ВАШ_ТОКЕН"

2. Список моделей: /v1/models

Перед первым интеграционным вызовом получайте список доступных моделей именно своим токеном. Не опирайтесь на ручной список в документации как на единственный источник истины.

Получение списка моделей
curl https://balancer.api429.com/v1/models \
  -H "Authorization: Bearer ВАШ_ТОКЕН"

3. Каноническая система названий параметров

Канонический стиль именования в API429 — snake_case. Для image-роута дополнительно поддерживаются compatibility aliases в camelCase.

Image generation: canonical

  • aspect_ratio
  • resolution
  • response_format
  • reference_images
  • negative_prompt
  • google_search
  • safety_settings
  • project_id
  • veon_model_key

Image generation: compatibility aliases

  • aspectRatio
  • imageSize
  • responseFormat
  • referenceImages
  • negativePrompt
  • googleSearch
  • safetySettings
  • projectId
  • veonModelKey

LLM / chat: canonical only

  • messages
  • model
  • temperature
  • stream
  • max_tokens
  • top_p
  • top_k
  • stop
  • tools
  • tool_choice
  • response_format
  • reasoning_effort
  • response_modalities
  • thinking_level
  • safety_settings

Для Gemini-ориентированных chat-сценариев на /v1/chat/completions дополнительно поддерживаются compatibility aliases:

  • responseModalities
  • thinkingLevel
  • safetySettings

Для chat-маршрутов не рассчитывайте на camelCase-поля. Следующие варианты сейчас не нормализуются и могут быть проигнорированы:

  • maxTokens
  • topP
  • toolChoice
  • responseFormat
  • reasoningEffort

4. LLM генерация: /v1/chat/completions

Основной текстовый endpoint совместим с OpenAI-style chat API. Используйте messages, model и дополнительные canonical поля в snake_case.

LLM запрос через curl
curl -X POST https://balancer.api429.com/v1/chat/completions \
  -H "Authorization: Bearer ВАШ_ТОКЕН" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-3.1-pro",
    "messages": [
      {"role": "user", "content": "Кратко объясни, как подключиться к API429."}
    ],
    "responseModalities": ["TEXT"],
    "thinkingLevel": "HIGH",
    "safetySettings": [
      {"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_NONE"}
    ],
    "temperature": 0.3,
    "max_tokens": 300
  }'
LLM запрос на Python
import requests

url = "https://balancer.api429.com/v1/chat/completions"
headers = {
    "Authorization": "Bearer ВАШ_ТОКЕН",
    "Content-Type": "application/json"
}
payload = {
    "model": "gemini-3.1-pro",
    "messages": [
        {"role": "user", "content": "Напиши короткий onboarding для клиента."}
    ],
    "responseModalities": ["TEXT"],
    "thinkingLevel": "MINIMAL",
    "safetySettings": [
        {"category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_NONE"}
    ],
    "temperature": 0.2,
    "max_tokens": 200
}

response = requests.post(url, headers=headers, json=payload, timeout=180)
print(response.json())

Gemini-native protocol

Для native Gemini protocol структура остаётся нативной: generationConfig.responseModalities, generationConfig.thinkingConfig и top-level safetySettings .

Gemini-native example
{
  "contents": [
    {
      "role": "user",
      "parts": [{"text": "Describe this concept briefly."}]
    }
  ],
  "generationConfig": {
    "responseModalities": ["TEXT", "IMAGE"],
    "thinkingConfig": {"thinkingLevel": "HIGH"}
  },
  "safetySettings": [
    {"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_NONE"}
  ]
}

5. Image generation: /v1/images/generations

Для изображений используйте /v1/images/generations. Канонический стиль — snake_case, но для image-роута дополнительно поддерживаются camelCase aliases.

Image generation через curl
curl -X POST https://balancer.api429.com/v1/images/generations \
  -H "Authorization: Bearer ВАШ_ТОКЕН" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "nano-banana-pro",
    "prompt": "Футуристический мегаполис ночью, cinematic lighting",
    "aspect_ratio": "16:9",
    "resolution": "2K",
    "response_format": "b64_json"
  }'
Image generation на Python
import requests

url = "https://balancer.api429.com/v1/images/generations"
headers = {
    "Authorization": "Bearer ВАШ_ТОКЕН",
    "Content-Type": "application/json"
}
payload = {
    "model": "nano-banana-pro",
    "prompt": "Футуристический мегаполис ночью, cinematic lighting",
    "aspect_ratio": "16:9",
    "resolution": "2K",
    "response_format": "b64_json"
}

response = requests.post(url, headers=headers, json=payload, timeout=300)
result = response.json()
print(result)

6. Проверка баланса: /api/client/balance

Если вам нужно проверить доступный баланс токена перед серией запросов, используйте отдельный client endpoint.

Проверка баланса
curl https://balancer.api429.com/api/client/balance \
  -H "Authorization: Bearer ВАШ_ТОКЕН"

7. Частые ошибки

401 Unauthorized

Токен не передан или передан неверно. Проверьте заголовок Authorization: Bearer ....

402 Insufficient Balance

Недостаточно средств на клиентском балансе.

422 Validation Error

Неверная структура JSON или неверные типы данных. На chat-роутах особенно проверьте, что вы используете canonical snake_case поля.

429 Too Many Requests

Превышение лимитов или burst-нагрузка. Используйте retry с exponential backoff.

503 Service Unavailable

Временная проблема с маршрутом, моделью или текущей доступностью сервиса. Повторите запрос через несколько секунд.

8. Практические рекомендации

9. Поддержка

Если вы упёрлись в нестандартную ситуацию, пришлите нам конкретный запрос, endpoint и model id — так можно быстро проверить маршрутизацию и параметры без долгого пинга в переписке.

@gangoneog в Telegram
Telegram