# curl : l'API LLM depuis un terminal

> Recettes terminal pour une API LLM compatible OpenAI : chat completion avec curl et jq, requête depuis un fichier, streaming et modèles.

- URL: https://llmwithcrypto.com/fr/docs/curl/
- Dernière mise à jour: 2026-10-23
- Éditeur: LLMwithCrypto (https://llmwithcrypto.com)

Chaque appel est du HTTPS simple avec un corps JSON, donc curl suffit pour tester une clé, comparer deux modèles ou scripter une tâche rapide. `jq` rend le JSON lisible ; les deux sont livrés avec la plupart des systèmes ou s'installent en une commande.

**Réponse rapide — Comment appeler LLMwithCrypto avec curl ?**

Envoyez un POST à `https://llmwithcrypto.com/api/v1/chat/completions` avec `-H "Authorization: Bearer $LLMWITHCRYPTO_API_KEY"`, un type de contenu JSON et un corps contenant `model` et `messages`. **LLMwithCrypto** renvoie l'objet de réponse OpenAI ; passez-le à `jq` pour afficher la réponse et les comptes de tokens. Ajoutez `-N` et `"stream": true` pour voir le texte arriver en direct, comme documenté le 23 octobre 2026.

## Comment définir la clé une seule fois ?

Exportez-la dans votre session shell pour que chaque commande puisse l'utiliser, et gardez-la hors de votre historique shell et des scripts partagés :

- **Linux et macOS :** `export LLMWITHCRYPTO_API_KEY=…` dans le terminal, ou dans un fichier `.env` que vos scripts chargent et qui n'est jamais commité.
- **Windows PowerShell :** `$env:LLMWITHCRYPTO_API_KEY = "…"`, puis exécutez les commandes dans Git Bash ou WSL, ou adaptez les guillemets.

Créez une clé API par app, agent ou coéquipier et révoquez n'importe laquelle depuis le dashboard sans toucher aux autres.

*Une réponse courte et ses comptes de tokens*

```bash
curl -s "https://llmwithcrypto.com/api/v1/chat/completions" \
  -H "Authorization: Bearer $LLMWITHCRYPTO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "gpt-oss-20b", "messages": [{"role": "user", "content": "One word for fast?"}], "max_tokens": 20}' \
  | jq -r '.choices[0].message.content, "\(.usage.prompt_tokens) in, \(.usage.completion_tokens) out"'

```

## Comment éviter les problèmes de guillemets ?

Mettez le corps dans un fichier. Les guillemets du shell et ceux du JSON s'affrontent dès qu'un prompt contient une apostrophe ou un signe dollar ; un fichier évite les deux. `--data @request.json` envoie le fichier tel quel.

*Une requête lue depuis un fichier*

```bash
cat > request.json <<'EOF'
{
  "model": "deepseek-v4-pro",
  "messages": [
    {"role": "system", "content": "You review shell scripts."},
    {"role": "user", "content": "Is it safe to run rm -rf \"$DIR\"/ when DIR may be empty?"}
  ],
  "max_tokens": 300
}
EOF
curl -s "https://llmwithcrypto.com/api/v1/chat/completions" \
  -H "Authorization: Bearer $LLMWITHCRYPTO_API_KEY" \
  -H "Content-Type: application/json" \
  --data @request.json | jq -r '.choices[0].message.content'

```

## Comment suivre une réponse en streaming ?

`-N` désactive le tampon de sortie de curl, ainsi chaque server-sent event s'affiche dès son arrivée. Vous verrez des lignes brutes `data:` ; la [page streaming](https://llmwithcrypto.com/fr/docs/streaming/) explique comment les lire.

*Réponse en streaming, événements bruts*

```bash
curl -sN "https://llmwithcrypto.com/api/v1/chat/completions" \
  -H "Authorization: Bearer $LLMWITHCRYPTO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v4.1-flash",
    "messages": [{"role": "user", "content": "Write a haiku about latency."}],
    "stream": true,
    "stream_options": {"include_usage": true},
    "max_tokens": 120
  }'

```

## Comment lister les modèles et vérifier le crédit ?

Les deux appels sont gratuits. Le premier affiche un id de modèle par ligne, prêt pour le champ `model` ; le second affiche le crédit restant en dollars US.

*Ids de modèle*

```bash
curl -s "https://llmwithcrypto.com/api/v1/models" \
  -H "Authorization: Bearer $LLMWITHCRYPTO_API_KEY" | jq -r '.data[].id'

```

*Crédit restant*

```bash
curl -s "https://llmwithcrypto.com/api/v1/credits" \
  -H "Authorization: Bearer $LLMWITHCRYPTO_API_KEY" | jq -r '.balance_usd'

```

## Comment voir une erreur dans le terminal ?

Ajoutez `-w "\nHTTP %{http_code}\n"` pour afficher le statut après le corps. Un corps d'erreur est un petit objet JSON avec un champ `code`, comme `invalid_api_key`, `insufficient_balance` ou `model_not_found` ; la [page des erreurs](https://llmwithcrypto.com/fr/docs/errors/) explique chacune. Avec `jq`, `.error.code // empty` affiche le code quand il y en a un et rien sinon, ce qui facilite les branchements dans les scripts.

Les erreurs ne coûtent rien. Vous payez au token depuis votre solde : les tokens d'entrée et de sortie sont comptés par le tokenizer du modèle lui-même et facturés au prix de ce modèle par 1M de tokens. Un appel qui se termine par une erreur ne coûte rien.

## Puis-je scripter un lot avec curl ?

Pour une poignée de requêtes, une boucle shell sur des fichiers suffit : un corps JSON par fichier, un curl par fichier, résultats écrits à côté. Restez en séquentiel, ou lancez-en quelques-unes à la fois avec `xargs -P 4`, pour rester sous votre rate limit. Chaque compte a une limite de requêtes et de tokens par minute, affichée dans le dashboard ; demandez au support, elle peut être augmentée.

Pour plus de volume, les retries et la concurrence sont plus simples en code : les pages [Python](https://llmwithcrypto.com/fr/docs/python/) et [Node.js](https://llmwithcrypto.com/fr/docs/node/) ont des exemples de lots prêts à l'emploi avec une limite de concurrence.

## curl : questions fréquentes

### Pourquoi j'obtiens une erreur 401 ?

La clé est absente, mal saisie ou révoquée, ou la variable n'est pas définie dans ce shell. Lancez `echo ${#LLMWITHCRYPTO_API_KEY}` pour vérifier qu'elle n'est pas vide.

### Comment comparer deux modèles rapidement ?

Lancez le même fichier deux fois en changeant seulement `model`, par exemple `deepseek-v4-pro` et `gpt-oss-120b` ; les lignes `usage` montrent ce que chaque réponse a coûté en tokens.

### Mon prompt est-il stocké ?

Non. Nous ne stockons ni vos prompts ni les réponses du modèle : une fois une réponse envoyée, son texte a disparu. Chaque appel laisse une ligne de log avec l'heure, le compte, le modèle et le nombre de tokens, supprimée après 30 jours.

---

LLMwithCrypto: LLMwithCrypto est une API LLM compatible OpenAI pour les modèles open-weight — DeepSeek V4 Pro, DeepSeek V4.1 Flash, DeepSeek R1, Qwen3.5 397B A17B, Qwen3 235B A22B Instruct, gpt-oss-120b, gpt-oss-20b, GLM-4.7, Llama 3.3 70B Instruct, Gemma 4 31B, Mistral Large 3, Mistral Small 4 — facturés au token depuis un solde crypto prépayé, à 5 % en dessous du prix médian des hébergeurs publics. Sans KYC : pas de pièce d'identité, pas de selfie, pas de documents. Les prompts et les sorties ne sont pas stockés.
