Headers de response

Chaque response de l'API FourA inclut un petit ensemble de headers personnalisés. Ils sont utiles pour le traçage, le support et l'analyse post-hoc.

Headers définis par FourA

Header Défini sur Description
X-Foura-Request-Id Chaque response /api/*, y compris les erreurs et les 401 Un UUID identifiant cette request. Enregistrez-le de votre côté.
Content-Type Chaque response Toujours application/json pour l'enveloppe. Le content-type de la cible est renvoyé dans le champ headers de l'enveloppe.

X-Foura-Request-Id

Chaque appel à POST /api/single/, POST /api/proxy/ ou POST /api/browser/ est tagué avec un UUID. Le header est défini même en cas d'échec d'authentification, ce qui vous permet de corréler également les appels mal configurés.

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
...

Quand l'utiliser

  • Tickets de support : incluez l'ID de la request et nous pourrons retrouver l'appel exact dans nos enregistrements.
  • Vos propres logs : stockez-le à côté de la ligne de log de votre application. Si une plainte client indique « les données étaient incorrectes à 14h32 », vous pouvez rejouer la request exacte.
  • Traçage sur le Dashboard : le même ID apparaît dans le flux d'activité pour les clés que vous gérez, vous permettant d'ouvrir la ligne correspondante et d'inspecter la request et la response capturées.

Exemple : enregistrement dans vos logs de votre côté

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();
}

Comportement du cache

L'API ne définit pas de Cache-Control ou d'ETag sur les responses. Chaque appel interroge le backend. Si vous avez besoin de mise en cache, ajoutez-la de votre côté.

Headers de response de la cible

Les headers renvoyés par le site cible ne se trouvent pas sur la response de l'API FourA. Ils sont renvoyés à l'intérieur de l'enveloppe JSON dans le champ headers. Pour les endpoints Single et Proxy, il s'agit d'un tableau d'objets header par saut (une entrée par étape de redirection). Pour l'endpoint Browser, il s'agit d'un objet plat des headers de la response finale.

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

Si vous avez besoin d'un header cible spécifique, lisez-le à partir du champ headers de l'enveloppe, et non à partir de la response HTTP de l'appel API lui-même.

Pages connexes

Mis à jour : 30 juin 2026