API данных шлюзов
Публичный read-only доступ к данным мониторинга. Без ключа. CORS: *. Кеш: max-age=60. Цены обновляются ежечасно, здоровье (health) — каждую минуту.
1. Агент регистрируется и выпускает ключ сам
Без почты, CSRF и cookie. Один запрос — аккаунт agent-…@agents.aishlyuz.ru и ключ sk-ais-… в поле api_key. Ссылку claim.url агент отдаёт пользователю — по ней тот привяжет свою почту. Баланс 0 (модели — 402; MCP: initialize и tools/list работают, tools/call — ошибка insufficient_balance до пополнения), лимит 5 регистраций в час с IP. Подробно — /agent.md.
curl -s -X POST https://aishlyuz.ru/api/agent/register \
-H 'content-type: application/json' -d '{"agent":"claude-code"}'Эндпоинты
- GET /api/gateways — все шлюзы: {data: [...], updated_at}
- GET /api/gateways/{slug} — один шлюз, например /api/gateways/polza; несуществующий slug → 404
- GET /api/gateways/{slug}/install?client=claude-code|cursor|codex — машиночитаемые шаги подключения для агента, например /api/gateways/polza/install?client=claude-code; неверный client → 400, несуществующий slug → 404
- GET /api/gateways/recommend?model=…&client=…&payment=…&max_price_rub=… — серверный подбор: ранжированные results и excluded с машинными причинами (no_price_for_model, compat_unconfirmed, payment_missing, health_down, health_unknown, no_data, price_above_max, status_not_active). Отдельный путь, а не параметры списка: список остаётся полным объектом, а подбор — воспроизводимый ответ. Порядок: цена модели (input + output×0.075, ₽/1M), затем аптайм 7д, затем имя; поле signup_url на порядок не влияет (см. ranking_policy). max_price_rub применяется к цене входа (input, ₽/1M). Пример: recommend для Claude Sonnet 5.5
- GET /api/gateways/calculate?model=…&input_tokens=…&output_tokens=…&cached_input_tokens=…&period=month — стоимость сценария за период по каждому шлюзу, где есть полная цена: cost_rub и разбивка. Токены задаются итогом за период. Если кеш запрошен (cached_input_tokens > 0), а цены кеша нет (cached_input: null), шлюз не считается, а уходит в excluded с причиной cache_price_missing и data_complete: false — цена кеша нулём не подставляется. Цена записи в кеш не учитывается. Пример: calculate
Единый ключ AIShlyuz — бета
Примеры для человека: Claude Code, Codex, Cursor, curl и MCP — на странице как подключить.
Один ключ sk-ais-… — Claude, GPT, Gemini, DeepSeek и другие модели через наш роутер. Модели идут через AITunnel; актуальный список — GET /v1/models с ключом. Бета: оплата пока не подключена, рабочий баланс выдаём по запросу — t.me/aishlyuz. Пошагово для агента — /agent.md. Регистрация и вход — /register и /login.
- Base URL: https://aishlyuz.ru/v1 (OpenAI) и https://aishlyuz.ru (Anthropic, клиент сам добавит /v1/messages). Авторизация: Authorization: Bearer sk-ais-… или x-api-key
- POST /v1/chat/completions, POST /v1/responses, POST /v1/messages — стрим поддерживается. Биллинг: резерв до запроса → списание по фактическим токенам; без баланса — 402 insufficient_balance до обращения к модели
- GET /v1/models — модели, доступные ключу. Служебная ais-test-1 отвечает заглушкой и реальную модель не вызывает — для проверки настройки
- GET /api/account/balance, GET /api/account/usage — баланс и расход
- GET /api/gateways/unified/install?client=claude-code|codex|cursor — машиночитаемый конфиг единого ключа для агента
- Ключ создаётся в кабинете и показывается один раз; хранится только хеш и префикс; отзыв действует со следующего запроса. В логах — только метаданные, без ключей и тел запросов
- Цена реальной модели — цена AITunnel из нашего мониторинга, ₽ за 1M токенов; учёт в микрорублях
Поля
- prices_rub_per_1m — ₽ за 1M токенов по ключу модели: input, output, cached_input (null = шлюз цену кеша не публикует)
- pricing_rub — минимальная цена входа (число, ₽/1M): минимум по input всех моделей с ненулевой ценой; null, если цен нет
- updated_at — время последней успешной проверки цен этого шлюза; checked_at — дата проверки из исходных данных (отдаётся всегда)
- signup_url — ссылка регистрации, если она у шлюза есть; иначе null
- status — строка жизненного цикла: active / stale (enum также допускает draft, deprecated); stale — если исходные данные шлюза помечены устаревшими
- health.state — up/down/unknown (GET без ключа, HTTP < 500 = up), last_ping, http_code
- uptime — процент доступности за 24h/7d/30d и текущая задержка, мс
- works_with и compat — булевы true/false по документации шлюза; compat — с ключами claude-code, codex, cursor, works_with — те же данные с ключом claude_code. true = совместимость подтверждена; false = не подтверждена в наших данных (в источнике нет записи), это не утверждение о несовместимости
- install — signup_url (или null), documented_config, готовый config только там, где настройка документирована самим шлюзом, steps и verify. Где документированного конфига нет, config: null и честная причина в unavailable_reason; конфиг не выдумывается. Шаги: открыть signup_url, человек сам регистрируется и платит, вставить свой ключ, применить конфиг, проверить рабочим вызовом
- payment_methods — коды: sbp (СБП), mir (карта МИР), invoice (счёт юрлицу); пустой массив = нет данных
{
"data": [
{
"id": "polza", "slug": "polza", "name": "Polza AI",
"prices_rub_per_1m": {
"claude-sonnet-5-5": {"input": 237.05, "output": 1185.27, "cached_input": 11.85}
},
"pricing_rub": 5.93,
"updated_at": "2026-10-17T01:11:26+03:00",
"checked_at": "2026-10-17",
"signup_url": "https://polza.ai/…",
"status": "active",
"health": {"state": "up", "last_ping": "…", "http_code": 401},
"uptime": {"24h": 100, "7d": 100, "30d": 100, "latency_ms": 210},
"works_with": {"claude_code": true, "codex": true, "cursor": true},
"compat": {"claude-code": true, "codex": true, "cursor": true},
"payment_methods": ["sbp", "mir", "invoice"]
}
],
"updated_at": "…"
}Полное описание и JSON Schema — в репозитории, docs/API.md. «Нет данных» в этом API — null или отсутствие модели, а не ноль.