Документация 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
}'Эмбеддинги
Векторные представления текста в формате 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)Генерация изображений
Синхронная генерация изображений. Обязательные поля — 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 }
}Генерация видео
Асинхронная генерация видео. Запрос принимает 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"
}
}