Résultats des requêtes
Chaque request adressée à l'API FourA est classée dans un seul résultat. Le résultat est calculé une fois au moment de la request et enregistré pour votre clé API. Votre dashboard, votre flux d'activité et votre facturation lisent tous ce même champ.
Seul success est facturable.
Les sept résultats
| Résultat | Couche | Signification |
|---|---|---|
success |
n/a | Une response valide a été délivrée. Comptabilisé dans votre quota facturable. |
application_error |
target | La cible a renvoyé un HTTP 200, mais le corps contenait un champ d'erreur. |
application_fail |
target | La cible a renvoyé un code non-2xx que vos règles validate n'ont pas accepté, ou aucune response. |
client_error |
caller | Votre request a été rejetée avant de quitter FourA. Paramètres incorrects, valeur proxy malformée, URL protégée contre le SSRF. |
rate_limit |
FourA | Votre limite de RPM ou de requêtes simultanées a été atteinte. |
service_error |
FourA | Le backend a renvoyé un 5xx, ou son corps n'était pas un JSON valide. |
service_fail |
FourA | Échec réseau : timeout, connexion refusée, erreur DNS, déconnexion du client. |
La colonne de la couche vous indique qui est responsable :
- Les résultats target concernent le site que vous avez appelé. Votre request a bien atteint FourA, et FourA a bien atteint la cible. La cible elle-même a renvoyé une erreur.
- Les résultats caller signifient que votre request n'a jamais eu de chance d'aboutir. Corrigez la structure de la request.
- Les résultats FourA sont de notre ressort. Réessayez, et consultez la page de statut s'ils persistent.
Un site cible renvoyant un 403 correspond à un application_fail, et non à un client_error. Votre appel était bien formé. Le site a simplement refusé.
Le succès prend en compte validate
Sans validate, l'API marque une request comme success uniquement lorsque la cible renvoie un HTTP 200.
Avec validate, le succès suit les règles que vous avez déclarées. Si vous indiquez à l'API que 200 et 403 sont tous deux acceptables pour une request donnée, un 403 est renvoyé comme success. Le corps vous parvient tout de même inchangé.
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] }
}
}'
Dans cet appel, une response 403 est comptabilisée comme success et facturée comme une seule request. Une response 500 est comptabilisée comme application_fail et n'est pas facturée.
La même logique s'applique à validate.headers et validate.data. Toute response que le moteur accepte par rapport à vos règles est renvoyée comme success, quel que soit le statut HTTP.
Implications sur la facturation
| Résultat | Facturable | Compté dans le quota |
|---|---|---|
success |
Oui | Oui |
application_error |
Non | Non |
application_fail |
Non | Non |
client_error |
Non | Non |
rate_limit |
Non | Non |
service_error |
Non | Non |
service_fail |
Non | Non |
Seules les requests ayant fourni les données demandées sont facturées. Les échecs du côté de FourA, du côté de la cible ou de votre propre côté sont tous gratuits.
Lire les résultats dans le Dashboard
Chaque request effectuée par votre clé API apparaît dans le flux d'activité Activity avec son libellé de résultat. Les pages Metrics et Overview agrègent ce même champ pour les graphiques en anneau et les chronologies.
Lorsque vous filtrez l'activité par résultat, vous pouvez également vous concentrer sur un seul produit (Single, Proxy, Browser) pour voir si une classe d'échec est spécifique à un endpoint particulier.
Heuristiques de retry
Une politique de retry de premier niveau basée sur les résultats :
| Résultat | Retry sans risque ? | Quand |
|---|---|---|
success |
n/a | Vous avez la response. |
application_error |
Parfois | Lisez le corps d'erreur de la cible. Certaines sont temporaires, la plupart ne le sont pas. |
application_fail |
Parfois | Si la cible applique un rate limit, ralentissez. Si elle vous bloque, passez à l'endpoint Proxy ou Browser. |
client_error |
Non | La request échouera à nouveau de la même manière. Corrigez les données d'entrée. |
rate_limit |
Oui | Respectez le retryAfter du corps de la response. |
service_error |
Oui | Court backoff exponentiel. |
service_fail |
Oui | Identique à service_error. |
Voir aussi
- API Errors : responses d'erreur au niveau HTTP
- Rate Limits : ce qui déclenche un
rate_limit - Metrics : où vous pouvez voir la répartition des résultats
- Activity Log : historique des résultats par request