Zukko против OpenRouter: в чём разница
Оба сервиса дают доступ к моделям разных провайдеров через один ключ. Разбираем, чем Zukko отличается от OpenRouter на уровне протокола, кэша и оплаты.
5 мин · · Обновлено · сравнение
Оба сервиса решают одну задачу — дать один ключ вместо десятка аккаунтов у разных провайдеров моделей. На этом сходство заканчивается, дальше начинаются архитектурные различия, которые видны, как только доходит до реального подключения инструмента.
Один протокол или два одновременно
OpenRouter — это единый OpenAI-совместимый эндпоинт. Модели там адресуются строкой вида provider/model, и весь трафик идёт через /chat/completions в одном формате, независимо от того, кто модель на самом деле обслуживает.
Zukko устроен иначе: это одновременно Anthropic-совместимый и OpenAI-совместимый шлюз, причём оба режима работают на одном ключе fetch_... без переключений. Для Anthropic-клиентов (Claude Code, Anthropic SDK, Roo Code в режиме Anthropic) базовый адрес https://api.zukko.pro — без /v1, клиент сам добавляет путь и обращается к POST /v1/messages с обязательным заголовком anthropic-version: 2023-06-01. Для OpenAI-совместимых клиентов (Cursor, Codex, Cline, OpenAI SDK) адрес другой — https://api.zukko.pro/v1, и точки входа — POST /v1/chat/completions или POST /v1/responses, последний принимает и строку, и массив сообщений, и tools.
Разница на практике: если инструмент говорит на языке Anthropic Messages API нативно, через Zukko он идёт напрямую, без трансляции формата запроса в OpenAI-подобный и обратно. Это меньше точек, где может потеряться поле вроде system или структура content с блоками.
# Anthropic-стиль
curl https://api.zukko.pro/v1/messages \
-H "Authorization: Bearer fetch_ваш_ключ" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{"model":"claude-sonnet-5","max_tokens":256,"messages":[{"role":"user","content":"привет"}]}'
# OpenAI-стиль
curl https://api.zukko.pro/v1/chat/completions \
-H "Authorization: Bearer fetch_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-5.6-sol","messages":[{"role":"user","content":"привет"}]}'Каталог моделей
Сейчас в каталоге Zukko шесть текстовых моделей трёх линеек: claude-opus-5-5 (Claude Opus 5.5) и claude-sonnet-5 — $0.30/$0.30 за 1M токенов, gpt-5.6-sol — $0.30/$0.30, gpt-5.6-luna — $0.10/$0.10, glm-5.3 — $0.10/$0.10 и glm-5.3-flash — $0.04/$0.04. У Claude и GPT контекст 1,000,000 токенов, у GLM — 128K и без vision, так что единого свойства на весь каталог нет. Набор моделей меняется — актуальный список — GET https://api.zukko.pro/v1/models.
Генерация изображений через Zukko временно недоступна. Список моделей (/v1/models) и цены с лимитами контекста (/v1/models/info) можно получить без ключа:
curl https://api.zukko.pro/v1/models
curl https://api.zukko.pro/v1/models/infoКэш и идемпотентность — то, чего не видно в чужом счёте
У Zukko есть два механизма, которые прямо экономят деньги на повторных запросах. Заголовок Idempotency-Key: повтор запроса с тем же значением в течение 24 часов возвращает тот же ответ и не списывает средства повторно — полезно, когда клиент подвис и непонятно, ушёл запрос или нет. И кэш ответов: если передан заголовок X-Zukko-Cache: true (temperature: 0 тоже включает кэш, но только у моделей, которые принимают этот параметр — модели Claude могут отклонить temperature, отличную от 1, ошибкой 400), запросы одного пользователя с полностью совпадающим телом кэшируются (для чата — до 7 суток), повторный запрос возвращается мгновенно и бесплатно (в /v1/usage такие попадания не пишутся), а в ответе видно X-Zukko-Cache: hit.
В каждом обычном (нестриминговом) ответе также приходят заголовки X-Zukko-Cost-Micros (стоимость именно этого запроса в микродолларах, 1,000,000 = $1) и X-Fetch-Balance-Cents (остаток баланса после списания — несмотря на название, тоже в микродолларах) — удобно логировать расход без похода в кабинет. У потоковых ответов (stream: true) этих заголовков нет — там расход смотрят в кабинете, /v1/usage или /v1/balance.
Лимиты на уровне ключа
У каждого API-ключа в Zukko можно задать дневной и месячный лимит расхода в долларах и список разрешённых моделей — настраивается прямо на странице ключа в кабинете. Это отдельный слой контроля поверх общего баланса аккаунта: если выдаёте ключ подрядчику или боту, ограничиваете именно этот ключ, не трогая остальные. Если лимит превышен, запрос вернёт 429 с кодом key_daily_limit_reached или key_monthly_limit_reached; если модель не входит в список разрешённых — 403 model_not_allowed_for_key.
Баланс, ошибки и что происходит при нуле
Проверка баланса у Zukko происходит до похода к модели: при пустом балансе приходит 402 с {"error":{"message":"Недостаточно средств на балансе","code":"insufficient_balance"}}, и неудачный запрос ничего не стоит. История списаний доступна через GET /v1/usage с курсорной пагинацией (она общая на аккаунт, без фильтра по ключу), текущий баланс — через GET /v1/balance (поле balance_cents).
Если модель выключена в каталоге, ответ — 503 с кодом model_disabled; если недоступен провайдер — 503 provider_unavailable. Опечатка в имени даёт 404 model_not_found.
Оплата и то, как выглядит доступ из РФ
Zukko принимает СБП, банковскую карту через PayPear, криптовалюту, а с 2026-09-16 — иностранные карты Mastercard EU через Fride. Разовый бонус $0.50 начисляется за подписку на Telegram-канал @zukkopro — один раз на Telegram-аккаунт: привязать Telegram в кабинете, подписаться и нажать «Проверить». Стартового баланса при обычной регистрации нет — эту практику отменили 2026-09-18 из-за фарма аккаунтов одноразовыми почтами. Есть реферальная программа: 10% с пополнений приглашённых.
Ключи создаются в кабинете zukko.pro/app/api-keys и показываются один раз при создании. Сайт двуязычный — русская версия на корне, английская под /en, кабинет — zukko.pro/app.
Когда что выбирать
Если инструмент нативно говорит на Anthropic Messages API и важно, чтобы формат запроса не проходил через прослойку трансляции, шлюз с родной поддержкой обоих протоколов снимает целый класс мелких багов на границе форматов. Если вдобавок нужен контроль расхода на уровне отдельного ключа, кэш одинаковых запросов и идемпотентность повторов — это уже не про выбор протокола, а про то, сколько ручной работы по мониторингу расхода снимается с разработчика. Техподдержка у Zukko — через Telegram @zukkopro, без тикет-системы и ожидания ответа днями.
zukko
Платите в 25×
меньше
за Claude Code & ChatGPT
Один ключ fetch_* и base URL api.zukko.pro — в Cursor, Claude Code, Codex и любом SDK.
Похожие статьи
- GPT-6 Astra или Claude Fable 5.1: две топовые модели по цене и индексуДве дорогие модели с одинаковым индексом силы и разной ценой в Zukko. Считаем разовый запрос и агентную сессию с кэшем и объясняем, как выбрать на своих данных.
- Qwen или DeepSeek по API: сравнение цен, контекста и индекса силыЧетыре модели, одна задача и честный расчёт: сколько стоит прогон на Qwen 3.8 Max и Flash и на DeepSeek V4 Pro и V4.1 Flash.
- Gemini API vs Vertex API: в чём разница и что выбрать разработчикуДве «двери» к Gemini от Google устроены по-разному: ключ из AI Studio или проект в Google Cloud. Сравниваем их и показываем третий путь через шлюз.
- Аналоги GitHub Copilot со своим API-ключом: что выбратьCline, Kilo Code, Continue и Cursor работают со своим ключом. Сравниваем, куда они встроены, как подключаются к шлюзу и как считать расход.