Headers de response

Cada response de la API de FourA incluye un pequeño conjunto de headers personalizados. Son útiles para el rastreo, soporte y análisis posterior.

Headers que establece FourA

Header Establecido en Descripción
X-Foura-Request-Id Cada response de /api/*, incluidos errores y 401s Un UUID que identifica este request. Regístrelo en su lado.
Content-Type Cada response Siempre application/json para el envelope. El content-type del objetivo se devuelve dentro del campo headers del envelope.

X-Foura-Request-Id

Cada llamada a POST /api/single/, POST /api/proxy/ o POST /api/browser/ está etiquetada con un UUID. El header se establece incluso cuando falla la autenticación, por lo que también puede correlacionar llamadas mal configuradas.

curl -i -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://example.com"}'
HTTP/1.1 200 OK
X-Foura-Request-Id: 9f1c4e6c-7b2a-4d3e-8a1f-2c9d8e4a3b15
Content-Type: application/json
...

Cuándo usarlo

  • Tickets de soporte: incluya el ID de request y podremos encontrar la llamada exacta en nuestros registros.
  • Sus propios logs: almacénelo junto a la línea de log de su aplicación. Si una queja de un cliente dice "los datos eran incorrectos a las 14:32", puede reproducir el request exacto.
  • Rastreo en el Dashboard: el mismo ID aparece en el Activity feed para las claves que administra, por lo que puede abrir la fila correspondiente e inspeccionar el request y response capturados.

Ejemplo: registro en su lado

import logging
import requests

log = logging.getLogger(__name__)

def fetch(url, api_key):
    resp = requests.post(
        "https://eu.api.foura.ai/api/single/",
        headers={"X-API-Key": api_key, "Content-Type": "application/json"},
        json={"method": "GET", "url": url},
    )
    request_id = resp.headers.get("X-Foura-Request-Id", "no-id")
    log.info("foura request_id=%s url=%s status=%s", request_id, url, resp.status_code)
    resp.raise_for_status()
    return resp.json()
async function fetchPage(url, apiKey) {
  const resp = await fetch('https://eu.api.foura.ai/api/single/', {
    method: 'POST',
    headers: { 'X-API-Key': apiKey, 'Content-Type': 'application/json' },
    body: JSON.stringify({ method: 'GET', url })
  });

  const requestId = resp.headers.get('X-Foura-Request-Id') || 'no-id';
  console.log(`foura request_id=${requestId} url=${url} status=${resp.status}`);

  return resp.json();
}

Comportamiento de la caché

La API no establece Cache-Control ni ETag en los responses. Cada llamada llega al backend. Si necesita almacenamiento en caché, agréguelo de su lado.

Headers de response del objetivo

Los headers que devolvió el sitio de destino no están en el response de la API de FourA. Se devuelven dentro del envelope JSON como el campo headers. Para los endpoints Single y Proxy, este es un array de objetos header por salto (una entrada por paso de redirección). Para el endpoint Browser, es un objeto plano de los headers de response finales.

{
  "status": 200,
  "headers": [
    { "Content-Type": "text/html; charset=utf-8", "Server": "..." }
  ],
  "data": "<!doctype html>...",
  "total_time": 0.42
}

Si necesita un header de destino específico, léalo desde el campo headers del envelope, no desde el response HTTP de la propia llamada a la API.

Relacionado

  • API Endpoints: Estructuras de envelope de request y response
  • API Errors: Cómo se estructuran los responses de error
  • Activity Log: Historial por request indexado por el ID de request
Actualizado: 30 de junio de 2026