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

Подключение за один адрес

Шлюз совместим с OpenAI и Anthropic SDK. Меняются только base_url и ключ.

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

Базовый адрес для OpenAI-совместимых клиентов:

https://kateshopik.ru/v1

Для Anthropic SDK укажите базовый адрес без /v1 — SDK добавит его сам:

https://kateshopik.ru

Ключ выдаётся после активации токена и начинается с tg_. Он показывается один раз.

Активация токена

После оплаты вы получаете одноразовый токен act_…. Откройте страницу активации, вставьте токен и укажите e-mail, если он не был привязан заранее.

  1. Один токен создаёт ровно один API-ключ tg_….
  2. Ключ наследует лимит токенов, записанный в токене активации.
  3. Повторно активировать тот же токен нельзя.
  4. После активации ключ сразу работает через API и открывает кабинет.
Потеряли ключ? Восстановить его невозможно: в базе хранится только хэш. Если ключ ещё не использовался, обратитесь в поддержку с префиксом токена активации.

Если у вас уже есть API-ключ tg_…, вставьте его на странице активации — откроется кабинет с остатком и расходом.

Авторизация

Передавайте ключ одним из способов:

# OpenAI-совместимые клиенты
Authorization: Bearer tg_...

# Anthropic SDK и клиенты с x-api-key
x-api-key: tg_...

Ключ привязан к одному аккаунту покупателя и имеет собственный лимит токенов. Не публикуйте его в репозиториях и чатах.

Эндпоинты

МетодПутьНазначение
POST/v1/chat/completionsOpenAI Chat Completions
POST/v1/responsesOpenAI Responses API
POST/v1/messagesAnthropic Messages
GET/v1/modelsСписок моделей
GET/v1/models/{id}Одна модель
GET/healthzПроверка состояния шлюза

OpenAI SDK

Установите SDK и замените base_url на адрес шлюза.

pip install openai
from openai import OpenAI

client = OpenAI(
    base_url="https://kateshopik.ru/v1",
    api_key="tg_...",
)

response = client.chat.completions.create(
    model="deepseek-v4.1-flash",
    messages=[{"role": "user", "content": "Привет"}],
)

print(response.choices[0].message.content)

Тот же ключ работает в Cursor, Cline, Roo Code, Continue, Chatbox и других клиентах с настройкой OpenAI-совместимого API.

Anthropic SDK

pip install anthropic
from anthropic import Anthropic

client = Anthropic(
    base_url="https://kateshopik.ru",
    api_key="tg_...",
)

message = client.messages.create(
    model="claude-sonnet-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Привет"}],
)

print(message.content[0].text)

Если клиент не передаёт anthropic-version, добавьте заголовок anthropic-version: 2023-06-01 вручную.

Responses API

response = client.responses.create(
    model="gpt-6.1-sol",
    input="Объясни, что такое токен, в двух предложениях.",
)

print(response.output_text)

Ответы в формате Responses поддерживаются и в потоковом режиме. Usage берётся из события response.completed.

Стриминг

Передайте "stream": true как обычно. Шлюз поддерживает SSE для Chat Completions, Responses и Anthropic Messages.

stream = client.chat.completions.create(
    model="claude-sonnet-5",
    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="")
Особенность upstream. Поток начинается после полной генерации ответа. Первый чанк может прийти с задержкой, равной времени генерации. Это ограничение провайдера, а не шлюза.

Учёт токенов

Лимит ключа измеряется в базовых токенах. Списание за успешный ответ:

(вход − кэш + кэш × kcache + выход) × множитель модели

Для моделей Claude кэшированный вход считается с коэффициентом 0.1. Для остальных моделей кэш не уменьшает списание. Вход и выход стоят одинаково.

Шлюз читает usage из ответа upstream. Если upstream вернул ошибку, токены не списываются. При исчерпании лимита следующий запрос получает 402 и не уходит наверх.

В ответах шлюза есть служебные заголовки:

ЗаголовокЗначение
X-TokenGate-Tokens-BilledСписано за этот запрос
X-TokenGate-Tokens-RemainingОстаток после списания
X-TokenGate-Token-LimitТекущий лимит ключа
X-TokenGate-Request-IdИдентификатор запроса для поддержки

Лимиты

  • Размер запроса — до 8 МиБ.
  • Ответ upstream — до 4096 токенов за один запрос.
  • До 90 запросов в минуту с одного IP на стороне upstream.
  • До 5 изображений по 5 МБ на вход. Генерации изображений нет.
  • Лимит ключа задаётся в базовых токенах и не имеет дневного сброса.

Ошибки

Шлюз возвращает ошибки в формате OpenAI. Для /v1/messages — в формате Anthropic.

КодКогда возникаетЧто делать
400Некорректный JSON, нет модели, модель не из каталогаПроверьте тело запроса и ID модели
401Ключ не передан или неверенПроверьте заголовок авторизации
402Лимит токенов исчерпанПопросите пополнение у администратора
403Ключ отключён, истёк или аккаунт заблокированОбратитесь в поддержку
413Тело запроса больше 8 МиБСократите контекст или изображения
429Превышен лимит запросов upstreamПовторите с задержкой, смотрите Retry-After
502 / 504Проблема соединения с upstreamПовторите позже или сообщите в поддержку
{
  "error": {
    "message": "Лимит токенов исчерпан.",
    "type": "insufficient_quota",
    "code": "insufficient_quota"
  }
}

Модели

Все модели используют общий лимит ключа. Множитель указан относительно базового токена.

IDНазваниеМножительКэш
gpt-5.6-sol GPT 5.6 Sol · OpenAI ×4.0 —
gpt-5.6-terra GPT 5.6 Terra · OpenAI ×1.3 —
gpt-5.6-luna GPT 5.6 Luna · OpenAI ×0.5 —
gpt-6-sol GPT 6 Sol · OpenAI ×3.0 —
gpt-6.1-sol GPT 6.1 Sol · OpenAI ×3.0 —
gpt-6-luna GPT 6 Luna · OpenAI ×0.38 —
gpt-6-astra GPT 6 Astra · OpenAI ×10.0 —
claude-sonnet-4-6 Claude Sonnet 4.6 · Anthropic ×2.0 ×0.1
claude-sonnet-5 Claude Sonnet 5 · Anthropic ×2.0 ×0.1
claude-sonnet-5-5 Claude Sonnet 5.5 · Anthropic ×2.0 ×0.1
claude-fable-5 Claude Fable 5 · Anthropic ×8.0 ×0.1
claude-fable-5-1 Claude Fable 5.1 · Anthropic ×8.0 ×0.1
claude-opus-4-5 Claude Opus 4.5 · Anthropic ×4.0 ×0.1
claude-opus-4-6 Claude Opus 4.6 · Anthropic ×4.0 ×0.1
claude-opus-4-7 Claude Opus 4.7 · Anthropic ×4.0 ×0.1
claude-opus-4-8 Claude Opus 4.8 · Anthropic ×4.0 ×0.1
claude-opus-5 Claude Opus 5 · Anthropic ×4.0 ×0.1
claude-opus-5-5 Claude Opus 5.5 · Anthropic ×4.0 ×0.1
codex-auto-review Codex Auto Review · OpenAI ×0.1 —
deepseek-flash DeepSeek Flash · DeepSeek ×0.1 —
deepseek-v4-pro DeepSeek V4 Pro · DeepSeek ×0.5 —
deepseek-v4-flash DeepSeek V4 Flash · DeepSeek ×0.1 —
deepseek-v4.1-flash DeepSeek V4.1 Flash · DeepSeek ×0.1 —
grok-4.5 Grok 4.5 · xAI ×0.5 —
grok-4.6 Grok 4.6 · xAI ×0.5 —
grok-4.7 Grok 4.7 · xAI ×0.5 —
glm-5.3 GLM 5.3 · Zhipu ×1.5 —
glm-5.3-flash GLM 5.3 Flash · Zhipu ×0.3 —
qwen3.8-max Qwen 3.8 Max · Alibaba ×2.5 —
qwen3.8-flash Qwen 3.8 Flash · Alibaba ×0.7 —
gemini-3.7-flash Gemini 3.7 Flash · Google ×2.0 —
gemini-3.6-flash Gemini 3.6 Flash · Google ×2.0 —
gemini-3.8-flash Gemini 3.8 Flash · Google ×2.0 —
gemini-3.1-pro Gemini 3.1 Pro · Google ×2.0 —

Актуальный список также доступен через GET /v1/models с вашим ключом.

Правила использования

  • Ключ предназначен для ваших проектов и команды. Не публикуйте его в открытом доступе и не перепродавайте доступ третьим лицам.
  • Запрещены попытки обойти лимиты, вмешаться в работу шлюза, сканировать чужие ключи и создавать чрезмерную нагрузку.
  • Запрещён контент и действия, нарушающие закон. Ответственность за запросы лежит на владельце ключа.
  • При злоупотреблении ключ может быть отключён без возврата неиспользованного объёма.
  • Доступность upstream и конкретных моделей не гарантирована круглосуточно: провайдер может менять каталог и лимиты.

Данные и конфиденциальность

  • Шлюз хранит e-mail, хэш ключа, лимит, расход, модель и счётчики токенов.
  • Содержимое запросов и ответов не сохраняется в базе шлюза.
  • Ключ хранится в виде SHA-256 хэша. Показать исходный ключ повторно невозможно.
  • Сессия кабинета и админки использует подписанную cookie. Пароль администратора хранится только в переменных окружения.
  • Запрос на удаление аккаунта и связанных логов можно отправить на support@kateshopik.ru.