API LLM gratuites : que vaut awesome-free-llm-apis ?
Choisir un fournisseur gratuit selon ses quotas et ses conditions, l'appeler avec le SDK OpenAI et enchaîner plusieurs offres pour ne jamais tomber sur un 429.

Un side project qui résume des articles, un bot Discord qui répond aux questions, un script qui classe des tickets. Il faut un LLM derrière, et on n'a pas envie de laisser sa carte bancaire à un fournisseur pour un projet qui ne rapportera rien. La question devient : qui donne encore de l'inférence gratuite, sans date d'expiration ?
awesome-free-llm-apis est une liste GitHub des API de modèles de langage qui ont une offre gratuite permanente pour l'inférence texte. Pas de crédits d'essai, pas de promotion de lancement : la règle d'entrée du dépôt exclut tout ce qui expire. Pour chaque fournisseur, on trouve l'URL de base, la page de création de clé, les modèles disponibles, leur contexte et leurs limites de débit.
Le projet
Le dépôt a été créé en mars 2026 par l'équipe de Manifest, un outil pour fiabiliser les agents IA. En octobre, il dépasse les 10 000 étoiles et le millier de forks. Il est sous licence CC0, donc dans le domaine public. Six contributeurs seulement, mais des mises à jour presque quotidiennes : le dernier commit date de ce matin.
Le lien commercial est assumé. Le README précise que tous ces modèles gratuits sont accessibles via Manifest, le produit de l'éditeur. Ça n'enlève rien à la liste, qui pointe directement vers chaque fournisseur, mais ça explique pourquoi elle est si bien tenue.
Ce qui m'a convaincu de la lire en détail, ce sont les notes de bas de page. Chaque restriction y est sourcée : la date d'arrêt d'un modèle chez Groq, l'obligation de vérification d'identité chez SiliconFlow, la clause qui interdit le palier gratuit de Gemini pour une application servie en Europe. C'est rare dans une liste « awesome ».
C'est le cousin, côté IA, de la liste Public APIs et ses 2 100 API gratuites. Même logique, même piège : « gratuit » ne veut presque jamais dire « gratuit sans condition ».
Seize fournisseurs, deux familles
La liste sépare deux types d'acteurs. Les fournisseurs de modèles entraînent leurs propres modèles et les servent eux-mêmes. Les plateformes d'inférence hébergent des modèles open-weight venus d'ailleurs : Llama, Qwen, gpt-oss, Gemma, DeepSeek.
| Fournisseur | Famille | Ce qu'on obtient gratuitement | La condition à lire |
|---|---|---|---|
| Google Gemini | Modèles | Gemini Flash et Pro, contexte 1M | Interdit pour servir des utilisateurs dans l'EEE |
| Mistral AI | Modèles | 10 $ de crédits par mois, Large 3 et Codestral | Prompts réutilisables pour l'entraînement, opt-out possible |
| Cohere | Modèles | 1 000 appels par mois | Usage non commercial uniquement |
| Z AI (Zhipu) | Modèles | GLM-4.7-Flash, contexte 200K | Une seule requête simultanée |
| Aion Labs | Modèles | 20 000 tokens par jour | Spécialisé jeu de rôle |
| Groq | Inférence | gpt-oss-120b, 1 000 requêtes par jour | Modèles retirés sans long préavis |
| OpenRouter | Inférence | 17 modèles :free | 50 requêtes par jour et par modèle |
| NVIDIA NIM | Inférence | 100+ modèles, 10 000 requêtes par jour | Compte NVIDIA Developer |
| Cloudflare Workers AI | Inférence | 10 000 Neurons par jour | Quota partagé entre tous les modèles |
| OVHcloud AI Endpoints | Inférence | 20+ modèles hébergés en Europe | 2 requêtes par minute, sans clé |
| Kilo Code | Inférence | Pool de modèles gratuits | 200 requêtes par heure, sans clé |
| Ollama Cloud | Inférence | DeepSeek V4, Kimi K3, gpt-oss | Limites non publiées |
| Hugging Face | Inférence | Des milliers de modèles | 0,10 $ de crédits par mois |
| LLM7.io | Inférence | Modèles turbo | Catalogue qui change souvent |
| ModelScope | Inférence | Qwen 3.5, 2 000 requêtes par jour | Compte Alibaba Cloud vérifié |
| SiliconFlow | Inférence | Qwen3-8B | Vérification d'identité chinoise |
Les deux dernières lignes sont, en pratique, hors de portée pour un développeur français. Restent quatorze options, ce qui est déjà beaucoup.
Le piège européen de Gemini
Gemini a l'offre la plus généreuse sur le papier : des modèles récents, un million de tokens de contexte, de l'audio et de la vidéo en entrée. Mais la note de bas de page change tout.
Les conditions de Google imposent d'utiliser uniquement les services payants dès qu'on met une application à disposition d'utilisateurs dans l'Espace économique européen, en Suisse ou au Royaume-Uni. Traduction : le palier gratuit est utilisable pour développer et tester depuis la France, pas pour faire tourner un service public destiné à des Européens.
La contrepartie joue en notre faveur. Hors Europe, les prompts du palier gratuit peuvent servir à améliorer les produits Google. Pour les utilisateurs européens, les conditions de données du service payant s'appliquent aussi au quota gratuit, et les prompts ne sont pas réutilisés.
Cette question de la réutilisation revient chez presque tous les fournisseurs. Mistral entraîne ses modèles sur les échanges du mode gratuit sauf opt-out. OpenRouter prévient que les fournisseurs gratuits peuvent journaliser les prompts. Les endpoints NVIDIA servis par Kilo affichent « ne soumettez pas de données personnelles ou confidentielles ». Envoyer des données clients sur une de ces offres pose exactement les questions décrites dans l'analyse sur le RGPD face à l'IA.
Ce que j'ai testé sans créer de compte
Deux fournisseurs de la liste acceptent des requêtes sans aucune clé : OVHcloud et Kilo Code. Je les ai appelés avec curl, sans inscription.
curl https://oai.endpoints.kepler.ai.cloud.ovh.net/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-oss-120b",
"messages": [{"role": "user", "content": "In one sentence: what is a reverse proxy?"}],
"max_tokens": 300
}'La réponse arrive en deux secondes, au format OpenAI. Le quota de 2 requêtes par minute se vérifie tout de suite : la troisième requête renvoie une erreur 429 avec les en-têtes qui disent quand réessayer.
HTTP/1.1 429 Too Many Requests
x-ratelimit-limit-minute: 2
ratelimit-remaining: 0
retry-after: 33Deux requêtes par minute, c'est trop peu pour un chatbot, mais largement assez pour un script de nuit qui résume un flux RSS. Et c'est le seul fournisseur de la liste dont les modèles tournent dans des datacenters européens.
Kilo Code a répondu aussi, via son routeur kilo-auto/free. Celui-ci a choisi tout seul dots-studio/dots-3-note-preview:free, un modèle que je ne connaissais pas. C'est pratique pour un prototype, moins pour un produit : on ne sait pas d'une requête à l'autre quel modèle répond.
Le détail qui casse le SDK OpenAI
Le premier réflexe est d'utiliser le SDK openai avec une fausse clé, puisque l'endpoint n'en demande pas. Mauvaise idée chez OVHcloud. Dès qu'un en-tête Authorization est présent, même avec une valeur bidon, l'API répond 403 :
{"message":"Forbidden: authentication failed. Please generate a new one at https://kepler.ai.cloud.ovh.net/..."}Le SDK envoie toujours cet en-tête. Pour l'accès anonyme, il faut donc passer par fetch sans Authorization. Kilo, lui, ignore une clé invalide et répond normalement.
Un seul client pour tous les fournisseurs
Presque tous les fournisseurs de la liste exposent une API compatible OpenAI. Changer de fournisseur revient à changer l'URL de base, la clé et le nom du modèle. C'est ce qui rend la liste vraiment utile : on peut chaîner plusieurs offres gratuites et passer à la suivante dès que l'une renvoie un 429.
Voici le client que j'utilise pour mes scripts. Il essaie chaque fournisseur dans l'ordre et saute ceux qui sont saturés ou indisponibles.
type Provider = {
name: string
baseUrl: string
model: string
apiKey?: string // absent = accès anonyme, aucun en-tête Authorization
}
const providers: Provider[] = [
{
name: 'groq',
baseUrl: 'https://api.groq.com/openai/v1',
model: 'openai/gpt-oss-120b',
apiKey: process.env.GROQ_API_KEY,
},
{
name: 'openrouter',
baseUrl: 'https://openrouter.ai/api/v1',
model: 'nvidia/nemotron-3-super-120b-a12b:free',
apiKey: process.env.OPENROUTER_API_KEY,
},
{
name: 'ovhcloud',
baseUrl: 'https://oai.endpoints.kepler.ai.cloud.ovh.net/v1',
model: 'gpt-oss-120b',
},
]
export async function complete(prompt: string): Promise<string> {
for (const p of providers) {
const headers: Record<string, string> = { 'Content-Type': 'application/json' }
if (p.apiKey) headers.Authorization = `Bearer ${p.apiKey}`
const res = await fetch(`${p.baseUrl}/chat/completions`, {
method: 'POST',
headers,
body: JSON.stringify({
model: p.model,
messages: [{ role: 'user', content: prompt }],
}),
})
// 429 = quota atteint, 5xx = fournisseur en panne : on passe au suivant
if (res.status === 429 || res.status >= 500) {
console.warn(`${p.name}: ${res.status}, fournisseur suivant`)
continue
}
if (!res.ok) throw new Error(`${p.name}: ${res.status} ${await res.text()}`)
const data = await res.json()
return data.choices[0].message.content
}
throw new Error('Tous les fournisseurs gratuits sont saturés')
}Une erreur 401 ou 400 lève une exception au lieu de passer au suivant. C'est voulu : une clé expirée ou un nom de modèle retiré doivent se voir, pas être masqués par la chaîne de secours.
L'ordre compte. Je mets Groq en premier pour sa vitesse : ses puces LPU renvoient des centaines de tokens par seconde. OpenRouter vient ensuite, avec ses 50 requêtes par jour et par modèle. OVHcloud ferme la marche, lent en débit mais sans compte. Mis bout à bout, on dépasse le millier de requêtes quotidiennes sans payer.
OpenRouter propose aussi un routeur openrouter/free qui fait ce travail côté serveur, en choisissant un modèle gratuit disponible. Moins de code, mais moins de contrôle sur le modèle qui répond.
Gratuit aujourd'hui, retiré demain
La liste bouge vite, et ses notes le montrent. Groq a arrêté qwen/qwen3.6-27b le 14 septembre, remplacé par qwen3.8-27b. Z AI a annoncé la fin de GLM-4.5-Flash, dont la date est passée alors que le modèle répond toujours. Le catalogue de Kilo Code contient des modèles qui ne répondent pas, et le pool réel contient des modèles absents du catalogue.
Trois règles en découlent :
- Le nom du modèle va dans la configuration, jamais en dur au milieu du code. Un modèle retiré doit se remplacer sans redéploiement.
- Chaque appel a un fournisseur de secours. Un seul fournisseur gratuit, c'est un point de panne garanti.
- On surveille les erreurs 404 et 400 sur le nom du modèle. C'est le premier signe qu'un fournisseur a fait le ménage.
Pour suivre les changements, il suffit de regarder les commits du dépôt. Les mainteneurs y notent chaque retrait, avec un lien vers la page de dépréciation du fournisseur.
Quand le gratuit ne suffit plus
Les offres gratuites conviennent à trois usages : apprendre, prototyper, et faire tourner des tâches de fond à faible volume. Dès qu'un produit a de vrais utilisateurs, les limites de 50 ou 1 000 requêtes par jour deviennent un plafond de verre, et les conditions de réutilisation des prompts un problème juridique.
Il reste alors deux voies. La première est de passer au palier payant du fournisseur qui a donné satisfaction. OpenRouter, par exemple, passe à 1 000 requêtes par jour sur ses modèles gratuits après un achat unique de 10 $ de crédits. La seconde est de rapatrier l'inférence chez soi : faire tourner un LLM en local avec Ollama supprime les quotas et la question des données, au prix d'une machine capable de porter le modèle.
Entre les deux, une plateforme comme Dify, pour construire des applications LLM auto-hébergées, accepte plusieurs fournisseurs à la fois. On y branche une clé Groq, une clé Mistral et un Ollama local, puis on bascule de l'un à l'autre sans réécrire l'application.
Peut-on construire sur des API LLM gratuites ? Pour un prototype, un outil personnel ou un script de veille, oui, et awesome-free-llm-apis fait gagner des heures de comparaison. Pour un service ouvert au public européen, le gratuit sert surtout à choisir son futur fournisseur payant. La liste a le mérite de le dire noir sur blanc, en bas de page, là où les pages marketing des fournisseurs ne le disent jamais.