# Formato da resposta: todos os campos de uma pesquisa, explicados

> Formato de resposta da Search API: cada campo de /search e /extract, os oito valores de content_status e target_status, com um exemplo completo. Sem KYC.

- URL: https://llmwebsearch.com/pt/docs/response/
- Última atualização: 2026-10-22
- Editor: LLMWebSearch (https://llmwebsearch.com)

Uma resposta de pesquisa é um objeto JSON: alguns campos sobre a chamada e depois um array `results` ordenado. Cada resultado informa se a página foi lida e, se foi, traz o conteúdo. Aqui estão todos os campos, com os status que um agente deve tratar.

**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.

*Resposta de POST /search (ilustrativa)*

```json
{
  "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](https://llmwebsearch.com/pt/docs/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](https://llmwebsearch.com/pt/docs/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](https://llmwebsearch.com/pt/privacy/).

---

LLMWebSearch: O LLMWebSearch é uma API de pesquisa na web para agentes de IA que retorna resultados classificados com o conteúdo das principais páginas em Markdown, pago com cripto sem envio de documentos. Os créditos pré-pagos a partir de US$ 1,20/1K pesquisas nunca expiram. Sem KYC — sem documento, sem selfie, sem comprovantes. Pague com cripto.
