Документация API
Начало работы
Infergate предоставляет единый OpenAI-совместимый API к каталогу моделей. Базовый адрес — https://infergate.ru/api/v1. Если ваш код уже работает с OpenAI SDK, достаточно поменять base_url и ключ.
Оплата — по факту использования с рублёвого баланса; цена запроса считается по токенам по опубликованным ценам каталога.
from openai import OpenAI
client = OpenAI(
base_url="https://infergate.ru/api/v1",
api_key="sk-...",
)
resp = client.chat.completions.create(
model="openai/gpt-4o-mini",
messages=[{"role": "user", "content": "Привет!"}],
)
print(resp.choices[0].message.content)Аутентификация
Все запросы к /api/v1 авторизуются API-ключом в заголовке Authorization: Bearer. Ключи создаются в личном кабинете (раздел «API-ключи»); значение ключа показывается один раз при создании.
Повторную отправку одного и того же запроса можно сделать безопасной идемпотентным заголовком Idempotency-Key: повтор с тем же ключом и телом вернёт сохранённый ответ без повторного списания.
curl https://infergate.ru/api/v1/models \ -H "Authorization: Bearer sk-..."
Список моделей
Возвращает доступные модели в формате OpenAI (object=list). Идентификаторы моделей используются в поле model остальных эндпоинтов, например anthropic/claude-opus-4.8.
curl https://infergate.ru/api/v1/models \ -H "Authorization: Bearer sk-..."
Чат-комплишены
Основной эндпоинт генерации в формате OpenAI Chat Completions. Поддерживает стриминг (stream: true, ответ приходит как Server-Sent Events), инструменты (tools), мультимодальный ввод и ограничение ответа через max_tokens.
Если max_tokens не указан, применяется ограничение по умолчанию — оно же резервирует средства на балансе на время запроса; после ответа списывается фактическая стоимость по usage.
curl https://infergate.ru/api/v1/chat/completions \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-4o-mini",
"messages": [{"role": "user", "content": "Hello!"}],
"stream": false,
"max_tokens": 500
}'Cursor IDE
Выделенная поверхность для редактора Cursor: она принимает запросы в формате Cursor (включая его плоский формат tools) и проксирует их через специальный нормализующий эндпоинт вышестоящего провайдера. Обычный /api/v1 для Cursor не подходит — на нём ломаются вызовы инструментов.
Настройка в Cursor: Settings → Models → API Keys → включите OpenAI API Key, вставьте ключ Infergate (sk-…) и укажите Override OpenAI Base URL: https://infergate.ru/api/v1/cursor — путь /chat/completions Cursor допишет сам. Модели добавляйте по точным идентификаторам каталога (например, openai/gpt-4o).
Биллинг, лимиты и стриминг — те же, что у /chat/completions; в статистике такие запросы помечаются endpoint = cursor.
OpenAI API Key: sk-... # ваш ключ Infergate / your Infergate key Override OpenAI Base URL: https://infergate.ru/api/v1/cursor
Эмбеддинги
Векторные представления текста в формате OpenAI Embeddings. Модель должна быть эмбеддинговой (kind=embedding в каталоге); оплата считается по входным токенам.
curl https://infergate.ru/api/v1/embeddings \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" \
-d '{
"model": "openai/text-embedding-3-small",
"input": "Съешь ещё этих мягких французских булок"
}'Anthropic Messages
Anthropic-совместимый эндпоинт: тот же формат, что у Anthropic Messages API, включая system, content-блоки и стриминг. Удобен, если ваш код написан под Anthropic SDK — поменяйте базовый адрес и ключ.
Поле max_tokens обязательно, как и в оригинальном API.
curl https://infergate.ru/api/v1/messages \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" \
-d '{
"model": "anthropic/claude-opus-4.8",
"max_tokens": 500,
"messages": [{"role": "user", "content": "Hello!"}]
}'Responses API
OpenAI Responses API — новый формат, на который переходят свежие OpenAI SDK (client.responses.create). Вход — строка или массив типизированных сообщений (input), ограничение ответа — max_output_tokens, стриминг — семантические SSE-события.
Эндпоинт stateless: состояние диалога не хранится, историю передавайте целиком в каждом запросе.
curl https://infergate.ru/api/v1/responses \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-4o-mini",
"input": "Hello!",
"max_output_tokens": 500
}'resp = client.responses.create(
model="openai/gpt-4o-mini",
input="Hello!",
max_output_tokens=500,
)
print(resp.output_text)Модели изображений
Возвращает модели, умеющие выводить изображения (image в output_modalities каталога) — ровно те, которые принимает POST /api/v1/images. Конверт тот же, что у /models (object=list); дополнительно у каждой модели есть input_modalities, output_modalities и supported_parameters — параметры, о поддержке которых сообщил вендор (aspect_ratio, size, n, seed, input_references и т. д.). Конкретные допустимые значения (например, список разрешений) каталог не хранит.
Цены — в рублях с вашей наценкой по текущему курсу: prompt/completion за 1M токенов, а для моделей с ручной ценой за единицу — блок media_price (₽ за изображение). Списывается фактическая стоимость генерации.
curl https://infergate.ru/api/v1/images/models \ -H "Authorization: Bearer sk-..."
{
"object": "list",
"data": [
{
"id": "google/gemini-2.5-flash-image",
"object": "model",
"owned_by": "google",
"kind": "generative",
"input_modalities": ["text", "image"],
"output_modalities": ["image"],
"supported_parameters": ["aspect_ratio", "n", "seed", "input_references"],
"pricing": { "currency": "RUB", "prompt": "24.5", "completion": "196" }
}
]
}Генерация изображений
Синхронная генерация изображений. Обязательные поля — model и prompt; опционально aspect_ratio, size, quality, output_format, n (1–10), seed и input_references для редактирования по образцу. Модель должна поддерживать вывод изображений (image в output_modalities каталога).
Ответ приходит одним JSON: data — массив изображений в base64 (b64_json), usage.cost — фактическая стоимость запроса, которая и списывается с баланса (с учётом курса и наценки).
curl https://infergate.ru/api/v1/images \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" \
-d '{
"model": "google/gemini-2.5-flash-image",
"prompt": "A watercolor fox in a snowy forest",
"n": 1
}'{
"created": 1727000000,
"data": [{ "b64_json": "iVBORw0KGgo...", "media_type": "image/png" }],
"usage": { "prompt_tokens": 11, "completion_tokens": 1290, "total_tokens": 1301, "cost": 0.039 }
}Модели видео
Возвращает модели, умеющие выводить видео (video в output_modalities каталога) — ровно те, которые принимает POST /api/v1/videos. Конверт тот же, что у /models (object=list); дополнительно — input_modalities, output_modalities и supported_parameters (duration, resolution, aspect_ratio, seed и т. д. — то, о чём сообщил вендор). Допустимые значения длительностей и разрешений каталог не хранит, поэтому в ответе их нет.
Если для модели заведена ручная цена за единицу, она приходит в media_price (например, ₽ за секунду) — это ориентир для оценки и размера резерва; списывается фактическая стоимость задачи.
curl https://infergate.ru/api/v1/videos/models \ -H "Authorization: Bearer sk-..."
{
"object": "list",
"data": [
{
"id": "google/veo-3",
"object": "model",
"owned_by": "google",
"kind": "generative",
"input_modalities": ["text", "image"],
"output_modalities": ["video"],
"supported_parameters": ["duration", "resolution", "aspect_ratio", "seed"],
"pricing": { "currency": "RUB" },
"media_price": { "currency": "RUB", "unit": "second", "per_unit": "55" }
}
]
}Генерация видео
Асинхронная генерация видео. Запрос принимает model и prompt, а также необязательные duration (секунды), resolution, aspect_ratio, size, generate_audio, seed, frame_images (первый/последний кадр) и input_references — они передаются модели как есть.
Ответ — 202 Accepted с id задачи и polling_url. Видео генерируется в фоне: опрашивайте polling_url до статуса completed, затем скачайте файл по ссылке из unsigned_urls. На время генерации на балансе резервируется сумма по цене модели; после завершения списывается фактическая стоимость, при ошибке резерв возвращается полностью.
curl https://infergate.ru/api/v1/videos \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" \
-d '{
"model": "google/veo-3",
"prompt": "A cat surfing a wave at sunset",
"duration": 8
}'{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"polling_url": "https://infergate.ru/api/v1/videos/3fa85f64-5717-4562-b3fc-2c963f66afa6",
"status": "pending"
}Статус видео
Опрос задачи генерации по id из ответа на создание. Доступен только API-ключу, которым была создана задача. Возможные статусы: pending/processing — генерация идёт (повторите запрос через несколько секунд), completed — готово (в unsigned_urls появится ссылка на скачивание), failed/cancelled/expired — задача завершилась без результата (поле error содержит причину, средства не списываются).
Стоимость списывается один раз при первом опросе, увидевшем completed; повторные опросы безопасны.
curl https://infergate.ru/api/v1/videos/3fa85f64-5717-4562-b3fc-2c963f66afa6 \ -H "Authorization: Bearer sk-..."
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"status": "completed",
"unsigned_urls": ["https://infergate.ru/api/v1/videos/3fa85f64-5717-4562-b3fc-2c963f66afa6/content?index=0"]
}Скачивание видео
Скачивает готовый ролик (MP4) завершённой задачи. Параметр index выбирает файл, когда их несколько (по умолчанию 0). Доступен только ключу-владельцу задачи; ссылка возвращается в unsigned_urls при статусе completed.
curl -o video.mp4 "https://infergate.ru/api/v1/videos/3fa85f64-5717-4562-b3fc-2c963f66afa6/content?index=0" \ -H "Authorization: Bearer sk-..."
Ошибки
Ошибки возвращаются в OpenAI-совместимом конверте {"error": {"message", "type", "code"}}. Основные статусы: 401 — неверный или отключённый ключ; 402 — недостаточно средств или исчерпан лимит ключа (code=insufficient_balance); 403 — аккаунт деактивирован; 404 — неизвестная модель; 422 — некорректные параметры (например, max_tokens); 5xx — временная недоступность, повторите запрос.
{
"error": {
"message": "Insufficient balance or key limit to serve this request.",
"type": "insufficient_quota",
"code": "insufficient_balance"
}
}