Лимиты биллинга
Исчерпана квота тарифа, бюджет перерасхода кошелька, функциональные ограничения уровня тарифа и разница между мягкими и жёсткими лимитами.
Когда запрос возвращает 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: потолки уровня тарифа
Каждый тариф ограничивает количество индексов:
| Тариф | Макс. индексов |
|---|---|
| Free | 1 |
| Starter | 3 |
| Pro | 10 |
| Business | 50 |
| 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-го числа.
Связанные страницы
- Тарифы и лимиты — цифры квот по тарифам
- Лимиты запросов — поключевое (не поорганизационное) ограничение
- Ошибки и лимиты запросов — матрица кодов ошибок
- Ошибки аутентификации — для 401/403 (не 429)
Синхронизация коннектора
Коннектор помечен как офлайн, heartbeat не проходит, задачи синхронизации зависли — диагностика токенов коннектора, сетевой доступности, несоответствия режима синхронизации и кеша дашборда.
Биллинг
Как AACsearch берёт оплату — планы, единицы потребления, квоты, AI-кредиты, счета и поток апгрейда/даунгрейда.