Перейти к содержимому страницы
Документация
Документация Make Agent Fast

Области и ошибки

Предоставляйте минимальные права и обрабатывайте каждый стабильный код ошибки публичного API.

Кратко

Предоставляйте минимальные права и обрабатывайте каждый стабильный код ошибки публичного API.

Путь запроса APIОграниченный ключ → версионированный ресурс → подписанный ответ
Приложение / SDKКлюч Bearermaf_live_…/api/v1/…РесурсJSON
26 областейСтабильные кодыID запросов

Каждая операция публичного API требует одну явную область. Валидные учётные данные без этой области получают 403 insufficient_scope; они никогда не повышаются молча до более широкого доступа.

Справочник областей#

ОбластьРазрешает
account:readЧитать аутентифицированный аккаунт, тариф, права и сводку кошелька
sites:readПеречислять и получать сайты
sites:writeСоздавать, обновлять, публиковать и отменять публикацию сайтов
agents:readЧитать настройки агентов
agents:writeОбновлять характер, инструкции, языки, голос, состояние встраивания и разрешённые origin
knowledge:readПеречислять источники знаний и FAQ
knowledge:writeПринимать или удалять текстовые источники и создавать, обновлять или удалять FAQ
conversations:readПеречислять диалоги и получать их сообщения
leads:readПеречислять собранные заявки
leads:writeСоздавать, обновлять, квалифицировать и принимать заявки в воронку возможностей
pipeline:readЧитать стадии, аккаунты, возможности, активности и состояние синхронизации CRM
pipeline:writeНастраивать стадии; создавать или обновлять возможности и аккаунты; импортировать или повторять результаты CRM
analytics:readЧитать события аналитики сайта
connectors:readПеречислять состояние коннекторов без возврата секретов
connectors:writeСоздавать, обновлять, включать, отключать и удалять коннекторы
domains:readЧитать состояние доменов и требуемые DNS-записи
domains:writeПодключать, проверять, обновлять и удалять домены
broadcasts:readПеречислять рассылки и состояние доставки
broadcasts:writeСоздавать черновики и ставить в очередь отправку рассылки
notifications:readПеречислять уведомления владельца
notifications:writeОтмечать уведомления прочитанными или непрочитанными
monetization:readПеречислять продукты монетизации
monetization:writeСоздавать, обновлять, активировать, деактивировать и удалять продукты
usage:readЧитать учитываемые события использования
webhooks:readПеречислять конечные точки вебхуков и состояние доставки
webhooks:writeСоздавать и удалять конечные точки вебхуков

Используйте области чтения для задач отчётности. Добавляйте область записи только когда интеграция выполняет эту мутацию. Например, экспорту заявок обычно нужны sites:read и leads:read, а не sites:write или agents:write.

Сбои областей#

{
  "error": {
    "code": "insufficient_scope",
    "message": "The API key does not grant the required scope.",
    "details": { "required": ["sites:write"] },
    "request_id": "6c0b2f2e-..."
  }
}

Создайте замещающий ключ с недостающей областью и обновите серверный секрет. Области существующего ключа API нельзя расширить на месте; это делает изменения привилегий явными и аудируемыми.

Оболочка ошибок#

Все ошибки API используют одну форму верхнего уровня:

type ApiError = {
  error: {
    code: string;
    message: string;
    details?: unknown;
    request_id: string;
  };
};

Ветвитесь на error.code, а не на английском message. Сообщения могут улучшаться без смены версии. Логируйте error.request_id и заголовок ответа x-request-id с именем операции, статусом и попыткой повтора — но никогда не логируйте заголовок авторизации или секреты запроса.

Справочник статусов и кодов#

HTTPСтабильный кодЗначениеНормальный ответ
400invalid_requestВалидация не прошла или поле не поддерживаетсяИсправьте поля в details; не повторяйте неизменённый ввод
400invalid_jsonТело не является объектом JSON или содержит невалидный JSONСериализуйте один валидный объект JSON
401authentication_requiredЗаголовок Bearer отсутствуетПрикрепите серверные учётные данные
401invalid_api_keyКлюч недействителен, истёк, отозван или его владелец больше не существуетЗамените или ротируйте ключ
403subscription_requiredУ владельца нет активного платного тарифаВосстановите подписку перед повтором
403insufficient_scopeУчётным данным не хватает области операцииСоздайте замещающие учётные данные с минимальными правами
403account_pausedДоступ API приостановлен для аккаунтаВозобновите доступ API или свяжитесь с владельцем аккаунта
404not_foundКонечная точка или принадлежащий ресурс не найденыПроверьте путь и ID, принадлежащий арендатору
409conflictТекущее состояние ресурса предотвращает действиеПрочитайте текущее состояние перед повтором
415invalid_requestТело мутации не application/jsonОтправьте Content-Type: application/json
429rate_limit_exceededМинутная корзина тарифа ключа исчерпанаДождитесь Retry-After и примените джиттер
500internal_errorЗапрос не может быть завершёнПовторите безопасную или идемпотентную операцию и сообщите ID запроса

Ресурсы вне аккаунта владельца учётных данных могут возвращать 404 вместо раскрытия, существует ли ID другого арендатора.

Детали валидации#

Валидация полей возвращает пути, которые можно показать рядом с вашими собственными элементами формы:

{
  "error": {
    "code": "invalid_request",
    "message": "Request validation failed.",
    "details": [
      { "path": "content.headline", "message": "String must contain at least 1 character(s)" }
    ],
    "request_id": "6c0b2f2e-..."
  }
}

Тела мутаций должны быть объектами JSON. Массивы, пустые тела, данные формы и JSON, отправленный с текстовым типом контента, отклоняются.

Решения о повторе#

  • Повторяйте 429 после числа секунд в Retry-After.
  • Повторяйте 500 только для безопасных чтений или записей, защищённых тем же Idempotency-Key.
  • Повторяйте идемпотентный 409 в процессе после его заголовка Retry-After: 2.
  • Не повторяйте 400, 401, 403, 404 или конфликт состояния, пока причина не изменится.

См. Лимиты частоты для поведения отката и Справочник API для требуемой области каждой операции.