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
- Endpoints API : Formes des enveloppes de request et de response
- Erreurs API : Structure des responses d'erreur
- Journal d'activité : Historique par request indexé par ID de request