Результаты запросов
Каждый request к FourA API классифицируется ровно по одному результату (outcome). Результат вычисляется один раз во время request и записывается для вашего API-ключа. Ваш dashboard, лента активности и биллинг используют одно и то же поле.
Тарифицируется только success.
Семь результатов
| Результат | Уровень | Что это значит |
|---|---|---|
success |
н/д | Доставлен корректный response. Учитывается в вашей тарифицируемой квоте. |
application_error |
target | Целевой ресурс вернул HTTP 200, но в теле содержалось поле ошибки. |
application_fail |
target | Целевой ресурс вернул статус, отличный от 2xx, который не был принят вашими правилами validate, или не вернул response вообще. |
client_error |
caller | Ваш request был отклонен до того, как он покинул FourA. Неверные параметры, некорректное значение proxy, URL, заблокированный защитой от SSRF. |
rate_limit |
FourA | Превышен лимит RPM или ограничение на количество одновременных запросов. |
service_error |
FourA | Бэкенд вернул 5xx или его тело не является валидным JSON. |
service_fail |
FourA | Сетевой сбой: таймаут, отказ в соединении, ошибка DNS, отключение клиента. |
Колонка уровня указывает, кто несет ответственность:
- target результаты относятся к сайту, который вы вызывали. Ваш request успешно дошел до FourA, а FourA успешно связался с целевым ресурсом. Ошибку вернул сам целевой ресурс.
- caller результаты означают, что у вашего request не было шансов. Исправьте структуру request.
- FourA результаты относятся к нашей зоне ответственности. Повторите попытку, а если ошибка повторится, проверьте страницу статуса.
Если целевой сайт возвращает 403, это классифицируется как application_fail, а не client_error. Ваш вызов был сформирован корректно. Сайт просто ответил отказом.
Определение Success зависит от validate
Без использования validate API помечает request как success только тогда, когда целевой ресурс возвращает HTTP 200.
При использовании validate статус success определяется объявленными вами правилами. Если вы укажете для API, что для данного request допустимы как 200, так и 403, то ответ 403 вернется со статусом success. При этом тело ответа все равно дойдет до вас без изменений.
curl -X POST https://eu.api.foura.ai/api/single/ \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"method": "GET",
"url": "https://target.example/feed",
"validate": {
"status": { "accept": [200, 403] }
}
}'
В этом вызове response со статусом 403 считается как success и тарифицируется как один request. Response со статусом 500 считается как application_fail и не тарифицируется.
Эта же логика применима к validate.headers и validate.data. Любой response, который движок принимает в соответствии с вашими правилами, возвращается как success независимо от HTTP-статуса.
Влияние на биллинг
| Результат | Тарифицируется | Учитывается в квоте |
|---|---|---|
success |
Да | Да |
application_error |
Нет | Нет |
application_fail |
Нет | Нет |
client_error |
Нет | Нет |
rate_limit |
Нет | Нет |
service_error |
Нет | Нет |
service_fail |
Нет | Нет |
Тарифицируются только те requests, которые доставили запрошенные вами данные. Сбои на стороне FourA, на стороне целевого ресурса или на вашей стороне не оплачиваются.
Просмотр результатов в Dashboard
Каждый request, выполненный с вашим API-ключом, отображается в ленте Activity с меткой результата. Страницы Metrics и Overview агрегируют это же поле для построения круговых диаграмм и временных шкал.
При фильтрации Activity по результату вы также можете сфокусироваться на конкретном продукте (Single, Proxy, Browser), чтобы проверить, характерна ли определенная категория сбоев для конкретного endpoint.
Эвристика повторных попыток
Первичная политика повторных попыток на основе результатов:
| Результат | Безопасно повторить? | Когда |
|---|---|---|
success |
н/д | Вы получили response. |
application_error |
Иногда | Проанализируйте тело ошибки целевого ресурса. Некоторые из них временные, но большинство — нет. |
application_fail |
Sometimes | Если целевой ресурс ограничивает ваши запросы (rate-limiting), снизьте скорость. Если он вас блокирует, переключитесь на endpoint Proxy или Browser. |
client_error |
Нет | Request снова завершится с той же ошибкой. Исправьте входные данные. |
rate_limit |
Да | Следуйте значению retryAfter из тела response. |
service_error |
Yes | Короткая экспоненциальная задержка (exponential backoff). |
service_fail |
Yes | Так же, как и для service_error. |
Связанные разделы
- API Errors: Ошибки на уровне HTTP в response
- Rate Limits: Что вызывает
rate_limit - Metrics: Где можно посмотреть разбивку результатов
- Activity Log: История результатов для каждого request