Awesome Free LLM Apis
Reference guide for permanent free-tier LLM APIs with rate limits, model lists, and OpenAI-compatible integration patterns.
- Skill ID
- reason-machines/trending-skills/awesome-free-llm-apis
- Publisher
- reason-machines
- Repository
- trending-skills
- Installs
- 0
- Files
- 1
- Synced
- Sep 23, 2026
Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.
reason-machines/trending-skills/awesome-free-llm-apisInstalls these files- SKILL.md
What this skill tells the agent
Awesome Free LLM APIs
Skill by ara.so — Daily 2026 Skills collection.
A curated list of LLM providers offering permanent free tiers for text inference — no trial credits, no expiry. All endpoints listed are OpenAI SDK-compatible unless noted.
Provider Overview
Provider APIs (trained/fine-tuned by the company)
| Provider | Notable Models | Rate Limits | Region |
|---|---|---|---|
| Cohere | Command A, Command R+, Aya Expanse 32B | 20 RPM, 1K req/mo | 🇺🇸 |
| Google Gemini | Gemini 2.5 Pro, Flash, Flash-Lite | 5–15 RPM, 100–1K RPD | 🇺🇸 (not EU/UK/CH) |
| Mistral AI | Mistral Large 3, Small 3.1, Ministral 8B | 1 req/s, 1B tok/mo | 🇪🇺 |
| Zhipu AI | GLM-4.7-Flash, GLM-4.5-Flash, GLM-4.6V-Flash | Undocumented | 🇨🇳 |
Inference Providers (host open-weight models)
| Provider | Notable Models | Rate Limits | Region |
|---|---|---|---|
| Cerebras | Llama 3.3 70B, Qwen3 235B, GPT-OSS-120B | 30 RPM, 14,400 RPD | 🇺🇸 |
| Cloudflare Workers AI | Llama 3.3 70B, Qwen QwQ 32B | 10K neurons/day | 🇺🇸 |
| GitHub Models | GPT-4o, Llama 3.3 70B, DeepSeek-R1 | 10–15 RPM, 50–150 RPD | 🇺🇸 |
| Groq | Llama 3.3 70B, Llama 4 Scout, Kimi K2 | 30 RPM, 1K RPD | 🇺🇸 |
| Hugging Face | Llama 3.3 70B, Qwen2.5 72B, Mistral 7B | $0.10/mo free credits | 🇺🇸 |
| Kluster AI | DeepSeek-R1, Llama 4 Maverick, Qwen3-235B | Undocumented | 🇺🇸 |
| LLM7.io | DeepSeek R1, Flash-Lite, Qwen2.5 Coder | 30 RPM (120 with token) | 🇬🇧 |
| NVIDIA NIM | Llama 3.3 70B, Mistral Large, Qwen3 235B | 40 RPM | 🇺🇸 |
| Ollama Cloud | DeepSeek-V3.2, Qwen3.5, Kimi-K2.5 | 1 concurrent, light usage | 🇺🇸 |
| OpenRouter | DeepSeek R1, Llama 3.3 70B, GPT-OSS-120B | 20 RPM, 50 RPD (1K with $10+) | 🇺🇸 |
Getting API Keys
Each provider has its own key management page:
# Store keys as environment variables — never hardcode them
export GROQ_API_KEY="your_groq_key"
export GEMINI_API_KEY="your_gemini_key"
export OPENROUTER_API_KEY="your_openrouter_key"
export MISTRAL_API_KEY="your_mistral_key"
export COHERE_API_KEY="your_cohere_key"
export CEREBRAS_API_KEY="your_cerebras_key"
export GITHUB_TOKEN="your_github_pat"
export HF_TOKEN="your_huggingface_token"
export NVIDIA_API_KEY="your_nvidia_key"
export CLOUDFLARE_API_TOKEN="your_cf_token"
export CLOUDFLARE_ACCOUNT_ID="your_cf_account_id"OpenAI SDK Integration
All providers (except Ollama Cloud) are OpenAI SDK-compatible — just swap the base_url and api_key.
Python
from openai import OpenAI
# ── Groq ──────────────────────────────────────────────────────────────────────
client = OpenAI(
base_url="https://api.groq.com/openai/v1",
api_key=os.environ["GROQ_API_KEY"],
)
response = client.chat.completions.create(
model="llama-3.3-70b-versatile",
messages=[{"role": "user", "content": "Hello!"}],
)
print(response.choices[0].message.content)
# ── Google Gemini ─────────────────────────────────────────────────────────────
client = OpenAI(
base_url="https://generativelanguage.googleapis.com/v1beta/openai/",
api_key=os.environ["GEMINI_API_KEY"],
)
response = client.chat.completions.create(
model="gemini-2.0-flash",
messages=[{"role": "user", "content": "Explain quantum entanglement."}],
)
# ── Mistral AI ────────────────────────────────────────────────────────────────
client = OpenAI(
base_url="https://api.mistral.ai/v1",
api_key=os.environ["MISTRAL_API_KEY"],
)
response = client.chat.completions.create(
model="mistral-small-latest",
messages=[{"role": "user", "content": "Write a haiku about code."}],
)
# ── OpenRouter ────────────────────────────────────────────────────────────────
client = OpenAI(
base_url="https://openrouter.ai/api/v1",
api_key=os.environ["OPENROUTER_API_KEY"],
)
response = client.chat.completions.create(
model="deepseek/deepseek-r1", # free model on OpenRouter
messages=[{"role": "user", "content": "What is 2+2?"}],
extra_headers={
"HTTP-Referer": "https://yourapp.com", # optional but recommended
"X-Title": "My App",
},
)
# ── Cerebras ──────────────────────────────────────────────────────────────────
client = OpenAI(
base_url="https://api.cerebras.ai/v1",
api_key=os.environ["CEREBRAS_API_KEY"],
)
response = client.chat.completions.create(
model="llama-3.3-70b",
messages=[{"role": "user", "content": "Tell me a joke."}],
)
# ── NVIDIA NIM ────────────────────────────────────────────────────────────────
client = OpenAI(
base_url="https://integrate.api.nvidia.com/v1",
api_key=os.environ["NVIDIA_API_KEY"],
)
response = client.chat.completions.create(
model="meta/llama-3.3-70b-instruct",
messages=[{"role": "user", "content": "Summarize this text."}],
)
# ── GitHub Models ─────────────────────────────────────────────────────────────
client = OpenAI(
base_url="https://models.inference.ai.azure.com",
api_key=os.environ["GITHUB_TOKEN"],
)
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Draft an email."}],
)
# ── Cohere (OpenAI-compatible endpoint) ───────────────────────────────────────
client = OpenAI(
base_url="https://api.cohere.com/compatibility/v1",
api_key=os.environ["COHERE_API_KEY"],
)
response = client.chat.completions.create(
model="command-a-03-2025",
messages=[{"role": "user", "content": "Translate to French: Hello world"}],
)JavaScript / TypeScript
import OpenAI from "openai";
// ── Groq ──────────────────────────────────────────────────────────────────────
const groq = new OpenAI({
baseURL: "https://api.groq.com/openai/v1",
apiKey: process.env.GROQ_API_KEY,
});
const completion = await groq.chat.completions.create({
model: "llama-3.3-70b-versatile",
messages: [{ role: "user", content: "Hello!" }],
});
console.log(completion.choices[0].message.content);
// ── OpenRouter with free model router ────────────────────────────────────────
const openrouter = new OpenAI({
baseURL: "https://openrouter.ai/api/v1",
apiKey: process.env.OPENROUTER_API_KEY,
defaultHeaders: {
"HTTP-Referer": "https://yourapp.com",
"X-Title": "My App",
},
});
// Use the free models router — automatically picks an available free model
const freeCompletion = await openrouter.chat.completions.create({
model: "openrouter/free",
messages: [{ role: "user", content: "What is the capital of France?" }],
});
// ── Mistral ───────────────────────────────────────────────────────────────────
const mistral = new OpenAI({
baseURL: "https://api.mistral.ai/v1",
apiKey: process.env.MISTRAL_API_KEY,
});
const mistralCompletion = await mistral.chat.completions.create({
model: "mistral-small-latest",
messages: [{ role: "user", content: "Explain async/await in JavaScript." }],
});Cloudflare Workers AI
Cloudflare uses a slightly different auth pattern:
import requests, os
ACCOUNT_ID = os.environ["CLOUDFLARE_ACCOUNT_ID"]
API_TOKEN = os.environ["CLOUDFLARE_API_TOKEN"]
response = requests.post(
f"https://api.cloudflare.com/client/v4/accounts/{ACCOUNT_ID}/ai/run/"
"@cf/meta/llama-3.3-70b-instruct-fp8-fast",
headers={"Authorization": f"Bearer {API_TOKEN}"},
json={"messages": [{"role": "user", "content": "What is Cloudflare Workers?"}]},
)
result = response.json()
print(result["result"]["response"])More from reason-machines
Use this skill in a project
Open any RiverX project, search the Skills panel for reason-machines/trending-skills/awesome-free-llm-apis, and install it in one click.
