Response Headers

Всеки отговор от FourA API съдържа малък набор от потребителски хедъри. Те са полезни за проследяване, поддръжка, съгласуване на фактурирането и последващ анализ.

Хедъри, зададени от FourA

Header Set on Description
X-Foura-Request-Id Всеки отговор на /api/*, включително грешки и 401 UUID, идентифициращ тази заявка. Записвайте го във вашите логове.
X-FourA-Credits Всеки отговор на /api/*, достигнал бекенда Изразходвани кредити за това извикване. Връща се при успех и при неуспех (работата е свършена и в двата случая).
Content-Type Всеки отговор Винаги application/json за обвивката. Съдържанието на целта (content-type) се връща в полето headers на обвивката.

X-Foura-Request-Id

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

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
X-FourA-Credits: 2
Content-Type: application/json
...

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

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

Пример: записване на ваша страна

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")
    credits = resp.headers.get("X-FourA-Credits", "0")
    log.info("foura request_id=%s url=%s status=%s credits=%s", request_id, url, resp.status_code, credits)
    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';
  const credits = resp.headers.get('X-FourA-Credits') || '0';
  console.log(`foura request_id=${requestId} url=${url} status=${resp.status} credits=${credits}`);

  return resp.json();
}

X-FourA-Credits

X-FourA-Credits отчита кредитната цена на извикването, което току-що сте направили. То е брояч, не сметка: хедърът отразява какво е изразходвано за работата, независимо от резултата. Слоят за фактуриране на таблото за управление отчита само таксуемите резултати срещу вашия план (вижте Request Outcomes за това кои резултати се таксуват).

Справка за разходите

Engine Base With unblocker
Single 1 2
Proxy 5 10
Browser 15 30 (когато защитата е преодоляна)

/api/auto/ не добавя отделен таксуем ред. Кредитната му цена е сумата от подизвикванията, направени вътрешно (едно повторение на "топла" цел може да завърши на 2; "студено" решаване на труден сайт може да изразходва много повече). Стойността X-FourA-Credits в автоматичния отговор е равна на meta.credits в тялото и проследява пълната цена на стъпките.

Защо хедър и поле в тялото?

Хедърът е удобен: можете да го прочетете, преди да парсвате тялото, да го запишете до реда на вашата заявка или да го сумирате в множество извиквания без парсване на JSON. meta.credits на тялото (Auto) или метаданните за всеки енджин (табла Single, Proxy, Browser) съдържат същото число, но четимо вътре в обвивката на отговора.

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

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

Хедъри на отговора на целта

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

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

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

Свързани

  • API Endpoints: Форми на заявка и обвивка на отговор
  • API Errors: Как са структурирани отговорите за грешка
  • Request Outcomes: Кои резултати се таксуват
  • Activity Log: История на всяка заявка по request ID
Обновено: 30 юни 2026 г.