Response Headers

Всеки response от FourA API включва малък набор от персонализирани headers. Те са полезни за проследяване, поддръжка и последващ анализ.

Headers, които FourA задава

Header Зададен при Описание
X-Foura-Request-Id Всеки /api/* response, включително грешки и 401 UUID, идентифициращ този request. Запишете го в лога от ваша страна.
Content-Type Всеки response Винаги application/json за обвивката. Стойността на content-type на целта се връща в полето headers на обвивката.

X-Foura-Request-Id

Всяко извикване към POST /api/single/, POST /api/proxy/ или POST /api/browser/ се маркира с UUID. Този header се задава дори когато удостоверяването е неуспешно, така че можете да съпоставите и неправилно конфигурирани извиквания.

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

Кога да го използвате

  • Тикети за поддръжка: включете този request ID и ние ще можем да намерим точното извикване в нашите записи.
  • Вашите собствени логове: съхранявайте го до съответния ред в лога на приложението ви. Ако клиент се оплаче, че "данните са били грешни в 14:32", можете да възпроизведете същия request.
  • Проследяване в Dashboard: същият ID се появява в Activity feed за ключовете, които управлявате, така че можете да отворите съответния ред и да прегледате уловените request и response.

Пример: логване от ваша страна

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

Поведение на кеша

API не задава Cache-Control или ETag в responses. Всяко извикване достига до backend-а. Ако имате нужда от кеширане, го добавете от ваша страна.

Response headers на целта

Headers, върнати от целевия сайт, не се намират в response на FourA API. Те се връщат вътре в JSON обвивката като полето headers. За Single и Proxy endpoints това е масив от header обекти за всеки преход (по един запис за всяка стъпка от пренасочването). За Browser endpoint това е плосък обект с крайните response headers.

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

Ако имате нужда от конкретен целеви header, го прочетете от полето headers на обвивката, а не от самия HTTP response на извикването към API.

Свързани теми

  • API Endpoints: Структура на request и response обвивките
  • API Errors: Как са структурирани responses за грешки
  • Activity Log: История за всеки request, индексирана по request ID
Обновено: 30 юни 2026 г.