クイック回答
LLMWebSearch APIは検索で何を返しますか?
LLMWebSearchは、query、created_at、credits_usedとランク付けされたresults配列を含むJSONを返します。各結果には順位、タイトル、URL、ホスト、スニペット、およびcontent_statusが付きます。okの場合、ページの本文はcontentにword_countとともに含まれます。最大3ページを読み取る検索1回で1クレジット、2026年10月時点の$1.20/1K検索から。KYC不要、暗号資産で支払い。
呼び出しを表すフィールドはどれですか?
/searchレスポンスのトップレベルです。
| フィールド | 型 | 意味 |
|---|---|---|
query | string | 実際に実行した検索クエリ(前後の空白を除去したもの) |
created_at | string | 検索を実行した日時、UTCのISO 8601形式 |
credits_used | integer | 呼び出しのコスト:1、またはreadが4〜10の場合は2 |
results | array | ランク付けされた結果(上位が先頭)、最大max_results件 |
各結果にはどのフィールドが含まれますか?
ページまたは検索結果が提供しないフィールドは、空で送信するのではなく省略されます。
| フィールド | 型 | 含まれる場合 | 意味 |
|---|---|---|---|
position | integer | 常に | 検索順位(1から開始) |
title | string | 常に | 結果のタイトル |
url | string | 常に | ページのアドレス |
host | string | 常に | ページのホスト名。グループ化や引用に便利 |
snippet | string | 常に | 検索が表示する短い抜粋 |
published_at | string | 日付が判明している場合 | ページまたは検索結果から取得した公開日 |
content_status | string | 常に | ページを読み取れたか、読み取れなかった場合はその理由 |
content | string | content_status が ok の場合 | Markdownまたはプレーンテキスト形式の本文。max_chars で切り詰め |
word_count | integer | content_status が ok の場合 | 抽出された全文の単語数。切り詰め前にカウント |
target_status | integer | target_refused を含む場合 | サイトが返したHTTPステータス(403や429など) |
各 content_status の意味は?
これらはいずれも検索の価格を変えません。1つのページについての情報であり、呼び出し全体についてではありません。
content_status | 意味 | エージェントが取るべき対応 |
|---|---|---|
ok | ページを読み取り済み。content に本文が入っています | そのまま利用し、url を引用する |
not_requested | 結果が read の件数を超えている | read を増やすか、必要なら /extract 経由で読み取る |
blocked_by_robots | このページではサイトのrobots.txtがリーダーのアクセスを許可していません | スニペットまたは別のソースを利用する |
blocked_by_site_policy | サイトが Content-Signal: ai-input=no を宣言しています | スニペットまたは別のソースを利用する |
target_refused | サイトがリクエストを拒否しました。target_status を参照 | このページは再試行せず、別のソースを使う |
fetch_failed | DNS、TLS、接続エラー、またはページが存在しない | 別の結果を試す。後で再試行すると成功する場合があります |
fetch_timeout | ページが15秒以内に応答しませんでした | 別の結果を試す。後で再試行すると成功する場合があります |
unsupported_content | リンクがテキストに変換できないファイルである | スニペットまたは別の結果を利用する |
完全なレスポンスはどのような形ですか?
以下の例では5件の結果を要求し、最初の4件を読み取ったため、2クレジットのコストがかかりました。結果1と3は読み取り済みです。結果2はrobots.txtがリーダーのアクセスを拒否しているサイトのもので、結果4はリクエストが拒否され、結果5は read の範囲を超えています。タイトル、URL、値は例示です。
{
"query": "how to rotate api keys without downtime",
"created_at": "2026-10-22T10:15:04Z",
"credits_used": 2,
"results": [
{
"position": 1,
"title": "Rotating API keys",
"url": "https://docs.example.com/security/key-rotation",
"host": "docs.example.com",
"snippet": "Create a second key, deploy it everywhere, then revoke the first one.",
"published_at": "2026-09-30",
"content_status": "ok",
"content": "# Rotating API keys\n\n## Zero-downtime rotation\n\n1. Create a second key.\n2. Deploy it to every service.\n3. Revoke the old key.",
"word_count": 948
},
{
"position": 2,
"title": "Key rotation checklist",
"url": "https://blog.example.org/key-rotation-checklist",
"host": "blog.example.org",
"snippet": "Keep two keys active during the switch and alert on the old one.",
"content_status": "blocked_by_robots"
},
{
"position": 3,
"title": "Secrets management basics",
"url": "https://security.example.net/secrets-basics",
"host": "security.example.net",
"snippet": "Never commit keys to a repository.",
"content_status": "ok",
"content": "# Secrets management basics\n\n**Never** commit keys to a repository.",
"word_count": 1310
},
{
"position": 4,
"title": "Key management service guide",
"url": "https://cloud.example.com/kms-guide",
"host": "cloud.example.com",
"snippet": "Store keys in a managed vault and rotate them on a schedule.",
"content_status": "target_refused",
"target_status": 403
},
{
"position": 5,
"title": "API key best practices",
"url": "https://dev.example.com/api-key-best-practices",
"host": "dev.example.com",
"snippet": "Scope each key to one service and one environment.",
"content_status": "not_requested"
}
]
}どの結果が not_requested 以外のページステータスになるのか?
最初のread件の結果と、/extract呼び出しの全項目です。これらはリーダーが実際に試したページです。read件以降はすべてnot_requestedのままで、サイトがどう応答したとしても変わりません。
順序は決して変わりません。リーダーは1、2、3…という位置で処理し、失敗した前の結果の代わりに後ろの結果を使うことはありません。エージェントが拒否されたページの代替を必要とする場合は、/extractで次の結果を読むことができます。
extractのレスポンスはどのような形ですか?
/extractは送信したURLの順にcredits_usedとresults配列を返します。各項目にはurlとcontent_statusが含まれます。okを付けるとtitle、content、word_countが追加され、target_refusedを付けるとtarget_statusが追加されます。検索は実行されないため、position、host、snippetはありません。
extractリファレンスには完全な例と、クレジットの計算方法が記載されています。
検索結果をモデル用のコンテキストに変換するには?
ソースに番号を付け、それぞれの横にURLを置き、モデルに必要なものだけを渡します。コンパクトなレイアウトが効果的です。[1] title — url、そのページの内容、次に次のソース、という順です。モデルには同じ番号で引用するよう指示してください。
結果に内容がない場合は、代わりにそのスニペットを渡し、スニペットにすぎないと伝えます。これにより、モデルが見ていないページに基づく回答を避けられます。Pythonページには、これをトークン予算内で行う短いループがあります。
レスポンス形式:よくある質問
内容は常にMarkdownですか?
デフォルトはMarkdownです。マークアップなしのプレーンテキストが必要な場合、たとえば単語数を数えるだけやページを分類する場合は、format: "text"を送信してください。フィールド名はcontentのままです。
一部の結果でpublished_atが欠けているのはなぜですか?
日付を明示していないページが多く、検索結果にも表示されないことがあります。その場合はフィールド自体が省略されるため、使用する前に存在を確認してください。
新しいフィールドが後から追加されることはありますか?
はい。バージョン1ではフィールドが追加されることはありますが、名前が変更されたり削除されたりすることはありません。パーサーは未知のフィールドを無視するよう記述してください。
内容はそちら側に保存されますか?
いいえ。当社はあなたの検索クエリやAPIが返す内容でモデルを学習させることはなく、結果の保存を禁じる独自のルールも設けていません。ただし、あなたが読むページのサイトの権利は引き続き適用されます。リクエストログには各呼び出しの短いトレースのみが残り、詳細はプライバシーページに記載されています。