Resposta rápida
Como uso uma API de pesquisa web pela linha de comando?
Envie um corpo JSON com curl -d para https://llmwebsearch.com/api/v1/search, sua chave em um header Authorization: Bearer, e direcione a resposta para jq. LLMWebSearch retorna resultados ranqueados com as 3 melhores páginas em Markdown, então uma linha basta para listar fontes ou salvar páginas em arquivos. Uma pesquisa custa 1 crédito, a partir de US$ 1,20/1K pesquisas em outubro de 2026. Sem KYC; pague com cripto.
Como configuro o terminal uma vez só?
Exporte sua chave no shell, para que ela fique fora dos comandos que você digita e do seu histórico. As receitas abaixo a leem como $LLMWEBSEARCH_API_KEY. Você também precisa do jq, que a maioria dos gerenciadores de pacotes instala com esse nome.
Todas as receitas assumem um shell POSIX como bash ou zsh. No Windows, Git Bash ou WSL as executam sem alterações.
export LLMWEBSEARCH_API_KEY="your-key"
curl -s "https://llmwebsearch.com/api/v1/credits" \
-H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" | jq .Como listo as fontes de uma pesquisa?
Execute a pesquisa com read definido como 0 e imprima uma linha por resultado: posição, host e URL. Isso custa 1 crédito e mostra, em um segundo, quais fontes uma pergunta traz. É uma boa forma de ajustar o texto de uma consulta antes que um agente a use.
curl -s "https://llmwebsearch.com/api/v1/search" \
-H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
-H "Content-Type: application/json" \
-d '{"q": "postgres connection pool size", "max_results": 10, "read": 0}' \
| jq -r '.results[] | "\(.position)\t\(.host)\t\(.url)"'Como salvo as páginas que foram lidas?
Mantenha os resultados cujo content_status seja ok e grave cada content em seu próprio arquivo. A receita abaixo salva 01.md, 02.md e assim por diante, cada um começando pela URL da fonte. O jq seleciona os resultados e o loop do shell grava os arquivos.
curl -s "https://llmwebsearch.com/api/v1/search" \
-H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
-H "Content-Type: application/json" \
-d '{"q": "postgres connection pool size", "read": 3}' > search.json
jq -r '.results[] | select(.content_status == "ok") | .position' search.json | while read -r pos; do
jq -r --argjson p "$pos" '.results[] | select(.position == $p) | "Source: " + .url + "\n\n" + .content' \
search.json > "$(printf '%02d' "$pos").md"
done
ls -1 ./*.mdComo pesquiso notícias de alguns sites?
Adicione topic, time_range e include_domains ao corpo. A receita mantém notícias da última semana em dois domínios e imprime a data ao lado de cada título, o que basta para acompanhar um assunto a partir de um cron job.
curl -s "https://llmwebsearch.com/api/v1/search" \
-H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
-H "Content-Type: application/json" \
-d '{"q": "database security release", "topic": "news", "time_range": "week", "include_domains": ["news.example.com", "example.org"], "read": 0}' \
| jq -r '.results[] | "\(.published_at // "no date") \(.title) \(.url)"'Como uso o formato GET?
Use curl -G com --data-urlencode para a consulta, assim espaços e símbolos são codificados para você. Listas como include_domains viram um único valor separado por vírgulas. O GET é prático para um teste rápido; scripts que crescem devem migrar para POST.
curl -sG "https://llmwebsearch.com/api/v1/search" \
-H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
--data-urlencode "q=pgbouncer transaction mode" \
-d read=1 -d max_chars=3000 -d include_domains=example.com,example.org \
| jq -r '.results[0].content // .results[0].snippet'Como leio URLs que já tenho?
Envie-as para /extract como um array JSON de 1 a 20 endereços. Ler páginas cujas URLs você já tem custa 1 crédito por cada grupo iniciado de 3 páginas devolvidas com conteúdo, até 20 URLs por chamada; URLs recusadas ou com falha não são contadas. A receita imprime cada URL com seu status e contagem de palavras, o que mostra rapidamente quais páginas um site nos permitiu ler.
curl -s "https://llmwebsearch.com/api/v1/extract" \
-H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
-H "Content-Type: application/json" \
-d '{"urls": ["https://docs.example.com/security/key-rotation", "https://example.com/changelog"]}' \
| jq -r '"credits: \(.credits_used)", (.results[] | "\(.content_status)\t\(.word_count // 0)\t\(.url)")'Como vejo o erro quando uma chamada falha?
Imprima o status HTTP com -w e mantenha o body: os erros voltam como JSON com um code e um message. Um script pode então ramificar pelo status, por exemplo aguardando e tentando de novo apenas em 429, 502 ou 504. Nenhum desses erros usa um crédito.
status=$(curl -s -o body.json -w '%{http_code}' "https://llmwebsearch.com/api/v1/search" \
-H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
-H "Content-Type: application/json" \
-d '{"q": "test query"}')
if [ "$status" != "200" ]; then
echo "HTTP $status: $(jq -r '.error.code + " - " + .error.message' body.json)"
ficurl: perguntas comuns
Por que meu body JSON falha com invalid_parameter?
Normalmente é um problema de aspas. Coloque o body entre aspas simples no bash para que as aspas duplas internas fiquem intactas, e verifique com echo '…' | jq . antes de enviar.
Posso passar a chave na URL?
Sim, com -d api_key=… no formulário GET. O header é mais seguro, porque o histórico do shell e os logs de proxy registram URLs.
Uma chamada curl que falha custa um crédito?
Não. Erros HTTP nunca usam créditos. Só é cobrada a pesquisa que retorna resultados, como credits_used mostra.