Snel antwoord
Wat retourneert de LLMWebSearch API voor een zoekopdracht?
LLMWebSearch retourneert JSON met de query, created_at, credits_used en een gerangschikte results-array. Elk resultaat heeft zijn positie, titel, URL, host en snippet, en een content_status; als die ok is, staat de hoofdinhoud van de webpagina in content met een word_count. Eén zoekopdracht met maximaal 3 gelezen pagina's kost 1 credit, vanaf US$ 1,20/1K zoekopdrachten per oktober 2026. Zonder KYC; betalen met crypto.
Welke velden beschrijven de aanroep?
Topniveau van een /search-response.
| Field | Type | Betekenis |
|---|---|---|
query | string | De zoekopdracht zoals wij die hebben uitgevoerd, na het trimmen van spaties |
created_at | string | Wanneer de zoekopdracht liep, ISO 8601 in UTC |
credits_used | integer | Wat de aanroep kostte: 1, of 2 wanneer read 4 tot 10 was |
results | array | Gerangschikte resultaten, beste eerst, maximaal max_results items |
Welke velden bevat elk resultaat?
Een veld dat de webpagina of het zoekresultaat niet levert, wordt weggelaten in plaats van leeg verzonden.
| Field | Type | Indien aanwezig | Betekenis |
|---|---|---|---|
position | integer | Altijd | Positie in de zoekopdracht, beginnend bij 1 |
title | string | Altijd | Titel van het resultaat |
url | string | Altijd | Adres van de webpagina |
host | string | Altijd | Hostnaam van de webpagina, handig voor groeperen of citeren |
snippet | string | Altijd | Korte samenvatting die de zoekopdracht toont |
published_at | string | Wanneer een datum bekend is | Publicatiedatum van de pagina of het zoekresultaat |
content_status | string | Altijd | Of de pagina is gelezen, en zo niet, waarom |
content | string | Wanneer content_status ok is | Hoofdinhoud als Markdown of platte tekst, afgekapt op max_chars |
word_count | integer | Wanneer content_status ok is | Woorden in de hele geëxtraheerde tekst, geteld vóór het afkappen |
target_status | integer | Met target_refused | De HTTP-status die de site antwoordde, zoals 403 of 429 |
Wat betekent elke content_status?
Geen van deze verandert de prijs van de zoekopdracht. Ze beschrijven één pagina, nooit de hele call.
content_status | Betekenis | Wat een agent moet doen |
|---|---|---|
ok | De pagina is gelezen; content bevat de hoofdtekst | Gebruik het en citeer de url |
not_requested | Het resultaat valt buiten het aantal van read | Verhoog read, of lees het indien nodig via /extract |
blocked_by_robots | De robots.txt van de site staat onze reader niet toe op deze pagina | Vertrouw op het snippet of een andere bron |
blocked_by_site_policy | De site verklaart Content-Signal: ai-input=no | Vertrouw op het snippet of een andere bron |
target_refused | De site weigerde het verzoek; zie target_status | Probeer de pagina niet opnieuw; gebruik een andere bron |
fetch_failed | DNS-, TLS- of verbindingsfout, of de pagina bestaat niet meer | Probeer een ander resultaat; een latere poging kan werken |
fetch_timeout | De pagina antwoordde niet binnen 15 seconden | Probeer een ander resultaat; een latere poging kan werken |
unsupported_content | De link is een bestand dat we niet naar tekst kunnen omzetten | Gebruik het snippet of een ander resultaat |
Hoe ziet een volledig response eruit?
Het onderstaande voorbeeld vroeg 5 resultaten aan waarvan de eerste 4 werden gelezen, dus het kostte 2 credits. Resultaten 1 en 3 werden gelezen. Resultaat 2 hoort bij een site waarvan de robots.txt onze reader buiten houdt, resultaat 4 weigerde het verzoek, en resultaat 5 valt buiten read. Titels, URL's en waarden zijn illustratief.
{
"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"
}
]
}Welke resultaten krijgen een paginastatus anders dan not_requested?
Alleen de eerste read resultaten, en elk item van een /extract-aanroep. Dat zijn de pagina's die onze reader daadwerkelijk heeft geprobeerd. Alles na de read-telling blijft not_requested, wat de site ook zou hebben geantwoord.
De volgorde verandert nooit: de reader werkt op posities 1, 2, 3 enzovoort, nooit op een later resultaat in plaats van een eerder resultaat dat mislukte. Als een agent een vervanging nodig heeft voor een geweigerde pagina, kan het het volgende resultaat lezen via /extract.
Hoe ziet een extract-respons eruit?
/extract retourneert credits_used en een results-array in de volgorde van de URL's die je hebt verzonden. Elk item heeft de url en een content_status; met ok voegt het title, content en word_count toe, en met target_refused voegt het target_status toe. Er is geen position, host of snippet, omdat er geen zoekopdracht is uitgevoerd.
De extract-referentie toont een compleet voorbeeld en legt uit hoe de credits worden geteld.
Hoe zet ik resultaten om in context voor een model?
Nummer de bronnen, houd de URL bij elk ervan en geef alleen door wat het model nodig heeft. Een compacte opzet werkt goed: [1] title — url, dan de inhoud van die pagina, dan de volgende bron. Vraag het model om te citeren met dezelfde nummers.
Als een resultaat geen inhoud heeft, geef het model dan de snippet en zeg dat het alleen een snippet is. Zo voorkom je antwoorden die zijn gebaseerd op een pagina die het model nooit heeft gezien. De Python-pagina heeft een korte loop die dit allemaal doet binnen een tokenbudget.
Responsformaat: veelgestelde vragen
Is de inhoud altijd Markdown?
Standaard Markdown. Stuur format: "text" om platte tekst zonder opmaak te krijgen, bijvoorbeeld als je alleen woorden telt of pagina's classificeert. De veldnaam blijft content.
Waarom ontbreekt published_at bij sommige resultaten?
Veel pagina's vermelden geen datum, en sommige zoekresultaten tonen er ook geen. In dat geval wordt het veld weggelaten, dus controleer of het aanwezig is voordat je het gebruikt.
Kunnen er later nieuwe velden verschijnen?
Ja. In versie 1 kunnen velden worden toegevoegd, maar ze worden nooit hernoemd of verwijderd. Schrijf je parser zo dat velden die hij niet kent worden genegeerd.
Wordt de inhoud aan jullie kant opgeslagen?
Nee. We trainen geen enkel model op je zoekopdrachten of op wat de API teruggeeft, en we voegen geen eigen regel toe tegen het opslaan van resultaten; de rechten van de sites waarvan je pagina's leest, gelden nog steeds. Ons requestlog bewaart alleen een korte trace van elke aanroep, beschreven op de privacy-pagina.