Ошибки 401 / 404 / 409 / 429, superseded и пустая очередь
Коды ответов внешнего API: 401 — нет или неверный ключ, 404 — проект, доставка или статья не найдены, 409 — конфликт состояния, 429 — превышен лимит. Пустой ответ pull — не ошибка.
Коды ошибок
| Код | Причина | Что делать |
|---|---|---|
401 Unauthorized | Нет заголовка X-Api-Key или ключ неверный. | Проверьте ключ. Если его заменили в панели, обновите во всех интеграциях — X-Api-Key, Project ID, права и безопасная ротация ключа аккаунта. |
404 project_not_found | Проект не найден или принадлежит другому аккаунту. | Проверьте project_id и ключ. |
404 delivery_not_found | Доставка не найдена или чужая. | Проверьте delivery_id из ответа pull. |
404 article_not_found | Статья не найдена или чужая. | Для PATCH нужен article_id, а не delivery_id. |
400 invalid_external_url | Адрес не подходит для исправления. | Нужен постоянный HTTP(S)-адрес на домене проекта без логина, параметров и якоря. |
409 delivery_already_resolved | Доставка уже закрыта с другим решением или адресом, либо заменена новой версией (superseded). | Не повторяйте с другими данными. Заберите новую версию через pull; адрес меняйте через PATCH. |
409 delivery_kind_mismatch | Вызван result не того типа. | Для kind: new — /articles/new/…/result, для update — /articles/improvements/…/result. |
409 publication_not_confirmed | У статьи нет подтверждённой публикации. | Сначала отправьте accepted по доставке. |
409 external_url_conflict | Адрес уже исправлен по-другому или связан с другой статьёй. | Получите актуальный адрес и повторите с правильным expected_external_url; при accepted старой доставки — отправьте актуальный адрес или опустите поле. |
429 rate_limit_exceeded | Больше 60 запросов в секунду на ключ. | Сделайте паузу и повторите, снизьте частоту опроса. |
Пустая очередь
{"ok": true, "items": [], "count": 0} — не ошибка. Новых статей сейчас нет или сервис ещё просматривает большую очередь. Продолжайте опрос по расписанию — Polling, тайм-аут, повтор результата и идемпотентность.
Статья готова в панели, но не приходит в pull
- Статья ещё ждёт изображений или не прошла проверку текста.
- Для проекта подключён — или был подключён и затем отключён — WordPress REST или Tilda MCP. В этом случае pull по проекту всегда возвращает пустую очередь, чтобы не было двойной доставки — Сменить канал публикации и сопоставить старые статьи без дубликатов.
- Это обновление опубликованной статьи — оно приходит в
/articles/improvements/pull. - Это заменяющая версия, а запрос без
X-SerpJet-Capabilities: stable-article-identity-v1— article_id, delivery_id, article_identity, capability и защита от дублей.
Не нашли ответ? Напишите в поддержку из панели — укажите проект и что вы видите на экране.