Главная / Документация
Быстрый старт

Первый запрос за две минуты

Нужны только адрес API и ключ. Работают оба протокола — OpenAI (Authorization: Bearer) и Anthropic (x-api-key), поэтому подходит почти любой SDK и инструмент.

  1. Зарегистрируйтесь и пополните баланс.
  2. Создайте ключ в кабинете — секрет покажется один раз.
  3. Укажите в SDK адрес https://tux-catalog.me/v1 и ключ.

Base URL: https://tux-catalog.me/v1 — для OpenAI SDK; для Anthropic SDK и Claude Code — https://tux-catalog.me.

from openai import OpenAI

client = OpenAI(base_url="https://tux-catalog.me/v1", api_key="sk-…")
resp = client.chat.completions.create(
    model="claude-sonnet-5",
    messages=[{"role": "user", "content": "Привет!"}],
)
print(resp.choices[0].message.content)

Аутентификация

ПротоколЗаголовокКлиенты
OpenAIAuthorization: Bearer sk-…OpenAI SDK, LangChain, Cursor, aider, n8n
Anthropicx-api-key: sk-…Anthropic SDK, Claude Code
КабинетAuthorization: Bearer + токен сессиистраница кабинета после входа

Есть два типа ключей. Обычный (sk-tux99-…) вызывает модели. Ключ управления (sk-tux99-mgmt-…) создаёт и отзывает другие ключи, но к моделям не ходит — его можно спокойно держать в своём биллинге.

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

GET /v1/models возвращает модели, доступные вашему ключу, в формате OpenAI плюс цены и контекст. Полный каталог — на странице моделей.

{
  "object": "list",
  "data": [{
    "id": "claude-sonnet-5", "owned_by": "Anthropic", "type": "chat",
    "context_length": 1000000,
    "pricing": { "input_per_1m_usd": 2.0, "output_per_1m_usd": 10.0 }
  }]
}

OpenAI-совместимый API

МетодПутьОписание
POST/v1/chat/completionsЧат: messages, model, stream, tools, response_format
POST/v1/responsesResponses API — нужен Codex CLI и новым SDK OpenAI
GET/v1/modelsМодели, доступные ключу, с ценами
POST/v1/images/generationsГенерация изображений
POST/v1/images/editsРедактирование изображений (multipart)

Через этот протокол доступны все чат-модели каталога, включая Claude и Gemini: формат запроса и ответа одинаковый.

GenAPI как дополнительный провайдер

GenAPI поддерживает OpenAI-формат. В Tux99 его можно подключить на сервере как дополнительный upstream для выбранных моделей. Остальные модели продолжат работать через основной провайдер.

Адрес GenAPI: https://proxy.gen-api.ru/v1. В каталоге Tux99 выберите ID модели, совпадающий с ID GenAPI, затем добавьте этот ID в TUX99_GENAPI_MODELS и задайте ключ в TUX99_GENAPI_KEY. Ключ остаётся на сервере.

GenAPI-модели работают через POST /v1/chat/completions, включая streaming. Проверьте цены модели в каталоге Tux99 до включения: Tux99 списывает по своим тарифам, а GenAPI тарифицирует запрос отдельно.

TUX99_GENAPI_URL=https://proxy.gen-api.ru/v1
TUX99_GENAPI_KEY=ваш_ключ_сервера
TUX99_GENAPI_MODELS=claude-sonnet-5,gpt-5.6-luna

Anthropic-совместимый API

POST /v1/messages — формат Anthropic Messages API, включая стриминг, инструменты, кэш промптов и заголовки anthropic-version / anthropic-beta. POST /v1/messages/count_tokens — подсчёт токенов, бесплатно. Ключ — в x-api-key или Authorization: Bearer.

import anthropic

client = anthropic.Anthropic(base_url="https://tux-catalog.me", api_key="sk-…")
msg = client.messages.create(
    model="claude-opus-5-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Привет!"}],
)
print(msg.content[0].text)

Стриминг

Передайте "stream": true — ответ придёт как Server-Sent Events в формате выбранного протокола. Списание — по итоговому числу токенов.

stream = client.chat.completions.create(
    model="gpt-6-astra",
    messages=[{"role": "user", "content": "Расскажи про API-шлюзы"}],
    stream=True,
)
for chunk in stream:
    print(chunk.choices[0].delta.content or "", end="")

Картинки

Изображения тарифицируются поштучно: сколько картинок вернула модель, столько и списано. Модели и цены — в каталоге, попробовать без кода — в Tux Studio.

img = client.images.generate(model="nano-banana-2", prompt="Пингвин-программист, пиксель-арт", n=1)
print(img.data[0].url or img.data[0].b64_json[:40])

API управления ключами

Выдавайте ключ каждому клиенту или сервису прямо из своего кода. Авторизация — ключом управления или токеном сессии. Секрет нового ключа приходит один раз в поле key, дальше хранится только хэш.

ЗапросЧто делает
GET /v1/management/keysСписок ключей: лимиты, расход, последний запрос
POST /v1/management/keysВыдать ключ. Поля: name, limit_usd, daily_limit_usd, monthly_limit_usd, models, fallback_model, is_management, expires_at
PATCH /v1/management/keys/{id}Поменять название, лимиты, модели или срок
POST /v1/management/keys/{id}/rotateНовый секрет с тем же id и лимитами. Старый перестаёт работать сразу
DELETE /v1/management/keys/{id}Отозвать ключ
GET /v1/management/balanceОстаток баланса
GET /v1/management/usageЖурнал запросов, фильтр ?key_id=
GET /v1/management/usage.csvТот же журнал файлом CSV
GET /v1/management/usage/summaryРасход за 7 дней и топ моделей
curl https://tux-catalog.me/v1/management/keys \
  -H "Authorization: Bearer sk-tux99-mgmt-…" \
  -H "Content-Type: application/json" \
  -d '{"name":"клиент 42","monthly_limit_usd":10,"models":["claude-sonnet-5","gpt-5.5"],"fallback_model":"gpt-5.5"}'

Ошибки и лимиты

Ошибка приходит JSON-объектом {"error": {"type": "…", "message": "…"}}. Проверяйте поле type — оно не меняется.

КодtypeЧто случилось и что делать
401missing_api_key, invalid_api_keyКлюч не передан, неверен или отозван — проверьте заголовок
402token_quota_exhaustedЗакончился баланс аккаунта — пополните
402api_key_quota_exhaustedКлюч израсходовал общий лимит — поднимите лимит в кабинете
402api_key_daily_limit, api_key_monthly_limitДостигнут суточный или месячный лимит ключа — сбросится в начале периода (UTC)
403model_not_allowed_for_keyМодели нет в списке разрешённых для этого ключа
403api_key_expiredИстёк срок действия ключа
403account_blockedАккаунт заблокирован — напишите @tux99
403management_key_cannot_call_modelsКлючом управления нельзя вызывать модели — используйте обычный
404model_not_foundТакой модели нет — сверьтесь с GET /v1/models
429rate_limitМодель перегружена у разработчика — повторите с паузой или включите резервную модель
503model_unavailableМодель временно недоступна — см. статус

Резервная модель

У каждого ключа можно задать резервную модель — в кабинете при создании ключа или полем fallback_model в API управления ключами. Если основная модель не ответит (перегрузка 429, сбой 5xx, недоступна сеть), запрос сам уйдёт в резервную — один раз и до начала ответа. Списывается цена той модели, которая ответила, а её имя приходит в поле model — подмены не бывает.

Claude Code

Claude Code говорит на протоколе Anthropic — укажите адрес Tux99 и ключ:

export ANTHROPIC_BASE_URL="https://tux-catalog.me"
export ANTHROPIC_AUTH_TOKEN="sk-…"
export ANTHROPIC_DEFAULT_OPUS_MODEL="claude-opus-5-5"
export ANTHROPIC_DEFAULT_SONNET_MODEL="claude-sonnet-5"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="claude-haiku-4-5"
export CLAUDE_CODE_SUBAGENT_MODEL="claude-sonnet-5"
claude

Контекст 1M — модель с суффиксом [1m], например claude-opus-5-5[1m]. На Windows (PowerShell): $env:ANTHROPIC_BASE_URL="https://tux-catalog.me" и $env:ANTHROPIC_AUTH_TOKEN="sk-…".

Cursor, Continue, aider и Codex CLI

ИнструментГде указать
CursorSettings → Models → OpenAI API Key → Override OpenAI Base URL: https://tux-catalog.me/v1, затем добавьте модели по имени
Continueprovider: openai, apiBase: https://tux-catalog.me/v1, model: claude-sonnet-5
aideraider --openai-api-base https://tux-catalog.me/v1 --model openai/claude-sonnet-5
Codex CLIПровайдер tux99 в ~/.codex/config.toml с base_url = "https://tux-catalog.me/v1", env_key = "TUX99_API_KEY" и wire_api = "responses"

n8n, Make и no-code

Создайте учётные данные OpenAI, в поле Base URL укажите https://tux-catalog.me/v1, в поле ключа — ваш sk-…. Узлы «OpenAI Chat Model» и «AI Agent» будут работать с любой моделью каталога — впишите её имя вручную.

Tux Code

Свой агент для кода в терминале — в разработке. А пока к Tux подключаются Claude Code, Codex CLI и aider: настройки выше и на странице Tux Code.