Ошибки
Ошибка приходит в виде {"detail": "текст", "code": "код"}. По полю code удобно решать в программе, что делать дальше. Ошибка в параметре или поле тела приходит иначе — у имени поля: {"channels": ["Номера каналов через запятую."]}.
| Ответ | code |
Что случилось |
|---|---|---|
| 400 | — | Неверный параметр или поле тела: ошибка — у имени поля |
| 401 | not_authenticated |
Нет ключа |
| 401 | authentication_failed |
Ключ неверный или отозван, доступ участника приостановлен, организация в архиве — причина в тексте |
| 403 | tariff_required |
Метод или период закрыт тарифом — в тексте нужный тариф |
| 403 | closed_channel |
Посты закрытого канала через API не отдаются |
| 403 | read_only_key |
Метод что-то меняет, а ключ только для чтения |
| 403 | limit_reached |
Предел тарифа исчерпан (например, число вебхуков) |
| 403 | manager_required |
Ключ участника: менять вебхуки может только владелец или администратор организации |
| 404 | not_found |
Канала, поста или вебхука нет, или ключ его не видит |
| 405 | method_not_allowed |
Метод HTTP не подходит к адресу (например, POST к списку каналов) |
| 409 | conflict |
Действие невозможно сейчас (проверка выключенного вебхука, включение вебхука, выключенного сотрудником) |
| 429 | quota_exceeded |
Запросы за период закончились |
| 429 | rate_limited |
Больше запросов в секунду, чем по тарифу |
| 429 | throttled |
Слишком много неверных ключей с одного адреса (30 в минуту) или, пока тарифы API не продаются, больше 50 запросов в секунду на организацию |
| 503 | timeout |
Запрос не уложился во время — сузьте выборку |
| 503 | — | Сайт на обслуживании (обычно несколько минут): ответ — страница HTML, а не JSON; повторите позже |
К сведению
При ответе 429 смотрите заголовок Retry-After — через сколько секунд можно повторить. Остаток запросов — в заголовках X-RateLimit-* и X-Quota-*: они приходят, когда лимиты тарифа действуют (у «Корпоративного» лимиты по договору — заголовков нет).
Какие ошибки бывают у конкретного метода — на его странице в справочнике методов.