Первый запрос за две минуты
Нужны только адрес API и ключ. Работают оба протокола — OpenAI (Authorization: Bearer) и Anthropic (x-api-key), поэтому подходит почти любой SDK и инструмент.
- Зарегистрируйтесь и пополните баланс.
- Создайте ключ в кабинете — секрет покажется один раз.
- Укажите в 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)
Аутентификация
| Протокол | Заголовок | Клиенты |
|---|---|---|
| OpenAI | Authorization: Bearer sk-… | OpenAI SDK, LangChain, Cursor, aider, n8n |
| Anthropic | x-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/responses | Responses 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 | Что случилось и что делать |
|---|---|---|
| 401 | missing_api_key, invalid_api_key | Ключ не передан, неверен или отозван — проверьте заголовок |
| 402 | token_quota_exhausted | Закончился баланс аккаунта — пополните |
| 402 | api_key_quota_exhausted | Ключ израсходовал общий лимит — поднимите лимит в кабинете |
| 402 | api_key_daily_limit, api_key_monthly_limit | Достигнут суточный или месячный лимит ключа — сбросится в начале периода (UTC) |
| 403 | model_not_allowed_for_key | Модели нет в списке разрешённых для этого ключа |
| 403 | api_key_expired | Истёк срок действия ключа |
| 403 | account_blocked | Аккаунт заблокирован — напишите @tux99 |
| 403 | management_key_cannot_call_models | Ключом управления нельзя вызывать модели — используйте обычный |
| 404 | model_not_found | Такой модели нет — сверьтесь с GET /v1/models |
| 429 | rate_limit | Модель перегружена у разработчика — повторите с паузой или включите резервную модель |
| 503 | model_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
| Инструмент | Где указать |
|---|---|
| Cursor | Settings → Models → OpenAI API Key → Override OpenAI Base URL: https://tux-catalog.me/v1, затем добавьте модели по имени |
| Continue | provider: openai, apiBase: https://tux-catalog.me/v1, model: claude-sonnet-5 |
| aider | aider --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.