Ошибки, ограничения и восстановление

Контракт ответа берите из справочника: у разных опубликованных доменов сохранены прежние envelopes. Не извлекайте данные из текста message; используйте HTTP status, code и публичные details, если они есть.

ОтветСледующий шаг
400Исправьте обязательные поля, UUID, multipart или неподдерживаемый тип адреса
401Проверьте credential, срок действия и завершённую rotation grace; запросите у владельца действующий ключ
403Владелец проверяет scopes, режим, approved actor и его актуальные права; повтор без изменения прав бессмысленен
404Проверьте tenant/channel/resource ID; чужой объект не раскрывается
409При CAS перечитайте объект и предложите человеку новое решение; прежний ключ нельзя использовать с новым payload
410Курсор устарел: получите новую точку событий и выполните полный resync
429Уважайте Retry-After, снижайте параллельность; лимиты доменов различаются
5xx / timeoutТолько для операции с подтверждённой runtime поддержкой Idempotency-Key повторите прежний ключ и payload. AI/Channels: сначала сверка чтением, автоматический повтор создания может дать дубликат. Исходящее с unknown/partial автоматически не пересылайте

Messaging: чтение 300/мин, запись 60/мин на приложение; страницы до 100, текст до 20000 символов, до 10 вложений по 10 МиБ. Upload хранится 24 часа; лента событий — 90 дней. Это фактические ограничения, а не обещание времени доставки. Лимиты остальных API и конкретных полей указаны в OpenAPI и domain guides.

HTTP accepted не подтверждает отправку провайдером, попадание во входящие или прочтение. Неподдерживаемый delivery receipt может никогда не появиться.

Messaging возвращает ошибки как { "error": { "code": "...", "message": "...", "details": {}, "requestId": "..." } }; details и requestId могут отсутствовать. Сохраняйте requestId или ответный X-Request-Id для диагностики. У AI/Channels и обычных webhooks другие сохранённые envelopes — не применяйте к ним парсер Messaging.