Ошибки

Любая ошибка выглядит одинаково и содержит неизменный code. Обрабатывайте ошибки по коду: сообщение написано для людей, и его формулировка может меняться.

{ "error": { "code": "invalid_key", "message": "That API key does not exist." } }

Некоторые ошибки содержат, кроме этих двух, дополнительные поля: parameter - какой параметр неверен, retry_after - сколько ждать, limit и used - для исчерпанного лимита.

Все коды

СтатусКодКогда
400missing_queryquery пуст или не передан.
400unknown_formatformat - не один из шести.
400unknown_columnВ columns указано несуществующее поле.
400format_not_availableЗапрошен плоский формат там, где возвращаются не строки выдачи.
400per_page_too_largeper_page больше лимита строк вашего тарифа. Лимит указан в ошибке.
400invalid_jsonТело POST-запроса - некорректный JSON.
401missing_keyНет заголовка Authorization: Bearer.
401invalid_keyКлюч не принадлежит ни одному аккаунту.
403plan_requiredУ аккаунта нет платного тарифа.
404unknown_endpointТакого пути нет. Существующие перечислены в ошибке.
405method_not_allowedAPI только для чтения. Используйте GET или POST с телом JSON.
429too_many_requestsЗапросы идут чаще десяти в минуту (API и MCP вместе).
429quota_exceededСуточный лимит поисков исчерпан.
429snippet_quota_exceededСуточный лимит фрагментов исчерпан. Поиск без фрагментов по-прежнему работает.

Что делать в каждом случае

Ошибки и форматы

Ошибки приходят в JSON или в XML, если был запрошен format=xml. У плоских форматов нет способа записать ошибку, поэтому неудачный запрос, в котором был указан csv, получит JSON. Значит, клиенту, который читает CSV, нужно проверять код статуса, а не считать любое тело строками выдачи.

Коды без чтения этой страницы

GET / возвращает в JSON все перечисленные выше коды с их значением. Ключ для этого не нужен, так что клиент можно написать под полный набор кодов, ни разу не открыв браузер.

curl https://api.publicwww.com/
Далее Примеры кода