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

Подключение за пять минут

Endpoint совместим с форматом OpenAI. Если ваш клиент умеет работать с OpenAI, он уже умеет работать с нами — нужно поменять две настройки.

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

Зарегистрируйтесь, скопируйте ключ в кабинете и укажите в клиенте два значения:

Base URLhttps://api.shugg.ru/v1
API Keysh_live_…
# pip install openai
from openai import OpenAI

client = OpenAI(
    base_url="https://api.shugg.ru/v1",
    api_key="sh_live_ваш_ключ",
)

answer = client.chat.completions.create(
    model="claude-sonnet-5",
    messages=[{"role": "user", "content": "Привет!"}],
)
print(answer.choices[0].message.content)

Ключи и доступ

Ключ передаётся в заголовке Authorization: Bearer sh_live_…. На аккаунт — до 10 активных ключей, все они тратят один общий баланс.

  • Полный ключ показывается один раз при создании — дальше в кабинете видны только последние символы.
  • Отзыв ключа действует мгновенно: запросы с ним начинают получать invalid_api_key.
  • Ключ не должен попадать в браузерный код: запросы к API отправляйте со своего сервера или бота.

Endpoints

МетодПутьНазначение
POST/v1/chat/completionsОсновной запрос к текстовым моделям
GET/v1/modelsСписок доступных моделей и их коэффициентов
POST/v1/images/generationsГенерация изображений

Поддерживаются поля messages, temperature, top_p, max_tokens, stop, stream, а также tools и tool_choice у моделей, где вызов инструментов доступен.

Потоковый ответ

Передайте "stream": true — ответ придёт server-sent событиями в том же формате, что и у OpenAI. Последнее событие перед [DONE] содержит блок usage с фактическим расходом:

{
  "choices": [{ "delta": {}, "finish_reason": "stop" }],
  "usage": {
    "prompt_tokens": 812,
    "completion_tokens": 1104,
    "cost_tokens": 6332
  }
}

Учёт токенов

Баланс хранится в токенах. Стоимость запроса считается по формуле:

токены = токены_запроса × коэффициент_входа + токены_ответа × коэффициент_выхода

Коэффициенты каждой модели возвращает GET /v1/models и показывает страница тарифов. Перед дорогим запросом резервируется прогноз по max_tokens, после ответа выполняется финальный расчёт и неиспользованная часть резерва возвращается.

Ошибки

Ошибка приходит одним объектом и сразу отвечает на три вопроса: что случилось, списаны ли токены и можно ли повторить запрос.

{
  "error": {
    "type": "insufficient_quota",
    "origin": "billing",
    "title": "Не хватает токенов",
    "message": "На балансе меньше токенов, чем нужно для запроса.",
    "action": "Пополните баланс через FunPay: 1 штука = 1 млн токенов.",
    "billing": "Токены не списаны.",
    "retryable": false,
    "request_id": "62d51aa1ac009cd0"
  }
}
КодКогда возникаетПовтор
invalid_api_keyКлюч не найден, отозван или скопирован не полностьюнет
insufficient_quotaНа общем балансе аккаунта не хватает токеновнет
model_not_foundУказан идентификатор, которого нет в каталогенет
rate_limit_exceededСлишком много запросов в минутуда
upstream_errorОшибка на стороне поставщика моделида
upstream_timeoutМодель не ответила за отведённое времяда

Заголовок X-Request-ID есть в каждом ответе. С ним поддержка поднимает карточку запроса за минуту.

Лимиты

По умолчанию действует ограничение 60 запросов в минуту на ключ. Баланс при этом общий: расход любого ключа уменьшает пул всего аккаунта. Если запросов в минуту нужно больше — напишите в поддержку.

Готовые интеграции

ИнструментЧто указать
CursorSettings → Models → OpenAI API: Base URL и ключ, затем добавить нужные id моделей
Cline / ContinueПровайдер «OpenAI Compatible», тот же Base URL и ключ
n8n, MakeНода OpenAI с пользовательским Base URL
Свой ботЛюбой SDK OpenAI: достаточно заменить base_url
Не получается подключиться?

Пришлите request id, модель, endpoint и время запроса — этого хватает, чтобы найти причину.

Написать в поддержку