AACsearch
Диагностика

Лимиты биллинга

Исчерпана квота тарифа, бюджет перерасхода кошелька, функциональные ограничения уровня тарифа и разница между мягкими и жёсткими лимитами.

Когда запрос возвращает quota_exceeded или функция молча недоступна, причина — одна из трёх: месячная квота поисковых единиц, бюджет перерасхода кошелька или функциональное ограничение уровня тарифа. Для каждой — своё решение.

Симптомы

Что вы видитеВероятная причина
429 quota_exceededМесячные поисковые единицы исчерпаны, перерасход кошелька отключён или пуст
Функция возвращает 403 feature_not_available_on_planУровень тарифа не включает эту функцию
Достигнут лимит коннектора: «Нельзя создать более N индексов на Free»Потолок индексов уровня тарифа
Внезапное падение трафика до нуля в середине месяцаЖёсткий лимит без бюджета перерасхода
Сервис продолжает работать, но неожиданный расход кошелькаПревышен мягкий лимит с включённым перерасходом

См. Тарифы и лимиты для цифр по каждому тарифу.

Проверка 1: ваше положение по месячной квоте

Откройте Настройки → Биллинг → Использование. Отображаются три показателя:

ПоказательЗначение
Использовано поисковых единиц / лимитКоличество за текущий месяц против лимита тарифа
Баланс кошелькаЕсли перерасход включён, сколько осталось
Дата сбросаВсегда 1-е число следующего календарного месяца, UTC

Вы также можете получить это программно с помощью административного ключа:

curl -X GET https://app.aacsearch.com/api/v1/projects/<projectId>/usage \
  -H "Authorization: Bearer aa_admin_..."

Ответ включает searchUnitsUsed, searchUnitsCap, walletBalanceMinor (в копейках), periodStartUtc, periodEndUtc.

Проверка 2: бюджет перерасхода

Если вы на платном тарифе, вы можете включить перерасход за счёт кошелька. Когда он включён, запросы сверх мягкого лимита оплачиваются из кошелька (с тарификацией за 1 тыс. поисковых единиц) вместо возврата 429.

СостояниеПоведение
Перерасход отключёнМягкий лимит = жёсткий лимит. 429 quota_exceeded при достижении.
Перерасход включён, кошелёк имеет балансЗапросы сверх мягкого лимита списываются с кошелька. Сервис продолжается.
Перерасход включён, кошелёк пустЖёсткий лимит возвращает 429 quota_exceeded.

Включите перерасход в Настройки → Биллинг → Бюджет перерасхода. Установите максимальный месячный потолок расходов, чтобы не было сюрпризов.

Проверка 3: функциональные ограничения

Некоторые функции недоступны на определённых уровнях тарифа:

ФункцияМинимальный тариф
Пользовательские синонимыStarter
Курирование по результатамPro
AI-рекомендацииPro
SCIM 2.0 синхронизация пользователейBusiness
Хранение журнала доставки вебхуков > 7 днейBusiness
SLA / выделенная поддержкаEnterprise

Запрос к ограниченной функции возвращает:

{
  "error": "feature_not_available_on_plan",
  "message": "Curations require the Pro plan or higher.",
  "requiredPlan": "pro",
  "upgradeUrl": "https://app.aacsearch.com/settings/billing"
}

Обновите тариф в Настройки → Биллинг → Сменить тариф.

Проверка 4: потолки уровня тарифа

Каждый тариф ограничивает количество индексов:

ТарифМакс. индексов
Free1
Starter3
Pro10
Business50
EnterpriseБез ограничений

Попытка создать ещё один возвращает:

{
  "error": "plan_limit_reached",
  "message": "Free plan allows 1 index. Upgrade to Starter for up to 3.",
  "requiredPlan": "starter"
}

Мягкий vs жёсткий лимит (подробно)

Срабатывание мягкого лимита:
  ├─ Email + алерт в дашборде контакту по биллингу
  ├─ Запросы всё ещё обслуживаются, если включён бюджет перерасхода
  └─ Кошелёк начинает списываться, если перерасход включён

Срабатывание жёсткого лимита:
  ├─ Все эндпоинты поиска и индексации возвращают 429 quota_exceeded
  ├─ Коннекторы перестают принимать вызовы синхронизации
  └─ Сбрасывается в 00:00 UTC 1-го числа следующего месяца

Они совпадают, когда перерасход отключён. С включённым перерасходом жёсткий лимит срабатывает только когда сам кошелёк исчерпан.

Поключевые vs поорганизационные

Это разные вещи:

ЛимитОбластьСчётчик
rateLimitPerMinuteНа API-ключСкользящее окно в минуту
searchUnitsCapНа организациюКалендарный месяц

Достижение rateLimitPerMinute возвращает 429 rate_limit_exceeded (другой код ошибки) и не связано с биллингом. См. Лимиты запросов.

Матрица решений

ДиагнозРешение
Квота Free исчерпанаЛибо обновить до Starter+, либо ждать месячного сброса
Квота платного тарифа исчерпана, перерасход выключенВключить перерасход в Настройки → Биллинг
Квота платного тарифа исчерпана, кошелёк пустПополнить кошелёк или обновить уровень тарифа
Функция ограничена тарифомОбновить до требуемого уровня
Достигнут потолок индексовОбновить уровень или удалить неиспользуемый индекс
Неожиданный расход кошелькаАудит недавнего использования; выявить runaway-вызывающего и ограничить его

Прогнозирование следующего месяца

Чтобы оценить, уложитесь ли вы в текущий тариф:

const usage = await admin.getUsage(7); // последние 7 дней
const dailyAvg = usage.rows.reduce((s, r) => s + r.searchUnits, 0) / 7;
const projected30d = dailyAvg * 30;
console.log("прогноз на этот месяц:", projected30d);
console.log("лимит тарифа:", planCap);

Если projected30d приближается к лимиту тарифа, обновите тариф заранее, не дожидаясь алерта.

Диагностический пакет

ПолеПримечания
ID организацииобязательно
Уровень тарифаиз Настройки → Биллинг
Начало периода (UTC)рассматриваемый календарный месяц
searchUnitsUsed, searchUnitsCapиз usage API
Состояние перерасхода и баланс кошелькаиз Настройки → Биллинг
Когда был достигнут лимитUTC метка времени
Что вы делали в это времяодно предложение

Квота действует за календарный месяц UTC, а не за 30 дней. Сброс всегда происходит в 00:00 UTC 1-го числа.

Связанные страницы

On this page