# Recettes curl et jq pour l'API de recherche web

> Recherche web API en curl et jq : rechercher, lister les sources, filtrer et lire des URL, vérifier les crédits. Paiement crypto, sans KYC.

- URL: https://llmwebsearch.com/fr/docs/curl/
- Dernière mise à jour: 2026-10-22
- Éditeur: LLMWebSearch (https://llmwebsearch.com)

Toutes les fonctionnalités de l'API fonctionnent depuis un terminal. Ces recettes utilisent `curl` pour l'appeler et `jq` pour façonner le JSON : utile pour tester une requête avant de la coder, pour les scripts shell et pour les cron jobs.

**Réponse rapide — Comment utiliser une API de recherche web en ligne de commande ?**

Envoyez un corps JSON avec `curl -d` à `https://llmwebsearch.com/api/v1/search`, votre clé dans un header `Authorization: Bearer`, et passez la réponse dans `jq`. **LLMWebSearch** renvoie des résultats classés avec les 3 premières pages en Markdown, si bien qu'une seule ligne peut lister les sources ou enregistrer les pages dans des fichiers. Une requête coûte 1 crédit, à partir de 1,20 $US/1K requêtes en octobre 2026. Sans KYC ; paiement en crypto.

## Comment configurer le terminal une fois pour toutes ?

Exportez votre clé dans le shell, pour qu'elle reste hors des commandes que vous tapez et hors de votre historique. Les recettes ci-dessous la lisent via `$LLMWEBSEARCH_API_KEY`. Il vous faut aussi `jq`, que la plupart des gestionnaires de paquets installent sous ce nom.

Toutes les recettes supposent un shell POSIX comme bash ou zsh. Sous Windows, Git Bash ou WSL les exécutent sans modification.

*Définir la clé et vérifier votre solde (gratuit)*

```bash
export LLMWEBSEARCH_API_KEY="your-key"

curl -s "https://llmwebsearch.com/api/v1/credits" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" | jq .
```

## Comment lister les sources d'une requête ?

Lancez la recherche avec `read` défini sur `0` et affichez une ligne par résultat : position, hôte et URL. Cela coûte 1 crédit et vous montre, en une seconde, quelles sources une question fait remonter. C'est un bon moyen d'ajuster la formulation d'une requête avant qu'un agent ne l'utilise.

*Une ligne par résultat*

```bash
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)"'
```

## Comment enregistrer les pages lues ?

Conservez les résultats dont le `content_status` vaut `ok` et écrivez chaque `content` dans son propre fichier. La recette ci-dessous enregistre `01.md`, `02.md`, etc., chacun commençant par son URL source. jq sélectionne les résultats et la boucle shell écrit les fichiers.

*Enregistrer chaque page en Markdown*

```bash
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 ./*.md
```

## Comment rechercher des actualités sur quelques sites ?

Ajoutez `topic`, `time_range` et `include_domains` au corps. La recette conserve les actualités de la semaine passée sur deux domaines et affiche la date à côté de chaque titre, de quoi surveiller un sujet depuis un cron job.

*Actualités de la semaine passée sur deux domaines*

```bash
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)"'
```

## Comment utiliser la forme GET ?

Utilisez `curl -G` avec `--data-urlencode` pour la requête, afin que les espaces et les symboles soient encodés pour vous. Les listes comme `include_domains` deviennent une seule valeur séparée par des virgules. GET est pratique pour un test rapide ; les scripts qui grossissent devraient passer à POST.

*GET /search*

```bash
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'
```

## Comment lire des URL que j'ai déjà ?

Envoyez-les à `/extract` sous forme de tableau JSON de 1 à 20 adresses. Lire des pages dont vous avez déjà les URLs coûte 1 crédit par groupe de 3 pages entamé, renvoyées avec leur contenu, jusqu'à 20 URLs par appel ; les URLs refusées ou en échec ne sont pas comptées. La recette affiche chaque URL avec son statut et son nombre de mots, ce qui montre en un coup d'œil quelles pages un site nous a autorisés à lire.

*POST /extract*

```bash
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)")'
```

## Comment voir l'erreur quand un appel échoue ?

Affichez le statut HTTP avec `-w` et conservez le corps : les erreurs reviennent en JSON avec un `code` et un `message`. Un script peut ensuite brancher sur le statut, par exemple attendre et réessayer uniquement sur `429`, `502` ou `504`. Aucune de ces erreurs ne consomme de crédit.

*Code de statut et corps d'erreur*

```bash
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)"
fi
```

## curl : questions fréquentes

### Pourquoi mon corps JSON échoue-t-il avec invalid_parameter ?

C'est généralement un problème de quoting. Entourez le corps de guillemets simples dans bash pour que les guillemets doubles à l'intérieur restent intacts, et vérifiez-le avec `echo '…' | jq .` avant l'envoi.

### Puis-je passer la clé dans l'URL ?

Oui, avec `-d api_key=…` sur la forme GET. Le header est plus sûr, car l'historique du shell et les logs de proxy enregistrent les URL.

### Un appel curl qui échoue coûte-t-il un crédit ?

Non. Les erreurs HTTP ne consomment jamais de crédits. Seule une requête qui renvoie des résultats est facturée, comme le montre `credits_used`.

---

LLMWebSearch: LLMWebSearch est une API de recherche web pour agents IA qui renvoie des résultats classés avec le contenu des meilleures pages en Markdown, payée en crypto sans envoi de pièce d'identité. Les crédits prépayés à partir de 1,20 $US/1K requêtes n'expirent jamais. Sans KYC — pas de pièce d'identité, pas de selfie, pas de documents. Payez en crypto.
