Документация
API для текстовых моделей совместим с OpenAI Chat Completions: подойдут официальные SDK OpenAI, LangChain и любые клиенты, где можно указать base_url. Базовый адрес:
https://inference.place/api/v1Авторизация
Создайте ключ в разделе API-ключи и передавайте его в заголовке:
Authorization: Bearer sk-ip-...Текстовые модели
POST /chat/completions. Идентификатор модели — из каталога. Поддерживаются стандартные параметры OpenAI: temperature, max_tokens, tools, response_format и другие.
curl https://inference.place/api/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-4o-mini",
"messages": [{"role": "user", "content": "Привет!"}]
}'from openai import OpenAI
client = OpenAI(base_url="https://inference.place/api/v1", api_key="sk-ip-...")
resp = client.chat.completions.create(
model="anthropic/claude-sonnet-4.5",
messages=[{"role": "user", "content": "Объясни квантовую запутанность простыми словами"}],
)
print(resp.choices[0].message.content)
print(resp.usage) # prompt_tokens, completion_tokens, cost_rubimport OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://inference.place/api/v1", apiKey: process.env.API_KEY });
const resp = await client.chat.completions.create({
model: "google/gemini-2.5-flash",
messages: [{ role: "user", content: "Напиши хайку про осень" }],
});В объекте usage ответа поле cost_rub — сумма, списанная с баланса за запрос.
Стриминг
Передайте "stream": true — ответ придёт в формате Server-Sent Events, как у OpenAI. Последний чанк содержит usage со стоимостью.
stream = client.chat.completions.create(
model="deepseek/deepseek-chat",
messages=[{"role": "user", "content": "Расскажи историю"}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")Картинки через чат
Часть моделей умеет рисовать прямо в чате: Nano Banana и другие Gemini Image, GPT Image. В каталоге они отмечены как «Мультимодальные (через чат)». Вызываются обычным /chat/completions с параметром modalities. Картинка приходит в choices[0].message.images в виде data-URL (base64), стоимость — как обычно в usage.cost_rub.
import base64
from openai import OpenAI
client = OpenAI(base_url="https://inference.place/api/v1", api_key="sk-ip-...")
resp = client.chat.completions.create(
model="google/gemini-2.5-flash-image",
messages=[{"role": "user", "content": "Минималистичный бумажный самолётик, чёрно-белый"}],
extra_body={"modalities": ["image", "text"]},
)
url = resp.choices[0].message.images[0]["image_url"]["url"] # data:image/png;base64,...
open("result.png", "wb").write(base64.b64decode(url.split(",", 1)[1]))Чтобы отредактировать изображение, передайте его в сообщении пользователя частью {"type": "image_url", "image_url": {"url": "..."}} вместе с текстом задания.
Изображения, видео, аудио
Генерация работает асинхронно: создайте задачу, затем опрашивайте её статус. В input передаются параметры конкретной модели (их список есть на странице модели у провайдера: prompt, image_size, image_url и т. д.).
curl https://inference.place/api/v1/generations \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "fal-ai/flux/dev",
"input": { "prompt": "кот-астронавт, кинематографичный свет", "num_images": 1 }
}'
# 202 Accepted
{ "id": "6c1f…", "status": "pending", "queue_status": "IN_QUEUE", "cost_rub": 2.47, "cost_final": false, … }curl https://inference.place/api/v1/generations/6c1f… -H "Authorization: Bearer $API_KEY"
{
"id": "6c1f…",
"status": "completed", // pending | completed | failed
"output": { "images": [{ "url": "https://…/image.png", "width": 1024, "height": 768 }] },
"cost_rub": 2.47,
"cost_final": false // true после сверки с фактической стоимостью
}При создании задачи с баланса резервируется ориентировочная стоимость. После завершения сумма уточняется по фактическому счёту провайдера (разница возвращается или доначисляется), при ошибке генерации — возвращается полностью.
Список моделей
GET https://inference.place/api/v1/models # все модели
GET https://inference.place/api/v1/models?type=chat # только текстовые
GET https://inference.place/api/v1/models?type=generationОтвет в формате OpenAI, дополнительно поле pricing_rub с ценами в рублях.
Баланс
GET https://inference.place/api/v1/balance
{ "balance_rub": 1250.37, "currency": "RUB" }Ошибки
| Код | Значение |
|---|---|
| 400 | Некорректный запрос: нет model или messages, неверный JSON |
| 401 | Неверный или отозванный API-ключ |
| 402 | Недостаточно средств на балансе |
| 404 | Модель не найдена или отключена |
| 422 | Модель отклонила параметры input (детали в error.detail) |
| 429 | Превышен лимит запросов у провайдера модели |
| 5xx | Временная ошибка провайдера — повторите запрос позже |
{ "error": { "message": "…", "type": "insufficient_quota", "code": "insufficient_balance" } }