Ошибки API solvethree: что исправить и когда повторять запрос
Начните с HTTP-статуса. 401 означает, что API отклонил ваши учётные данные; полученная задача со статусом failed означает, что запрос выполнен успешно, но решить задачу не удалось. Способы устранения различаются.
На этой странице
Устраните HTTP-ошибку до чтения результата задачи
Обрабатывайте неуспешные HTTP-ответы до чтения данных успешного ответа. Для POST /v1/tasks статус 201 означает, что создана новая задача; 200 — что идемпотентный повтор запроса вернул существующую задачу. Ни один из этих ответов не означает, что решение завершено.
- 400 — некорректное тело запроса
Сравните отправленное тело запроса с документированными полями и требованиями для вашего типа задачи.
Попробуйте: Исправьте входные данные перед повторной отправкой. Повторная отправка неизменённого некорректного тела запроса не устранит проблему. Проверьте запрос по контракту создания задачи.
- 401 — недействительный API-ключ
Убедитесь, что запрос содержит
Authorization: Bearer, за которым следует действительный API-ключ рабочего пространства.Попробуйте: Добавьте отсутствующий ключ или исправьте отклонённый. Храните его на сервере, не раскрывая в браузерном коде.
- 402 — недостаточно средств
Проверьте баланс рабочего пространства, связанного с API-ключом.
Попробуйте: Пополните баланс этого рабочего пространства перед повторной попыткой. Не считайте несвязанные HTTP-ошибки или сбои задач проблемами с балансом.
- 403 — неактивный профиль сайта
Для reCAPTCHA убедитесь, что у целевого сайта есть активный профиль, доступный вашему рабочему пространству.
Попробуйте: Настройте целевой сайт в консоли и убедитесь, что профиль активен. Указание имени хоста и действия в задаче не создаёт профиль. Этот ответ шлюза не свидетельствует о том, что целевой сайт вас заблокировал.
- 409 — конфликт идентификатора запроса
Проверьте, не использовался ли тот же
requestIdранее с другими входными данными задачи.Попробуйте: Используйте исходные входные данные, чтобы восстановить доступ к исходной задаче. Если вы хотите создать другую задачу, назначьте ей новый идентификатор запроса.
- 410 — истёк срок хранения результата
Проверьте, не запрашиваете ли вы завершённую задачу, результат которой больше не хранится.
Попробуйте: Прекратите запрашивать этот результат. Создайте новую задачу решения, если она ещё нужна. Этот статус относится к хранению результата в API, а не к сроку действия токена или cookie целевого сайта.
- 429 — превышен лимит частоты запросов
Прочитайте фактическое значение
Retry-Afterв ответе.Попробуйте: Перед повторной попыткой выждите указанное время и снизьте частоту запросов. Пока действует ограничение, не продолжайте опрос или отправку запросов с прежней частотой.
- 502 — сервис генерации недоступен
Отличайте недоступность сервиса от некорректных входных данных или недостатка средств.
Попробуйте: Повторите попытку позже. При повторной отправке того же запроса создания используйте его идентификатор запроса и неизменённые входные данные задачи.
HTTP 503 означает, что мощности для генерации недоступны. Повторите попытку позже; для того же запроса создания используйте его идентификатор запроса и неизменённые входные данные задачи.
Задача с ошибкой завершена: прекратите опрос
pendingилиsolving: продолжайте опрос существующей задачи; не создавайте замену только потому, что она ещё не готова.ready: прекратите опрос и прочитайте решение.failed: прекратите опрос и проверьтеerrorCodeиerror.
{
"id": "example_login_001",
"status": "failed",
"errorCode": "site-unreachable",
"error": "target page did not respond"
}Здесь site-unreachable — код ошибки задачи, а не HTTP-статус. Прежде чем запрашивать новое решение, проверьте переданный URL целевого сайта и убедитесь, что страница отвечает. Дальнейший опрос не перезапустит эту задачу с ошибкой, а повторная отправка с её исходным идентификатором запроса вернёт существующую задачу вместо создания новой.
После тайм-аута создания сначала восстановите задачу, а не создавайте новую
Тайм-аут соединения не доказывает, что задача не была создана. Задайте необязательный requestId до первой попытки создания, чтобы безопасно восстановить ту же логическую задачу. Он должен содержать 1–64 символа ASCII: буквы, цифры, подчёркивания или дефисы.
- 1.
Если у вас есть ID задачи, получите её
Используйте
GET /v1/tasks/:idи обработайте HTTP-ответ до проверки статуса задачи. - 2.
Если ответ на создание потерян, повторите исходный запрос
Отправьте те же входные данные задачи с тем же идентификатором запроса. Идемпотентный повтор вернёт существующую задачу, если она была создана. Не меняйте входные данные для этого ID.
- 3.
Создавайте замену, только если намерены запустить ещё одно решение
Новый идентификатор запроса означает новую работу, а не восстановление предыдущего запроса. Используйте его осознанно — например, после выяснения причины окончательного сбоя и решения повторить попытку.
См. восстановление по идентификатору запроса, чтобы узнать об обработке повторных запросов, или опрос и тайм-ауты, если создание прошло успешно, но задача ещё выполняется.
Источники и справочник API
Проблема не решена?
Отправьте в поддержку ID задачи и полученную ошибку.