Код приходит в поле error (ошибка ручки) или code (ошибка до ручки). Ниже — все коды, которые отдаёт API v2, по разделам. Один код может встречаться в нескольких разделах с одинаковым смыслом.
Общие
Код
HTTP
Когда
Что делать
missing_token
401
нет Authorization: Bearer или X-OnPress-Key
передать токен
invalid_token
401
токен неизвестен, отозван или не той формы
выпустить новый
too_many_auth_failures
429
больше 20 неудачных входов в минуту с адреса
ждать Retry-After
too_many_requests
429
больше 120 запросов в минуту
ждать Retry-After
cross_origin
403
запрос с кукой сессии не с адреса дашборда
токеном, а не кукой
invalid_blog_id
400
blog_id не положительное целое
исправить или перейти на /site/{siteId}/
site_not_found
404
сайта нет, он не ваш, неизвестный домен
проверить site_id и права
insufficient_role
403
не администратор сайта; для сетевой операции — не суперадмин
нужен администратор
wrong_realm
409
запись в блог другого контура; ничего не записано
слать в https://onpress.pro/api/v2/
invalid_json
400
тело не JSON
проверить JSON
body_too_large
413
тело больше 10 МБ
меньше тело; файлы — по url
not_found
404
нет такого маршрута
проверить путь и метод
method_not_allowed
405
GET на POST-ручку /auth/*
POST
internal_error
500
сбой сервиса
повторить, сообщить
db_error
500
база отказала в записи; db_code
повторить, сообщить
registry_busy
503
реестр фреймов или наборов занят параллельной записью
повторить через секунду
internal_unavailable
502
исполнитель на сайте не ответил или не установлен
повторить позже
internal_failed
502
исполнитель ответил ошибкой
смотреть message
nothing_to_update, nothing_to_change
400
в теле нет полей для правки
прислать поле
unknown_field
400
лишнее поле; допустимые в message или allowed
убрать поле
Страницы
Код
HTTP
Когда
markdown_required
400
нет markdown или не строка
blocks_invalid
400
blocks не массив
block_unsupported
400
блок в blocks не core/*, не блок плагина onpress/* и не raw
dry_run_not_supported
400
dry_run у публикации — пробуйте черновиком
invalid_status
400
статус вне publish, draft, pending, private, future
frame_single
400
во frame список или не строка
excerpt_invalid
400
excerpt не строка
domain_required
400
сайт не выбран ни адресом, ни domain
page_not_found
404
нет страницы по id, слагу или пути
not_a_page
404
ссылка ведёт на запись другого типа
frame_not_found
404
фрейма нет на этом сайте
ambiguous_page
409
слаг у нескольких страниц; matches или candidates
lang_mismatch
409
id — страница другого языка; для перевода — translation_of
page_language_mismatch
409
найденная страница другого языка, чем lang; actual_lang
page_has_no_language
409
у страницы нет языка
domain_mismatch
409
domain во frontmatter — другой сайт
page_has_children
409
удаление страницы с детьми без with_children; children
front_page_delete
409
удаление главной, страницы блога или главной языка
polylang_inactive
409
lang на сайте без языков
parent_not_found
422
сегмент url — не страница; segment
absolute_url_in_path
422
схема или домен в url
unknown_language
422
языка нет на сайте; languages
unknown_status, unknown_orderby
422
неизвестный статус или сортировка в списке
page_vanished
500
страница исчезла во время записи — повторить
parent_create_failed
500
не удалось создать недостающего родителя
post_type_not_supported
501
type не page
acf_block_unsupported
501
ACF-блок в blocks
exporter_missing
501
на сайте нет выгрузчика markdown
export_failed
—
выгрузка не удалась; у GET /pages/{ref} — в markdown_error
delete_failed
—
ядро отказало удалить страницу; внутри записи removed
Переводы
Код
HTTP
Когда
translation_link_failed
422
translation_of не сработал; reason: polylang_missing, lang_required, origin_not_found, origin_has_no_language, same_language
translation_link_failed
409
группу нельзя записать: участники не совпадают с языками; rejected
translation_group_conflict
409
найденная по слагу страница — в другой группе
front_page_group_conflict
409
то же, и это главная языка
bad_translations
400
translations не объект
translations_rejected
409
записи карты неверны; rejected: [{lang, ref, reason}]
page_in_other_group
409
страница в другой группе; its_group, target_group
same_language
409
язык перевода совпадает с языком страницы
page_required
400
нет page
Фреймы
Код
HTTP
Когда
frame_html_required
400
нет html
invalid_slug
400
слаг не по схеме; pattern, hint
frame_url_not_supported
400
url во входе: у фрейма нет адреса
frame_ref_required
400
пустая ссылка на фрейм
frame_ref_conflict
400
во вставке onpress/frame два ключа ссылки (name и алиас) называют разные фреймы; conflicts
page_required
400
assign без page
nothing_to_rebake
400
POST /frames/rebake без признаков
frame_not_found
404
нет фрейма
slug_taken
409
слаг занят; id владельца
gone
410
снятые умолчания и типы фреймов
frame_too_large
413
больше 2 МБ; max_bytes
Данные
Код
HTTP
Когда
dataset_name_required
400
нет имени
bad_dataset_name
400
имя не [a-z0-9][a-z0-9_-]{0,63}
bad_dataset_items
400
нет items или не массив/объект
bad_patch_op
400
неизвестная операция или нет данных
item_ref_required
400
операция без index и match
match_token_unsupported
400
токен в match, который сервис не считает; supported
field_belongs_elsewhere
400
PATCH /data/site.settings с полем, которое меняется в другом месте
whole_list_not_accepted
400
PATCH /data/site.languages со списком
bad_menu_items
400
PUT /data/menu.* без массива items
lang_required
400
PATCH /data/site.languages без lang
invalid_page
400
PUT /data/site.front_page без page
source_not_found
404
нет источника или набора
dataset_not_found
404
нет набора (или варианта языка) для правки или удаления
item_not_found
404
нет элемента по индексу или фильтру
menu_not_assigned
404
в области нет меню
wrong_method_for_source
405
не тот метод; правильный в write
reserved_dataset_name
409
имя зарезервировано платформой
computed_source
409
запись в pages.* или breadcrumbs; readonly_because
system_source_not_deletable
409
DELETE системного источника
dataset_too_large
413
больше 512 КБ
Меню
Код
HTTP
Когда
menu_name_required
400
нет name
menu_ref_required
400
нет ссылки на меню
location_required
400
нет location
unknown_location
400
тема не знает области; locations
unknown_language
400
нет языка
bad_items
400
items не массив
bad_reorder
400
нет order
item_target_required
400
пункт без page и url
menu_not_found
404
нет меню
menu_not_assigned
404
~область пуста
item_not_found
404
нет пункта
page_not_found
404
пункт ведёт на несуществующую страницу
ambiguous_menu
409
имя у нескольких меню
menu_items_unresolved
409
пункты не разрешились; ничего не записано; errors
menu_items_invalid
409
пункты на неопубликованные страницы; allow_invalid
bad_parent
409
пункт сам себе родитель
polylang_inactive
409
язык на сайте без языков
menu_assignment_not_stored
500
карта областей после записи не совпала; ничего не записано
invalid_theme
400
неверное имя темы в theme
Сайдбар документации
Код
HTTP
Когда
bad_items
400
items не массив
bad_missing
400
missing не hide и не keep
bad_reorder
400
нет ни order, ни id
bad_status
400
неизвестный статус; allowed
item_ref_required
400
пустая ссылка на пункт
docs_frame_not_found
404
названного фрейма документации нет
page_language_mismatch
404
путь с префиксом одного языка, страница — другого
duplicate_item
409
страница в дереве дважды
not_a_sibling
409
в order пункт другой ветки
sidebar_items_unresolved
409
PUT не применён; errors с координатами
Стили
Код
HTTP
Когда
css_required
400
нет css или не строка
css_too_large
413
больше 256 КБ
unknown_token
400
нет такого токена
bad_token_value
400
значение не того типа или вне диапазона
invalid_theme
400
неверное имя темы
Настройки, главная, кэш
Код
HTTP
Когда
invalid_blogname, invalid_blogdescription
400
не строка или пустое название
invalid_site_icon
400
не id вложения
invalid_analytics
400
не объект с ключами счётчиков или неизвестный ключ; допустимые в allowed
secret_field
400
в analytics секретный ключ (ywm_client_token, токены, ключи, пароли): ручка настроек секретов не пишет и не отдаёт, имена в fields