API нейросетей с оплатой в рублях

Совместим с базовым форматом OpenAI Chat Completions. Укажите адрес API и ключ в совместимом SDK, затем проверьте параметры выбранной модели.

Получить ключ APIВход по коду из письма, стоимость каждого запроса приходит в ответе.

API для приложения или чат для работы

API подходит для бота, сайта или внутреннего инструмента: запрос отправляет ваш сервер, а ответ обрабатывает приложение. Для ручной работы с текстом начните с чата; доступные модели и цены смотрите в каталоге.

Перед переносом приложения проверьте выбранную модель на коротком запросе, затем отдельно протестируйте стриминг и используемые параметры. Совместимость базового формата не означает, что каждая модель поддерживает все возможности вашего прежнего провайдера.

Для пилота команды пригодятся условия для бизнеса и план проверки интеграции.

Быстрый старт

  1. Зарегистрируйтесь — после входа по коду из письма на балансе 5 ₽ на пробу. Пополнить можно потом, от 100 ₽.
  2. Создайте ключ в разделе API-ключи.
  3. Укажите адрес https://slovai.ru/v1.
bash
curl https://slovai.ru/v1/chat/completions \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "openai/gpt-6-luna", "messages": [{"role": "user", "content": "Привет!"}]}'
python
from openai import OpenAI

client = OpenAI(base_url="https://slovai.ru/v1", api_key="sk-slovai-…")
r = client.chat.completions.create(
    model="openai/gpt-6-luna",
    messages=[{"role": "user", "content": "Привет!"}],
)
print(r.choices[0].message.content)
javascript
import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://slovai.ru/v1", apiKey: process.env.API_KEY });
const r = await client.chat.completions.create({
  model: "anthropic/claude-sonnet-5",
  messages: [{ role: "user", content: "Привет!" }],
});
console.log(r.choices[0].message.content);

Переходите с другого агрегатора? Названия моделей такие же — производитель и модель через косую черту; короткие имена вроде gpt-6-sol тоже принимаем. Как переехать и получить бонус →

Авторизация

Ключ передаётся в заголовке Authorization: Bearer sk-slovai-…. Ключ показывается один раз при создании, мы храним только его отпечаток. У ключа можно задать месячный лимит в рублях. Утёкший ключ отзовите в кабинете: остальные продолжат работать.

Чат-комплишены

POST /v1/chat/completions принимает те же поля, что и OpenAI: model, messages, temperature, max_tokens, tools, response_format и другие. Дополнительные поля передаются модели без изменений. Если поставщик модели не отвечает, запрос автоматически уходит к резервному.

Рассуждающие модели (в GET /v1/models у них "reasoning": true) сначала думают, потом отвечают. Рассуждения входят в max_tokens и в стоимость: при маленьком лимите модель может потратить его целиком на размышления и вернуть пустой текст с "finish_reason": "length". Ставьте max_tokens от 2 000 или не указывайте его вовсе.

Стриминг

С "stream": true ответ приходит событиями text/event-stream, как у OpenAI. Последнее событие перед [DONE] всегда содержит usage с токенами и суммой. Если соединение оборвётся, спишется только то, что модель успела сгенерировать.

Стоимость запроса

В каждом ответе в usage есть поле cost_rub: сколько списано с баланса за этот запрос. Так можно считать расходы по пользователям своего продукта без отдельной аналитики.

json
"usage": {
  "prompt_tokens": 1240,
  "completion_tokens": 380,
  "total_tokens": 1620,
  "prompt_tokens_details": { "cached_tokens": 0 },
  "cost_rub": 1.8614
}

Запрос от 1 024 токенов поставщик сохраняет в кэш. Токены, которые пришли из кэша (cached_tokens), стоят по цене cached_prompt_per_million — в разы дешевле входа. Новые токены такого запроса у моделей с ценой cache_write_prompt_per_million стоят по ней: так поставщик берёт за запись в кэш. Обе цены — в GET /v1/models. Выгоднее всего держать неизменное начало запроса — системный промпт, документы — в начале, а меняющееся — в конце.

Если поставщик не сообщил количество токенов, мы считаем их по длине текста и добавляем "estimated": true. Заголовок x-request-id — номер запроса в детализации кабинета.

Список моделей

GET /v1/models отдаёт доступные модели с ценами в рублях за 1 млн токенов. Ключ не нужен.

json
{
  "id": "anthropic/claude-sonnet-5",
  "owned_by": "Anthropic",
  "context_length": 1000000,
  "pricing": { "currency": "RUB", "prompt_per_million": 362, "completion_per_million": 1810 },
  "type": "chat",
  "vision": true,
  "data_in_russia": false
}

Проверьте возможности выбранной модели

Список моделей публичный: ключ для этого запроса не нужен. Перед настройкой приложения проверьте точный id и тип модели в текущем ответе сервиса.

bash
curl https://slovai.ru/v1/models
  • type: "chat" — модель для /chat/completions; type: "image" — для /images/generations.
  • vision: true — модель принимает изображения во входе. При vision: false используйте текстовый запрос или выберите другую модель.
  • reasoning: true — модель расходует часть лимита на рассуждения. Учитывайте это при выборе max_tokens и проверке пустого ответа с finish_reason: "length".

Эти поля не подтверждают поддержку всех параметров SDK. Стриминг, инструменты и структурированный вывод проверяйте отдельно для выбранной модели на коротком запросе. У режима Авто модель выбирается при выполнении; её имя возвращается в ответе.

Автовыбор модели

Модель slovai/auto сама подбирает исполнителя под вопрос: короткие и простые запросы отвечает недорогая модель, код, документы, расчёты и юридические вопросы — флагман. Когда правила не дают однозначного ответа, сложность оценивает самая дешёвая модель — это стоит тысячные доли рубля и видно в детализации отдельной строкой. В ответе поле model называет модель, которая ответила, цена — по её тарифу.

json
{ "model": "slovai/auto", "messages": [{ "role": "user", "content": "Переведи: good morning" }] }

Экономный режим

Для моделей OpenAI и Google добавьте "service_tier": "flex": ответ придёт медленнее, зато на 40% дешевле. Подходит для фоновых задач — разметки, обработки документов, рассылок. Цены экономного режима — в economy_pricing списка моделей.

Если экономные мощности заняты, шлюз повторит попытку через 1,5 секунды. Не получилось — вернётся 429 economy_unavailable: запрос не выполнен и не оплачен, дороже без вашего согласия не будет. Чтобы в такой ситуации получать ответ по обычной цене, добавьте "provider": {"economy_fallback": "standard"}. Для моделей без экономного режима запрос с service_tier вернёт 400 economy_unavailable, а с этим параметром — выполнится как обычно.

Какой тариф применён, видно в ответе: заголовок x-service-tier (flex или standard), в usage — economy: true по экономной цене или economy_busy: true, если с вашего согласия ответ пришёл по обычной. Режим и цены каждого запроса сохраняются в детализации.

json
{
  "model": "openai/gpt-6-sol",
  "service_tier": "flex",
  "provider": { "economy_fallback": "error" },
  "messages": [{ "role": "user", "content": "Классифицируй отзыв: …" }]
}

Картинки во входе

Модели с "vision": true читают картинки: фото, скриншоты, сканы. Передайте картинку частью сообщения, как у OpenAI, ссылкой или в base64. Модель без vision вернёт 400, а не ответ наугад.

json
{
  "model": "openai/gpt-6-sol",
  "messages": [{
    "role": "user",
    "content": [
      { "type": "text", "text": "Что написано на чеке?" },
      { "type": "image_url", "image_url": { "url": "data:image/jpeg;base64,/9j/4AAQ…" } }
    ]
  }]
}

Картинка стоит как примерно тысяча входных токенов, точная сумма — в usage.cost_rub. В веб-чате можно просто прикрепить файл: PDF, DOCX и текстовые документы мы переводим в текст сами, поэтому они работают с любой моделью.

Генерация картинок

POST /v1/images/generations — как у OpenAI. Модели с "type": "image" в списке моделей; цена за одну картинку — в pricing.per_image. Формат задаётся aspect_ratio (1:1, 16:9, 9:16, 4:3, 3:4) или привычным size. Одна картинка на запрос, ответ — PNG в base64.

python
import base64
from openai import OpenAI

client = OpenAI(base_url="https://slovai.ru/v1", api_key="sk-slovai-…")
r = client.images.generate(
    model="black-forest-labs/flux.2-pro",
    prompt="Кот-космонавт на орбите Земли, акварель",
    size="1792x1024",
)
open("cat.png", "wb").write(base64.b64decode(r.data[0].b64_json))

Если модель отказалась рисовать по правилам разработчика, вернётся ошибка и деньги не спишутся.

Данные только в России

Модели с "data_in_russia": true — YandexGPT, Alice AI и GigaChat — обрабатывают запросы только на серверах в России. Остальные модели передают текст запроса разработчику за рубеж. Чтобы запрос гарантированно не покинул Россию, добавьте параметр:

json
{
  "model": "yandex/yandexgpt-5.1-pro",
  "messages": [{ "role": "user", "content": "Привет!" }],
  "provider": { "country": "ru" }
}

Если выбранная модель работает за рубежом, запрос не уйдёт никуда и вернётся ошибка 403 data_residency. Для всей компании режим включается в кабинете, раздел «Команда»: тогда ограничение действует для чата и всех ключей без изменений в коде. Другие поля provider мы не передаём: поставщика выбирает шлюз.

Ошибки

400invalid_requestНеверный формат запроса. Текст ошибки подскажет поле.
401invalid_api_keyНет ключа, ключ неверный или отозван.
402insufficient_balanceЗакончились деньги на балансе.
403data_residencyМодель работает за рубежом, а запрос ограничен Россией.
404model_not_foundТакой модели нет. Проверьте id в GET /v1/models.
429key_limit_exceededИсчерпан месячный лимит ключа.
429rate_limitedБольше 10 запросов в секунду с одного ключа.
429economy_unavailableЭкономные мощности заняты, а обычная цена не разрешена. Запрос не оплачен.
502upstream_unavailableВсе поставщики модели недоступны. Повторите позже или выберите другую модель.
json
{ "error": { "message": "Недостаточно средств на балансе…", "type": "insufficient_quota", "code": "insufficient_balance" } }

Как выбрать следующее действие

Ответ сервиса на запрос без заголовка авторизации:

json
{
  "error": {
    "message": "Неверный API-ключ. Создайте ключ в личном кабинете.",
    "type": "authentication_error",
    "code": "invalid_api_key"
  }
}
  • 401: проверьте заголовок Authorization: Bearer … и состояние ключа в кабинете. Изменение текста запроса не исправит авторизацию.
  • 404 model_not_found: возьмите точный id из GET /v1/models и проверьте тип модели для выбранного эндпоинта.
  • 429: прочитайте error.code. При rate_limited уменьшите частоту запросов; при key_limit_exceeded проверьте месячный лимит ключа. Для economy_unavailable сначала выберите допустимый режим обработки.

Сохраните HTTP-код и тело ошибки для диагностики. Перед обращением в поддержку удалите из примера ключ и содержимое частных сообщений.

Готовые инструменты

Проверено: официальный Python SDK OpenAI 2.x и запросы curl — ответы, поток с usage, ошибки. Инструменты, где можно указать свой адрес OpenAI API (n8n, LangChain, Cursor, Open WebUI и другие), работают по тому же протоколу Chat Completions, но мы их не проверяли: укажите адрес https://slovai.ru/v1, свой ключ и id модели из списка, а если что-то не так — напишите нам. Эмбеддингов, аудио и Responses API у нас нет; таблица совместимости.