Resultados de request
Cada request a la API de FourA se clasifica en exactamente un resultado. El resultado se calcula una vez en el momento de la request y se registra en tu API key. Tu panel de control, feed de actividad y facturación leen el mismo campo.
Solo success es facturable.
Los siete resultados
| Resultado | Capa | Qué significa |
|---|---|---|
success |
n/a | Se entregó una response válida. Cuenta contra tu cuota facturable. |
application_error |
target | El target devolvió HTTP 200, pero el body contenía un campo de error. |
application_fail |
target | El target devolvió un código no 2xx que tus reglas validate no aceptaron, o ninguna response en absoluto. |
client_error |
caller | Tu request fue rechazada antes de salir de FourA. Parámetros incorrectos, valor de proxy mal formado, URL protegida contra SSRF. |
rate_limit |
FourA | Se alcanzó tu límite de RPM o concurrencia. |
service_error |
FourA | El backend devolvió un 5xx, o su body no era JSON válido. |
service_fail |
FourA | Fallo de red: timeout, conexión rechazada, error de DNS, desconexión del cliente. |
La columna de capa te indica quién es responsable:
- Los resultados target tratan sobre el sitio al que llamaste. Tu request llegó bien a FourA y FourA llegó bien al target. El target mismo devolvió un error.
- Los resultados caller significan que tu request nunca tuvo oportunidad. Corrige la forma de la request.
- Los resultados FourA son nuestra responsabilidad. Reintenta y revisa la página de estado si persisten.
Un sitio target que devuelve 403 es application_fail, no client_error. Tu llamada estaba bien formada. El sitio simplemente dijo no.
El éxito es consciente de validate
Sin validate, la API marca una request success solo cuando el target devuelve HTTP 200.
Con validate, el éxito sigue las reglas que declaraste. Si le dices a la API que tanto 200 como 403 son aceptables para una request dada, un 403 vuelve como success. El body aún te llega sin cambios.
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] }
}
}'
En esta llamada, una response 403 cuenta como success y se factura como una request. Una response 500 cuenta como application_fail y no se factura.
La misma lógica se aplica a validate.headers y validate.data. Cualquier response que el motor acepte contra tus reglas vuelve como success independientemente del estado HTTP.
Implicaciones de facturación
| Resultado | Facturable | Cuenta para la cuota |
|---|---|---|
success |
Sí | Sí |
application_error |
No | No |
application_fail |
No | No |
client_error |
No | No |
rate_limit |
No | No |
service_error |
No | No |
service_fail |
No | No |
Solo las requests que entregaron los datos que pediste se facturan. Los fallos del lado de FourA, del lado del target o de tu propio lado son todos gratis.
Leer resultados en el panel de control
Cada request que hace tu API key aparece en el feed de Activity con su etiqueta de resultado. Las páginas de Metrics y Overview agregan el mismo campo para gráficos de anillos y líneas de tiempo.
Cuando filtras Activity por resultado, también puedes enfocarte en un solo producto (Single, Proxy, Browser) para ver si una clase de fallo es específica de un endpoint.
Heurísticas de reintento
Una política de reintento inicial basada en resultados:
| Resultado | ¿Seguro reintentar? | Cuándo |
|---|---|---|
success |
n/a | Tienes la response. |
application_error |
A veces | Lee el body de error del target. Algunos son transitorios, la mayoría no. |
application_fail |
A veces | Si el target te está aplicando rate limit, ve más lento. Si te está bloqueando, cambia al endpoint Proxy o Browser. |
client_error |
No | La request fallará de nuevo de la misma manera. Corrige la entrada. |
rate_limit |
Sí | Respeta el retryAfter del body de la response. |
service_error |
Sí | Backoff exponencial corto. |
service_fail |
Sí | Igual que service_error. |
Relacionado
- API Errors: respuestas de error a nivel HTTP
- Rate Limits: qué desencadena
rate_limit - Metrics: dónde ves los resultados desglosados
- Activity Log: historial de resultados por request