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

Командный доступ к LLM через go2llm: проектные ключи, квоты, allowed models и IP allow-list

go2llm даёт команде один баланс в USD и отдельный ключ gk_sk_… на каждый проект. У каждого ключа своя квота в долларах, свой список разрешённых моделей, свой IP allow-list, свой срок действия и лимит 20 RPM по умолчанию. Это заменяет четыре провайдера с четырьмя биллингами одним контуром расхода.

Дата публикации: 11 сентября 2026, каталог цен v38. Часть обзора сценариев go2llm.

Задача

Команда из 2–15 человек: разработчики с кодинг-агентами, продовая фича с LLM внутри, ночная батч-обработка, генерация картинок для маркетинга. Типичное состояние до наведения порядка — четыре провайдера, четыре биллинга, и никто не может сказать, что именно съело деньги в этом месяце.

Боли, которые решаются настройками ключа, а не процессом:

БольМеханизм go2llm
«Никто не знает, кто сколько потратил»ключ на проект + квота в долларах на ключ
«Разработчик поставил Opus на автофиксы»список разрешённых моделей на ключ
«Ключ утёк в публичный репозиторий»IP allow-list + срок действия + квота
«Забытый cron жрёт баланс третий месяц»срок действия ключа
«Прод и эксперименты в одном котле»разные ключи, один баланс

Какие модели подходят и почему

В команде профиль нагрузки у каждого ключа свой, и это главная причина не смешивать их. go2llm считает смешанную цену по формуле mixed = in × доля_входа + out × доля_выхода + cache × доля_чтения_кэша, и веса берутся из сценария конкретного ключа.

КлючПрофиль (in/out/cache)Модельmixed, $/1MПочему
dev-<имя>10 / 5 / 85 (кодинг)claude-sonnet-50,14284885% объёма идёт по ставке cache $0,03288
dev-senior10 / 5 / 85claude-opus-50,218512сложный рефакторинг
prod-chat70 / 25 / 5 (чат-бот)gpt-5.6-luna0,0882вход доминирует, нужен дешёвый in
batch-etl85 / 10 / 5 (извлечение)glm-5.3-flash0,02148самый дешёвый вход в каталоге
content20 / 75 / 5 (генерация)claude-sonnet-51,297444выход весит 75%

Обратите внимание: claude-sonnet-5 в строке dev стоит $0,142848, а в строке content — $1,297444 за 1M смешанных токенов. Модель одна, ставки одни (0,329 / 1,64 / 0,03288) — разный профиль. Если в команде считают бюджет одной цифрой «средней цены модели», расчёт будет неверным для четырёх ключей из пяти.

Все 38 опубликованных моделей go2llm доступны с любого ключа gk_sk_…, пока список не сужен явно. Перечень — GET /v1/models, цены — GET /api/pricing, оба без авторизации.

Как подключить

Ключи go2llm создаются в кабинете: там задаются квота, allowed models, IP allow-list и срок. Публичного management API для программного создания и отзыва ключей среди опубликованных endpoint'ов нет — по ключу gk_sk_… доступны только /v1/messages, /v1/chat/completions и /v1/images/generations. Максимальное число ключей на аккаунт мы пока не документировали: если упираетесь в это на практике, напишите в @go2llm_support, ответим и дополним страницу.

Дальше ключ раздаётся по проектам обычным .env:

# .env разработчика — ключ dev-ivan, квота $8, allowed: claude-sonnet-5, claude-haiku-4-5
export ANTHROPIC_BASE_URL=https://go2llm.tech
export ANTHROPIC_AUTH_TOKEN=gk_sk_YOUR_DEV_KEY
export ANTHROPIC_MODEL=claude-sonnet-5
claude

Для Claude Code важно именно ANTHROPIC_AUTH_TOKEN, а не ANTHROPIC_API_KEY: если у разработчика на машине уже есть вход под личным аккаунтом, ANTHROPIC_API_KEY может уступить сохранённому логину, и запрос уйдёт мимо go2llm с 401.

Проверка, что ограничения на ключе действительно стоят — две команды при выдаче:

# 1. Разрешённая модель — ожидаем 200
curl -s -o /dev/null -w "%{http_code}\n" https://go2llm.tech/v1/messages \
  -H "x-api-key: gk_sk_YOUR_DEV_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model":"claude-sonnet-5","max_tokens":16,"messages":[{"role":"user","content":"ok"}]}'

# 2. Запрещённая модель — ожидаем 403 с error.code = model
curl -s https://go2llm.tech/v1/messages \
  -H "x-api-key: gk_sk_YOUR_DEV_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model":"claude-fable-5","max_tokens":16,"messages":[{"role":"user","content":"ok"}]}'

Если вторая команда вернула 200 — allowed models на ключе не настроен, и claude-fable-5 с его ставкой выхода $5,03 за 1M доступен любому, кто взял этот ключ.

Продовому ключу дополнительно ставится IP allow-list адресов ваших серверов. Тогда утечка ключа в репозиторий не превращается в счёт: с чужого адреса go2llm вернёт 403 ip.

Сколько это стоит

Команда: 3 разработчика с кодинг-агентами, продовый чат-бот, ночной ETL. Один баланс, пять ключей.

Ключ dev-*, 40M смешанных токенов в месяц на claude-sonnet-5, профиль 10/5/85 → 4M входа, 2M выхода, 34M чтения кэша:

  • 4 × $0,329 = $1,316
  • 2 × $1,64 = $3,28
  • 34 × $0,03288 = $1,1179
  • $5,7139 на разработчика, $17,1418 на троих

Ключ prod-chat, 50M токенов на gpt-5.6-luna, профиль 70/25/5 → 35M входа, 12,5M выхода, 2,5M чтения кэша:

  • 35 × $0,04 = $1,40
  • 12,5 × $0,24 = $3,00
  • 2,5 × $0,004 = $0,01
  • $4,41

Ключ batch-etl, 100M токенов на glm-5.3-flash, профиль 85/10/5 → 85M входа, 10M выхода, 5M чтения кэша:

  • 85 × $0,018 = $1,53
  • 10 × $0,06 = $0,60
  • 5 × $0,0036 = $0,018
  • $2,148

Итого по команде: $17,1418 + $4,41 + $2,148 = $23,6998 ≈ 2 047 ₽ по курсу ЦБ 86,3793 ₽/$ на 01.09.2026.

Для сравнения, только часть разработчиков по официальному тарифу Anthropic: 40M на Sonnet 5 по профилю 10/5/85 — это 4 × 2,00 = $8,00; 2 × 10,00 = $20,00; 34 × 0,20 = $6,80, итого $34,80 на человека и $104,40 на троих. У go2llm та же работа стоит $17,14 — в 6,1 раза меньше.

Модель оплаты у go2llm — только pay-as-you-go: подписок, пакетов и обязательной ежемесячной платы нет. Минимальное пополнение — $1, максимум — $10 000, пресеты $5 / $10 / $25 / $50 / $100. Оплата рублями через СБП (провайдер Platega) или криптовалютой. При регистрации на баланс начисляется $1 — команде хватит, чтобы проверить все пять ключей до первого пополнения.

Как контролировать расход

Пять настроек на каждый ключ и один общий баланс — это весь механизм. Раскладка по ключам из расчёта выше:

КлючКвотаAllowed modelsIP allow-listСрок
dev-ivan$8claude-sonnet-5, claude-haiku-4-5——
dev-senior$13+ claude-opus-5——
prod-chat$7gpt-5.6-luna, claude-sonnet-5IP серверов—
batch-etl$3glm-5.3-flashIP воркераконец квартала
content$6claude-sonnet-5, gpt-5.6-luna——

Важные детали, о которые спотыкаются при первой настройке:

  • ключ с квотой 0 не имеет отдельного денежного лимита и ограничен только общим балансом аккаунта — это не «ноль долларов», а «без лимита на ключе»;
  • ключ, созданный с пустым полем квоты, идёт без отдельного лимита — выставьте её вручную, прежде чем раздавать;
  • лимит 20 RPM на ключ по умолчанию — считается именно на ключ и суммарно по всем моделям и endpoints, а не на аккаунт и не на модель, так что разные ключи не делят один счётчик; для продового трафика и для батча это реальное ограничение, закладывайте очередь и обработку Retry-After. Механизма самостоятельного повышения в кабинете нет — по этому вопросу пишите в @go2llm_support;
  • отдельно от RPM действует лимит параллельных запросов на аккаунт — по умолчанию 2; его делят уже все ключи вместе, и на батче это упирается раньше, чем 20 RPM;
  • при превышении квоты go2llm отдаёт 429 quota, при исчерпании баланса — 402 insufficient_balance; баланс не уходит ниже нуля.

Точный учёт по каждому запросу go2llm возвращает в usage.cost_usd — в том числе в финальном usage-блоке SSE-стрима. Минимальный сборщик на стороне команды:

import os, collections
from openai import OpenAI

KEYS = {                      # проект -> ключ
    "prod-chat": os.environ["GO2LLM_KEY_PROD"],
    "batch-etl": os.environ["GO2LLM_KEY_BATCH"],
}
spent = collections.defaultdict(float)

def call(project: str, model: str, prompt: str) -> str:
    client = OpenAI(api_key=KEYS[project], base_url="https://go2llm.tech/v1")
    r = client.chat.completions.create(
        model=model, max_tokens=500,
        messages=[{"role": "user", "content": prompt}],
    )
    spent[project] += getattr(r.usage, "cost_usd", 0.0)
    return r.choices[0].message.content

# в конце смены: print(dict(spent)) -> {'prod-chat': 0.1412, 'batch-etl': 0.0891}

Собирать расход на своей стороне приходится не от хорошей жизни: публичного endpoint'а для программного чтения баланса и расхода по ключу нет — эти данные видны только в кабинете по сессии. Что именно кабинет показывает в разрезе каждого ключа и есть ли выгрузка истории, а также поддерживаются ли отдельные учётные записи участников команды с ролями, мы пока не документировали — напишите в @go2llm_support, ответим и дополним страницу.

Про приватность, раз речь о командных и продовых данных: go2llm не сохраняет промпты и ответы в продуктовых логах — технический лог содержит метаданные, usage, стоимость, маршрут, статус и очищенную ошибку. Подробные request logs хранятся до 90 дней.

Грабли

403 с error.code = model / inactive / expired / ip. Четыре разные причины под одним HTTP-кодом: модель не в списке разрешённых, ключ выключен, истёк срок, запрос с адреса вне allow-list. Смотрите error.code, а не только статус.

429 quota посреди рабочего дня. Квота ключа выбрана. Это и есть задуманное поведение — увеличьте квоту или разберитесь, почему объём выше расчёта.

IP allow-list и динамические адреса. Разработчику с домашним провайдером allow-list ломает работу каждые несколько дней. Ставьте его на серверные ключи, а не на dev-*.

Общий ключ «на всю команду». Ни квоты по человеку, ни разбора «кто потратил», ни отзыва одного доступа. Пять ключей настраиваются за десять минут.

Заблокированный на квоте прод. Продовому ключу квоту ставьте с запасом 30%. Полный справочник — коды ошибок go2llm.

FAQ

Можно ли выдать подрядчику доступ на месяц и не думать о нём? Да: ключ go2llm с квотой в долларах, списком разрешённых моделей и сроком действия. Истёк срок — запросы получают 403 expired, без вашего участия.

Что будет, если один проект выберет весь баланс? Если у ключей стоят квоты — ничего: проект упрётся в 429 quota, остальные продолжат работать. Если квоты не выставлены (или стоят 0), ключ ограничен только общим балансом, и тогда да — заберёт всё до 402 insufficient_balance.

Как закрываются документы для бухгалтерии? Порядок закрывающих документов для юрлиц и ИП и возможность оплаты по счёту мы пока не документировали — напишите в @go2llm_support, ответим и дополним страницу. Известно про возвраты: обращение принимается в течение 48 часов, рассмотрение занимает до 24 часов, возврат инициируется в течение 72 часов. Отдельно: go2llm публично заявляет, что не настраивает интеграции за клиента — подключение делает ваша команда по документации.

Дальше

Кодинг-агент · Чат-бот и поддержка · Извлечение данных · Генерация контента · Цены


Получить ключ и сделать первый запрос за 3 минуты → go2llm.tech