Résultats des requêtes
Chaque request envoyée à l'API FourA est classée selon un résultat unique, tout comme chaque tunnel via le port de proxy. Le résultat est calculé une seule fois, à la fin de l'appel, et enregistré pour l'identifiant qui l'a émis. Votre tableau de bord, votre flux d'activité et votre facturation exploitent tous ce même champ.
Seul success consomme des crédits. Le trafic premium est décompté séparément des crédits et ne dépend pas du résultat : voir Incidences sur la facturation.
Les sept résultats possibles
Voici les sept états finaux d'une request. Un tunnel en utilise cinq : voir Les tunnels utilisent le même vocabulaire ci-dessous.
| Résultat | Couche | Définition |
|---|---|---|
success |
s/o | Une response valide a été délivrée. Décompté de votre quota facturable. |
application_error |
target | La cible a renvoyé un code HTTP 200, mais le body contenait un champ d'erreur, ou le body correspond à une page de vérification de bot reconnue par FourA. |
application_fail |
target | La cible a renvoyé un code non-2xx non accepté par vos règles validate, ou aucune réponse, y compris un nom d'hôte cible impossible à résoudre. |
client_error |
caller | Votre request a été rejetée avant de quitter FourA. Paramètres invalides, valeur de proxy mal formée, URL bloquée par la protection SSRF. |
rate_limit |
FourA | La request a été refusée avant son exécution : par l'une des limites de votre forfait (une 403 pour un endpoint ou un paramètre non inclus, une 429 pour un quota épuisé), ou par la limite partagée de RPM ou de simultanéité de la plateforme. |
service_error |
FourA | Le moteur a répondu par une erreur serveur, ou son body n'était pas un JSON valide. |
service_fail |
FourA | Le réseau interne de FourA a échoué : son moteur n'a pas répondu à temps, la connexion a été interrompue, ou vous vous êtes déconnecté. |
La colonne de couche indique la source de la responsabilité :
- Les résultats target concernent le site que vous avez appelé. Votre request a bien atteint FourA, et FourA a bien atteint la cible. C'est la cible elle-même qui a renvoyé une erreur.
- Les résultats caller signifient que votre request n'a pas pu être traitée. Corrigez le format de la request.
- Les résultats FourA relèvent de notre service. Réessayez, et consultez la page de statut si le problème persiste.
Un site cible renvoyant 403 correspond à application_fail, non à client_error. Votre appel était bien formé. Le site a simplement refusé la requête.
La réussite s'adapte à validate
Sans validate, l'API marque une request comme success uniquement lorsque la cible renvoie un code HTTP 200.
Avec validate, le succès dépend des 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 code 403 sera retourné avec le statut success. Le body vous parvient toujours sans modification.
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 réponse 403 compte comme success et est facturée comme une requête. Une réponse 500 compte comme application_fail et n'est pas facturée.
La même logique s'applique à validate.headers et validate.data. Toute réponse acceptée par le moteur selon vos règles est renvoyée comme success, quel que soit le statut HTTP.
Une réponse n'est jamais success, avec ou sans validate : un code HTTP 200 dont le corps est une page de vérification de bot reconnue par FourA, comme une tâche de vérification visuelle ou une page demandant uniquement au navigateur d'exécuter du JavaScript. Cette requête est application_error et n'est pas facturée. Le corps vous parvient tout de même inchangé, et le header X-FourA-Check-Page indique le nom de la page de vérification.
Implications sur la facturation
| Résultat | Facturable | Décompté du 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 requêtes ayant fourni les données demandées sont facturées. Les échecs du côté de FourA, de la cible ou de votre côté sont tous gratuits.
Ce tableau concerne les crédits. Le trafic premium est comptabilisé séparément : une requête ayant tenté une sortie premium comptabilise le trafic acheminé par cette tentative, quel que soit le résultat, car la sortie a été utilisée dans tous les cas. Une tentative encore en cours lorsqu'une autre sortie a répondu est arrêtée immédiatement, et le trafic acheminé jusque-là est également comptabilisé.
Le trafic standard ne dépend pas non plus du résultat : sur un forfait avec une limite de bande passante, le trafic de chaque requête est décompté. Une requête refusée par l'une des limites de votre propre forfait ne consomme aucun trafic.
Les tunnels utilisent le même vocabulaire
Un tunnel via le port de proxy aboutit également à l'un de ces résultats, un même ensemble de libellés couvre donc les deux produits. Seuls cinq des sept résultats peuvent se produire, car les deux résultats target nécessitent que FourA ait analysé la réponse de la cible, alors que la réponse d'un tunnel constitue votre propre trafic chiffré.
| Résultat | Sur un tunnel, cela signifie |
|---|---|
success |
Le tunnel s'est ouvert et votre outil l'a obtenu. |
client_error |
FourA n'ouvrira pas ce tunnel : adresse privée ou réservée, ou port non pris en charge. |
rate_limit |
L'une des limites de votre forfait a été atteinte (tunnels ouverts simultanément, ouvertures de tunnel par minute, trafic standard pour la période, trafic premium non disponible), ou le port lui-même a atteint sa capacité ou son taux d'ouverture. |
service_error |
FourA n'avait aucune sortie correspondant à votre demande. Généralement temporaire. |
service_fail |
La cible n'a pu être atteinte via aucune des sorties testées par FourA : DNS, délai d'attente dépassé, connexion refusée. |
application_error |
Ne se produit jamais sur un tunnel. |
application_fail |
Ne se produit jamais sur un tunnel. |
Un refus s'accompagne également d'un motif court, et le tableau de bord l'affiche dans vos propres termes plutôt que dans les nôtres. Une option que FourA ne peut pas honorer reçoit une réponse 400 sur la connexion elle-même et n'écrit aucune ligne, de sorte qu'elle n'apparaît jamais ici.
| Motif à l'écran | Quota épuisé |
|---|---|
| port not in plan | Votre forfait n'inclut pas le port proxy |
| tunnels at once | Tous les tunnels autorisés simultanément par votre forfait étaient utilisés |
| openings per minute | Les ouvertures de tunnel allouées à votre forfait pour cette minute ont été épuisées |
| traffic used up | Le trafic de votre forfait pour cette période est épuisé |
| premium not available | Le trafic Premium n'est pas disponible sur votre forfait actuellement |
| port was full | Le port lui-même a atteint sa capacité maximale ou son taux d'ouverture limite. Réessayez dans un instant. |
| port not served | FourA n'ouvre pas de tunnels vers ce port |
| private address | Les adresses privées et réservées ne peuvent pas être atteintes |
Aucun élément lié à un tunnel n'est facturé en crédits, car un tunnel n'a pas de request à laquelle en imputer un. Le port mesure plutôt les octets. Consultez Comment votre forfait est mesuré.
Lire les résultats dans le tableau de bord
Chaque request effectuée par votre clé API apparaît dans le flux Activité avec son libellé de résultat. Les pages Métriques et Vue d'ensemble 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 cibler un endpoint unique (Auto, Single, Proxy Finder, Browser) pour vérifier si une classe d'échec est spécifique à l'un d'eux. Basculez le paramètre Produit de la page sur Proxy et les mêmes pastilles de résultat filtreront vos tunnels.
Heuristiques de nouvelle tentative
Une stratégie de nouvelle tentative de premier niveau basée sur les résultats :
| Résultat | Nouvelle tentative sécurisée ? | Quand |
|---|---|---|
success |
n/a | Vous avez la réponse. |
application_error |
Parfois | Lisez le corps de l'erreur de la cible. Certaines sont passagères, la plupart ne le sont pas. Si X-FourA-Check-Page est défini, le site a renvoyé une page de vérification : envoyez l'URL à Auto, qui traite une page de vérification comme une étape à franchir, et non comme la réponse finale. |
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 de nouveau de la même manière. Corrigez les données en entrée. |
rate_limit |
Dépend | Respectez le temps d'attente indiqué par la réponse : Retry-After, retry_after_seconds ou retryAfter. Pour plan_limit_browser_daily, arrêtez jusqu'à minuit UTC ; pour plan_limit_credits ou plan_limit_bandwidth, arrêtez jusqu'à resets_at ; pour plan_limit_feature ou plan_limit_premium, modifiez la request. |
service_error |
Oui | Court délai exponentiel (backoff). |
service_fail |
Oui | Identique à service_error. |
Liens connexes
- API Errors : Réponses d'erreur au niveau HTTP
- Proxy Port : Codes de statut retournés lors du refus d'un tunnel
- Rate Limits : Éléments déclencheurs de
rate_limitet ses deux formats de réponse - Metrics : Emplacement où consulter le détail des résultats
- Activity Log : Historique des résultats par requête