API Endpoints Reference

リクエストパラメータとresponse形式を含む、すべてのFourAのAPI endpointのリファレンスです。

Base URL

https://eu.api.foura.ai/api

認証

すべてのrequestには、X-API-Key headerにAPIキーを含める必要があります。

curl -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"}'

DashboardでAPIキーを作成および管理します。キーにはpk_live_プレフィックスが使用されます。

Response Header

/api/*からのすべてのresponseには、1つの関連付けheaderが含まれます。

Header 説明
X-Foura-Request-Id UUID requestに割り当てられる一意のID。4xxおよび5xxを含むすべてのresponseで返されます。開発者側でログに記録してください。

同じIDが、DashboardのActivity Log(24時間保持、キーごとに最新の200件まで)におけるrequestおよびresponseペイロードのプレビューのキーとなります。これにより、後で正確なrequestを検索し、Activityから直接Playgroundにインポートして再実行できます。サポートにお問い合わせの際、このIDをお知らせいただければ、数秒で該当のrequestを特定できます。

$ 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/2 200
content-type: application/json
x-foura-request-id: 8f3e2a14-7b6c-4d1a-9e2f-5a3b8c1d4e7f
...

Endpoint

MCP経由でこれらのendpointを使用しますか? @fouradata/mcp serverは、3つすべてのendpointをネイティブのMCPツール(foura_singlefoura_proxyfoura_browser)としてラップします。これらは同じ入力形式を持ち、さらにtokenに配慮した大容量のresponse処理のためのoffload_largeオプトインを備えています。

FourAは、それぞれ異なるシナリオに最適化された3つのrequest endpointを提供します。

Endpoint 最適な用途
POST /single/ 高速なHTTP request、静的ページ、API
POST /proxy/ 自動proxyローテーションを備えた保護されたサイト
POST /browser/ JavaScriptでレンダリングされるページ、SPA

ターゲットURLの制限

プライベート、ループバック、または保留されたIP範囲(RFC 5735、RFC 6598、IPv6保留ブロック)に解決されるターゲットは、requestがFourAから送信される前に400エラーで拒否されます。パブリックなホスト名とIPのみが転送されます。

{ "error": "Target <ip> resolves to a private/reserved IP" }

Single Request

POST /api/single/

実際のブラウザを起動することなく、現実的なブラウザ風の通信特性を持つHTTP requestを送信します。これは最も高速なendpointです。

Request Body

パラメータ 必須 デフォルト 説明
method string はい - HTTP method:GET、POST、PUT、PATCH、DELETE、HEAD、OPTIONS
url string はい - ターゲットURL。URL内の任意の場所に{ts}を使用すると、キャッシュバスター用の現在のタイムスタンプが挿入されます。
headers [string, string][] いいえ - [名前, 値]のペアとしてのカスタムheader
unblocker boolean いいえ false 現実的なブラウザheader(User-Agent、Sec-Ch-Ua、Sec-Fetch-*、Accept-Encoding)を注入します
timeout_ms number いいえ 15000 ミリ秒単位の全体的なタイムアウト(最大:120000)
connect_timeout_ms number いいえ 5000 ミリ秒単位の接続タイムアウト
accept_timeout_ms number いいえ 5000 ミリ秒単位の受付タイムアウト(接続受付の待機時間)
server_response_timeout_ms number いいえ 15000 ミリ秒単位のサーバーresponseタイムアウト(最初のバイトの待機時間)
dns_cache_timeout_sec number いいえ 120 秒単位 of DNSキャッシュTTL(最大:240)
followRedirects number いいえ 無効 追跡する最大リダイレクト数(0-20)。無効にする場合は省略します。
tryJsonData boolean いいえ false 可能であればresponseボディをJSONとして解析します
returnBuffer boolean いいえ false デコードされた文字列の代わりに生のバッファを返します
data any いいえ - requestボディ(文字列またはオブジェクト、自動的にJSONにシリアライズされます)
proxy string いいえ - proxy URL(http、socks4、またはsocks5)、または以前のresponseによって返されたproxy ID
validate object いいえ - response検証ルール(以下を参照)

検証ルール

validateオブジェクトを使用すると、成功と失敗の条件を定義できます。fail条件が一致した場合、requestは失敗として処理されます。accept条件が設定されている場合、一致するresponseのみが成功として処理されます。

{
  "validate": {
    "status": { "accept": [200, 201], "fail": [403, 503] },
    "headers": { "accept": {"content-type": "application/json"} },
    "data": { "accept": ["product"], "fail": ["captcha", "blocked"] }
  }
}
フィールド 説明
validate.status.accept number[] 許可するHTTPステータスコード
validate.status.fail number[] 拒否するHTTPステータスコード
validate.headers.accept object 存在する必要があるheaderのキーと値のペア
validate.headers.fail object 失敗をトリガーするheaderのキーと値のペア
validate.data.accept string[] responseボディに含まれている必要がある文字列
validate.data.fail string[] 失敗をトリガーするresponseボディ内の文字列

curl -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/products",
    "unblocker": true,
    "timeout_ms": 10000
  }'

Response:

{
  "status": 200,
  "headers": [{"result": {"version": "HTTP/2", "code": 200, "reason": ""}, "content-type": "text/html", "server": "nginx", "set-cookie": ["session=abc", "tracker=xyz"]}],
  "data": "<!doctype html>...",
  "total_time": 0.342
}
フィールド 説明
status number ターゲットからのHTTPステータスコード
headers array リダイレクトのホップごとに1つのオブジェクト。それぞれにステータス行とすべてのresponse headerを含むresultフィールドがあります。複数の値を持つheader(Set-CookieLinkWWW-Authenticate)は、文字列の配列として返されます。
data string/object responseボディ(tryJsonDataがtrueの場合はJSON)
total_time number 秒単位の合計request時間
error string requestが失敗した場合のエラーメッセージ

Proxy Request

POST /api/proxy/

失敗時の自動再試行を備えた、ローテーションするproxyを経由してrequestをルーティングします。

Request Body

パラメータ 必須 デフォルト 説明
request object はい - 単一のrequestボディ(上記のSingle Requestと同じフィールド)
timeout_ms number いいえ 45000 すべての試行におけるミリ秒単位の全体的なタイムアウト(最大:120000)
maxTries number いいえ 5 最大proxyローテーション試行回数(最大:90)
ignoreProxies string[] いいえ - ローテーションから除外するproxy ID(以前のresponseによって返されたIDを使用)

curl -X POST https://eu.api.foura.ai/api/proxy/ \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "maxTries": 3,
    "request": {
      "method": "GET",
      "url": "https://example.com/prices",
      "unblocker": true
    }
  }'

Response:

{
  "status": 200,
  "headers": [{"result": {"code": 200}, "content-type": "text/html", "set-cookie": ["a=1", "b=2"]}],
  "data": "<!doctype html>...",
  "total_time": 1.204,
  "proxy": "a1b2c3",
  "total": 2.341
}
フィールド 説明
proxy string 使用されたproxyのエンコードされた識別子。proxyフィールドとして渡すことで、SingleまたはBrowser requestで再利用できます。あるいは、ignoreProxiesを介して次のProxy requestでスキップすることもできます。
total number 秒単位の外部実時間(実測時間、浮動小数点数)。proxyの選択、再試行、および成功した試行が含まれます。total_timeは内部のrequestのみの時間であり、totalは常にtotal_time以上になります。
error string requestが失敗した場合のエラーメッセージ

すべてのSingle Requestのresponseフィールドも含まれます。


Browser Request

POST /api/browser/

ChromeブラウザのインスタンスでURLを開きます。ページが読み込まれ、JavaScriptが実行され、完全にレンダリングされたHTMLとcookieジャーを取得できます。

Request Body

パラメータ 必須 デフォルト 説明
url string はい - ターゲットURL
headers object いいえ - キーと値のペアとしてのカスタムheader
cookies array いいえ - 設定するcookie:[{name, value, domain?}]
userAgent string いいえ - カスタムUser-Agent文字列
proxy string いいえ - proxy URL、または以前のresponseによって返されたproxy ID
timeout_ms number いいえ 30000 ミリ秒単位のページ読み込みタイムアウト(最大:120000)
checkStatus number いいえ - 期待されるHTTPステータス(異なる場合、requestは失敗します)
checkText string いいえ - レンダリングされたページに表示される必要があるテキスト

curl -X POST https://eu.api.foura.ai/api/browser/ \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/spa-app",
    "timeout_ms": 15000,
    "checkText": "product-list"
  }'

Response:

{
  "status": 200,
  "headers": {"content-type": "text/html"},
  "body": "<!doctype html>...",
  "cookies": [{"name": "session", "value": "abc123", "domain": "example.com", "path": "/", "expires": 1735689600, "httpOnly": true, "secure": true, "sameSite": "Lax"}],
  "userAgent": "Mozilla/5.0..."
}
フィールド 説明
status number ターゲットからのHTTPステータスコード
headers object response header
body string or object 完全にレンダリングされたページコンテンツ。content-typeがHTMLの場合は文字列のHTML、ページがJSONを返し自動解析された場合はオブジェクトになります。
cookies array ページからの完全なcookieオブジェクト。各cookieには、namevaluedomainpathexpireshttpOnlysecuresameSite、およびその他のcookieプロパティが含まれます。
userAgent string 使用されたブラウザのUser-Agent
error string requestが失敗した場合のエラーメッセージ

HTTPステータスコード

コード 意味
200 request完了(ターゲットのresponseについては内部のstatusを確認してください)
400 無効なrequestボディ、パラメータ、またはプライベート/保留範囲内のターゲットIP
401 APIキーがないか、または無効です
429 rate limitを超過しました
500 内部サーバーエラー
503 サービスが一時的に無効になっているか、容量制限に達しています

次のステップ

最終更新日: 2026年7月1日