Resposta rápida
O que a API do LLMWebSearch retorna para uma pesquisa?
LLMWebSearch retorna JSON com query, created_at, credits_used e um array results ordenado. Cada resultado tem sua posição, título, URL, host e snippet, e um content_status; quando ele é ok, o conteúdo principal da página está em content com um word_count. Uma pesquisa com até 3 páginas lidas custa 1 crédito, a partir de US$ 1,20/1K pesquisas em outubro de 2026. Sem KYC; pague com cripto.
Quais campos descrevem a chamada?
Nível superior de uma resposta /search.
| Campo | Tipo | Significado |
|---|---|---|
query | string | A consulta como a executamos, após remover os espaços |
created_at | string | Quando a pesquisa foi executada, ISO 8601 em UTC |
credits_used | integer | Quanto custou a chamada: 1, ou 2 quando read foi de 4 a 10 |
results | array | Resultados ordenados, do melhor para o pior, no máximo max_results itens |
Quais campos cada resultado carrega?
Um campo que a página ou o resultado da pesquisa não fornece é omitido em vez de enviado vazio.
| Campo | Tipo | Quando presente | Significado |
|---|---|---|---|
position | integer | Sempre | Posição na pesquisa, começando em 1 |
title | string | Sempre | Título do resultado |
url | string | Sempre | Endereço da página |
host | string | Sempre | Nome do host da página, útil para agrupar ou citar |
snippet | string | Sempre | Trecho curto exibido pela pesquisa |
published_at | string | Quando uma data é conhecida | Data de publicação da página ou do resultado de pesquisa |
content_status | string | Sempre | Se a página foi lida e, caso não tenha sido, por quê |
content | string | Quando content_status é ok | Conteúdo principal em Markdown ou texto simples, cortado em max_chars |
word_count | integer | Quando content_status é ok | Palavras em todo o texto extraído, contadas antes do corte |
target_status | integer | Com target_refused | O status HTTP que o site respondeu, como 403 ou 429 |
O que cada content_status significa?
Nenhuma dessas mudanças altera o preço da pesquisa. Elas descrevem uma página, nunca a chamada inteira.
content_status | Significado | O que um agente deve fazer |
|---|---|---|
ok | A página foi lida; content contém o texto principal dela | Use-a e cite o url |
not_requested | O resultado está além da contagem de read | Aumente read ou leia a página por meio de /extract, se necessário |
blocked_by_robots | O robots.txt do site não permite nosso leitor nesta página | Use o snippet ou outra fonte |
blocked_by_site_policy | O site declara Content-Signal: ai-input=no | Use o snippet ou outra fonte |
target_refused | O site recusou a solicitação; veja target_status | Não tente a página novamente; use outra fonte |
fetch_failed | Erro de DNS, TLS ou conexão, ou a página não existe mais | Tente outro resultado; uma nova tentativa mais tarde pode funcionar |
fetch_timeout | A página não respondeu em 15 segundos | Tente outro resultado; uma nova tentativa mais tarde pode funcionar |
unsupported_content | O link é um arquivo que não conseguimos converter em texto | Use o snippet ou outro resultado |
Como é uma resposta completa?
O exemplo abaixo pediu 5 resultados com os 4 primeiros lidos, então custou 2 créditos. Os resultados 1 e 3 foram lidos. O resultado 2 pertence a um site cujo robots.txt mantém nosso leitor fora, o resultado 4 recusou a solicitação e o resultado 5 está além de read. Títulos, URLs e valores são ilustrativos.
{
"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"
}
]
}Quais resultados recebem um status de página diferente de not_requested?
Apenas os primeiros read resultados, e cada item de uma chamada com /extract. Essas são as páginas que nosso leitor realmente tentou acessar. Tudo depois da contagem de read permanece not_requested, independentemente do que o site teria respondido.
A ordem nunca muda: o leitor trabalha nas posições 1, 2, 3 e assim por diante, nunca em um resultado posterior no lugar de um anterior que falhou. Se um agente precisa de um substituto para uma página recusada, ele pode ler o próximo resultado por meio de /extract.
Como é uma resposta de extract?
/extract retorna credits_used e um array results na ordem das URLs que você enviou. Cada item tem o url e um content_status; com ok ele adiciona title, content e word_count, e com target_refused ele adiciona target_status. Não há position, host nem snippet, porque nenhuma pesquisa foi executada.
A referência de extract mostra um exemplo completo e explica como os créditos são contados.
Como transformo resultados em contexto para um modelo?
Numere as fontes, mantenha a URL ao lado de cada uma e passe apenas o que o modelo precisa. Um layout compacto funciona bem: [1] title — url, depois o conteúdo dessa página, depois a próxima fonte. Peça ao modelo para citar com os mesmos números.
Quando um resultado não tem conteúdo, passe o snippet dele no lugar e diga que é apenas um snippet. Isso evita respostas construídas sobre uma página que o modelo nunca viu. A página de Python tem um loop curto que faz tudo isso dentro de um limite de tokens.
Formato da resposta: perguntas frequentes
O conteúdo é sempre Markdown?
Markdown por padrão. Envie format: "text" para obter texto simples sem marcação, por exemplo quando você só conta palavras ou classifica páginas. O nome do campo permanece content.
Por que published_at está ausente em alguns resultados?
Muitas páginas não informam data, e alguns resultados de pesquisa também não a exibem. Nesse caso, o campo é omitido, então verifique sua presença antes de usá-lo.
Novos campos podem aparecer depois?
Sim. Na versão 1, campos podem ser adicionados, mas nunca renomeados ou removidos. Escreva seu parser para ignorar campos que ele não conhece.
O conteúdo é armazenado do seu lado?
Não. Não treinamos nenhum modelo com as suas consultas ou com o que a API retorna, e não adicionamos nenhuma regra própria contra armazenar resultados; os direitos dos sites cujas páginas você lê continuam valendo. Nosso log de requisições mantém apenas um breve registro de cada chamada, descrito na página de privacidade.