LLM API providers — balance access audit

Назначение

Рабочий список проверки поставщиков LLM API на предмет доступа к балансу:

  • по API
  • через сайт / личный кабинет
  • через публичную документацию
  • через внутренние endpoints фронтенда

Единый формат для мониторинга

Целевое поле для всех провайдеров: remaining.

Нормализованная схема:

  • provider — имя провайдера
  • statusconfirmed / partial / unknown / blocked
  • auth_type — тип авторизации
  • balance_endpoint — основной endpoint баланса, если есть
  • used — использовано
  • limit — лимит
  • remaining — остаток (ключевое поле)
  • unit — единица (tokens, credits, usd, quota, …)
  • notes — пояснение по конвертации и ограничениям

Статусы

  • confirmed — подтверждено инструментами
  • partial — есть частичное подтверждение, но не полный доступ к балансу
  • unknown — данных недостаточно
  • blocked — исследование упёрлось в защиту/авторизацию

1. WormSoft

  • URL кабинета: https://ai.wormsoft.ru/lk/
  • Страница баланса: https://ai.wormsoft.ru/lk/deposit
  • API URL: https://ai.wormsoft.ru/api/gpt
  • Баланс в интерфейсе: да, пользователь видит в UI
  • Баланс по API: не подтверждён
  • Что подтверждено:
    • в ЛК/на связанных страницах есть сущности Остаток кредитов, Пополнить баланс, Потребление кредитов
    • пользователь подтверждает, что на странице https://ai.wormsoft.ru/lk/deposit есть блок:
      • Ваш текущий баланс и тариф
      • Баланс: 2 748 ₽
      • Тариф: Payed
    • пользователь подтвердил тарифную сетку страницы deposit:
      • Free5 000 кредитов каждые 20 часов
      • Promo150 000 кредитов каждые 8 часов
      • Simple500 000 кредитов каждые 5 часов
      • Payed3 000 000 кредитов каждые 4 часа
      • Wormsoft developer5 000 000 кредитов каждые 2 часа
      • Wormsoft boss10 000 000 кредитов каждые 1 час
    • найден публичный docs-раздел: https://ai.wormsoft.ru/docs/llm/subscriptions/
    • на docs-странице указан рабочий API лимитов подписок: GET /api/user-connector/subscription-limits
    • найдены auth/data маршруты кабинета:
      • POST /api/auth/base/login
      • GET /api/lk/data
      • GET /api/user-connector/current-settings
    • по клиентскому коду _nuxt подтверждено, что UI баланса рендерится из поля label ответа POST /api/lk/data
    • из того же ответа используются поля:
      • limitResetAt
      • subscriptionRemainingSeconds
      • tokenSeries
      • creditSeries
      • tokenCostSeries
      • tokenCostByModel
      • referralLink
      • referralWebLink
      • referralsCount
  • Проверка API-ключом пользователя:
    • POST /api/lk/data401 Unauthorized
    • GET /api/user-connector/current-settings401 Unauthorized
    • GET /api/user-connector/subscription-limits200 OK
  • Проверка browser-login по данным пользователя:
    • UI форма отправляет POST /api/auth/base/login
    • фактический ответ сейчас: 404 Not Found
    • cookies auth не выставляются (tokenBase, refreshTokenBase пустые)
    • GET /api/lk/data в текущем состоянии отвечает 404 Not Found
  • Что реально доступно программно:
    • лимиты подписок/планов через GET /api/user-connector/subscription-limits
    • поля по каждому плану: amount, seconds, price, periodDays, rateLimitRequests, rateLimitSeconds
    • примеры: free.amount=5000, promo.amount=150000, simple.amount=500000, payed.amount=3000000
  • Нормализация сейчас:
    • provider: wormsoft
    • used: null
    • limit: 3000000
    • remaining: 2748
    • unit: RUB
    • plan: Payed
    • limit_unit: credits
    • limit_period_hours: 4
    • limit_period_display: каждые 4 часа
    • subscription_limits_endpoint: https://ai.wormsoft.ru/api/user-connector/subscription-limits
    • balance_endpoint: ui_deposit_page_or_internal_lk_data
    • auth_type: website session / unknown internal auth
  • Вывод:
    • для утреннего отчёта WormSoft нужно тянуть UI-баланс страницы deposit: 2 748 ₽
    • для тарифа Payed лимит: 3 000 000 кредитов каждые 4 часа
    • API key не даёт доступ к текущему балансу ЛК
    • endpoint лимитов подписки — это справочник тарифов, не сам пользовательский баланс
  • Статус: confirmed-ui-only
  • Автоматизация:
    • баланс страницы deposit — нужен browser/session-based check
    • лимиты подписок — да
    • приоритетный формат утреннего отчёта: баланс в RUB + тариф + лимит + период лимита

5. Polza.ai

  • Dashboard: https://polza.ai/dashboard
  • Docs: https://polza.ai/docs
  • API base URL: https://polza.ai/api/v1
  • Баланс программно: да
  • Что подтверждено по локальному конфигу:
    • base URL взят из локального конфига/бэкапов Hermes/OpenClaw
    • auth: Authorization: Bearer <API_KEY>
    • провайдер присутствует в локальной конфигурации как реальный upstream
  • Что подтверждено инструментами:
    • GET https://polza.ai/api/v1/models200 OK
    • GET https://polza.ai/api/v1/balance200 OK
    • типовые endpoints /balances, /credit, /credits, /usage, /billing/usage, /dashboard/billing/usage, /subscription404 Not Found
  • Реальный ответ GET /balance:
    • remaining: 580.09798977
    • used: 15248.17574115
    • явного limit нет
  • Нормализация:
    • provider: polza
    • used: 15248.17574115
    • limit: null
    • remaining: 580.09798977
    • unit: RUB
    • balance_endpoint: https://polza.ai/api/v1/balance
    • usage_endpoint: not found
    • auth_type: bearer
  • Вывод:
    • у Polza есть рабочий balance API
    • remaining и used доступны программно
    • явный limit API не отдаёт
  • Статус: confirmed
  • Автоматизация:
    • balance/remaining — да
    • used — да
    • limit — нет явного поля, оставить null

2. Tokenator

  • Dashboard: https://dashboard.tokenator.cloud/
  • API endpoints:
    • Anthropic: https://api.tokenator.top/anthropic
    • OpenAI: https://api.tokenator.top/v1
  • Dashboard/API key alias: Key-8a5f694f
  • Баланс/лимит в интерфейсе: да
  • Что подтверждено пользователем:
    • Использовано: 55,018,555
    • Лимит: 255,000,000
    • Остаток: 199,981,445
  • Что подтверждено инструментами:
    • GET https://api.tokenator.top/v1/tokens с Authorization: Bearer <API_KEY>200 OK
    • JSON ответа содержит:
      • used: 55018555
      • limit: 255000000
      • remaining: 199981445
      • name: key-8a5f694f
      • image_limit: 0
      • image_used: 0
      • image_remaining: 0
  • Нормализация:
    • provider: tokenator
    • used: 55018555
    • limit: 255000000
    • remaining: 199981445
    • unit: tokens
    • balance_endpoint: https://api.tokenator.top/v1/tokens
    • auth_type: bearer
  • Вывод:
    • Tokenator даёт баланс токенов по API
    • рабочий endpoint: GET /v1/tokens
    • по словам пользователя также доступен зеркальный anthropic-compatible route: GET /anthropic/v1/tokens
    • это годится для автопроверки
  • Статус: confirmed
  • Автоматизация:
    • готово для прямой API-проверки баланса/лимита/остатка
    • основной endpoint: https://api.tokenator.top/v1/tokens

3. Codex.sale

  • Кабинет: https://codex.sale/user
  • API base URL: https://codex.sale/v1
  • Баланс/лимит в интерфейсе: да
  • Баланс/остаток программно: да, через session auth кабинета
  • Что подтверждено в UI:
    • после логина открыт dashboard unf86
    • основной балансовый виджет показывает: Tokens 351.31 M
    • есть статистика Requests in 7 Days: 956
    • есть оценка Estimated OpenAI API Cost: $140.35
  • Что подтверждено инструментами по internal API:
    • POST https://codex.sale/api/user-auth/login с login/password → 200 OK
    • login выдаёт cookie codex_lb_user_session
    • GET https://codex.sale/api/user/me с session cookie → 200 OK
    • GET https://codex.sale/api/user/overview?logsLimit=25&logsOffset=0&ledgerLimit=5 с session cookie → 200 OK
    • GET /api/user/me с Authorization: Bearer <API_KEY>401 auth_required
    • вывод: internal balance endpoints работают через cookie-сессию, не через API key
  • Поля баланса из GET /api/user/me:
    • rubBalance: 351.0153
    • approxRubEquivalent: 351.0153
    • baseTokensRemaining: 351015300
    • adjustmentTokensRemaining: 0
    • approxTokensRemaining: 351015300
    • tariffLabel: "1M = 1 RUB"
  • Что подтверждено по OpenAI-compatible API:
    • GET /v1/models с Authorization: Bearer <API_KEY>200 OK
    • GET /v1/usage с Authorization: Bearer <API_KEY>200 OK
    • ответ GET /v1/usage:
      • request_count: 1667
      • total_tokens: 81483048
    • GET /v1/tokens404 Not Found
    • GET /v1/balance404 Not Found
    • GET /v1/credits404 Not Found
    • GET /v1/account404 Not Found
    • GET /v1/me404 Not Found
    • GET /v1/limits404 Not Found
    • GET /v1/subscription404 Not Found
  • Auth observations:
    • OpenAI-compatible API: Authorization: Bearer <API_KEY>
    • x-api-key с этим ключом даёт invalid_api_key
    • balance/internal API: login/password → session cookie codex_lb_user_session
  • Нормализация:
    • provider: codex-sale
    • used: 81483048 (подтверждено по /v1/usage как total_tokens)
    • limit: null (явного поля лимита не найдено)
    • remaining: 351015300
    • unit: tokens
    • remaining_display: 351.0153M tokens
    • money_remaining: 351.0153 RUB
    • balance_endpoint: https://codex.sale/api/user/me
    • usage_endpoint: https://codex.sale/v1/usage
    • auth_type: session_cookie_for_balance + bearer_for_usage
  • Вывод:
    • Codex.sale можно автоматизировать для ежедневной проверки остатка без браузера
    • лучший источник текущего remaining: GET /api/user/me после POST /api/user-auth/login
    • лучший источник usage: GET /v1/usage через Bearer API key
    • явный limit не найден
  • Статус: confirmed
  • Автоматизация:
    • balance/remaining — да, через login session
    • usage — да, через Bearer API key
    • limit — нет явного поля, оставить null до появления данных

4. Claudexia

  • Сайт: https://claudexia.tech/
  • API base URL: https://api.claudexia.tech/v1
  • Баланс в интерфейсе: да
  • Баланс программно: да
  • Что подтверждено по API:
    • GET https://api.claudexia.tech/v1/models200 OK
    • GET https://api.claudexia.tech/v1/balance200 OK с рабочим ключом
    • GET https://api.claudexia.tech/v1/usage200 OK с рабочим ключом
    • GET https://api.claudexia.tech/v1/credits404 Not Found
  • Рабочая авторизация:
    • Authorization: Bearer <API_KEY> → работает
    • x-api-key: <API_KEY> → работает
    • api-key: <API_KEY>401 unauthorized
    • логин/пароль не понадобились
  • Реальный ответ GET /v1/balance:
    • balance_cents: 726
    • total_input_tokens: 137594214
    • total_output_tokens: 1122025
    • total_tokens_used: 138716239
  • Реальный ответ GET /v1/usage:
    • формат: список data[]
    • поля записи:
      • created_at
      • model
      • input_tokens
      • output_tokens
      • total_tokens
      • cost_cents
    • в текущем ответе подтверждено 20 записей usage
  • Нормализация:
    • provider: claudexia
    • used: 138716239
    • limit: null
    • remaining: 726
    • unit: cents_for_balance / tokens_for_usage
    • remaining_display: 726 cents
    • balance_endpoint: https://api.claudexia.tech/v1/balance
    • usage_endpoint: https://api.claudexia.tech/v1/usage
    • auth_type: bearer_or_x_api_key
    • extra:
      • total_input_tokens: 137594214
      • total_output_tokens: 1122025
  • Вывод:
    • у Claudexia есть рабочий balance API и usage API
    • для ежедневной автоматизации провайдер готов
    • явный limit API не отдаёт, поэтому в unified report пока null
  • Статус: confirmed
  • Автоматизация:
    • balance/remaining — да
    • usage — да
    • limit — нет явного поля, оставить null

Morning cards — agreed output format

🟦 Tokenator
https://dashboard.tokenator.cloud/
Баланс: 199 981 445 tokens
Лимит: 255 000 000 tokens
Потрачено: 55 018 555 tokens
Ключ: key-8a5f694f
Источник данных: API
 
---
 
🟪 Codex.sale
https://codex.sale/user
Баланс: 351.02 ₽ (351.02M tokens )
Потрачено: 81.48M tokens
Лимит: —
Источник данных: ЛК + API
 
---
 
🟨 Claudexia
https://claudexia.tech/dashboard
Баланс: $14.52
Запросов: 165
Input: 11 906 161 tokens
Output: 49 138 tokens
Потрачено: $4.54
Источник данных: ЛК
 
---
 
🟩 WormSoft
https://ai.wormsoft.ru/lk/deposit
Баланс: 2 748 ₽
Тариф: Payed
Лимит: 3 000 000 credits: каждые 4 часа
Стоимость тарифа: 2 500 ₽/мес
Источник данных: ЛК
 
---
 
🟧 Polza
https://polza.ai/dashboard
Баланс: 580.10 ₽
Потрачено: 15 248.18 ₽
Источник данных: API

Mapping / normalization rules

  • Всегда выводить карточками, не таблицей.
  • Вторая строка каждой карточки — ссылка на кабинет/дашбоард.
  • Последняя строка — Источник данных: API или ЛК или ЛК + API.
  • Основное поле для утра — текущий баланс в нативных единицах провайдера.
  • Если есть лимит и потрачено — выводить их отдельными строками.
  • Для подписок дополнительно выводить тариф, период лимита и стоимость тарифа.
  • Не подменять данные API-оценками из сторонних полей, если пользователь явно ориентируется на цифры из ЛК.
  • Для Claudexia утренние карточки ориентировать на ЛК-метрики (Current Balance, Requests, Input, Output, Total Cost), а не на raw /v1/balance, если между ними есть расхождение.
  • Для Codex.sale показывать и RUB, и token equivalent, если обе метрики доступны.
  • Для WormSoft лимит брать из тарифа страницы deposit:
    • Payed3 000 000 credits каждые 4 часа, 2 500 ₽/мес

Следующие провайдеры

Добавлять сюда по мере проверки.