FreeAPIs is a credential-free, automatically updated directory of generative models that can be used for free through official provider APIs. It currently covers OpenRouter, Groq, and the Gemini Developer API.
The project publishes navigation data only. It is not a proxy, gateway, quota tracker, or configuration generator, and it never asks users or CI to provide provider API keys. Free availability and limits can change; always confirm the current provider terms before relying on a model.
| Provider | Status | Models | Outputs | Free type | Last update | Full list |
|---|---|---|---|---|---|---|
| OpenRouter | fresh |
15 | text |
free_variant |
2026-08-17 | View models |
| Groq | fresh |
7 | text, audio |
free_plan |
2026-08-17 | View models |
| Gemini | fresh |
20 | text, audio |
free_tier |
2026-08-17 | View models |
- OpenRouter: concrete model IDs ending in
:free, with zero core prices. Theopenrouter/freerouter and non-generative models are excluded. - Groq: models in the official Free Plan Limits table whose public model detail page confirms a generative text, image, audio, or video output.
- Gemini: models whose Standard pricing table marks both core input and
output as
Free of chargein the Free Tier column.
Embedding, reranking, safety/classification, and speech-recognition or transcription-only models are excluded. If output type cannot be confirmed, a model is logged and omitted.
free_type is one of free_variant, free_plan, or free_tier.
output_types is limited to text, image, audio, and video. The project
does not maintain provider-specific quota amounts.
Python 3.12 or newer is required.
python -m pip install -e .
python -m freeapis update
python -m freeapis update --provider groq
python -m freeapis render
python -m freeapis checkupdate fetches public official sources, merges each provider independently,
validates data/models.json, and rebuilds the README navigation and provider
pages. A failed provider keeps
its previous records and becomes stale; successful providers are still
updated. The command exits non-zero after writing valid partial results so CI
can alert maintainers.
data/models.json contains schema_version, generated_at, providers, and
models. Every model record has exactly these fields:
provider, model_id, name, output_types, free_type, model_url, api_key_url,
docs_url, source_url, last_updated
last_updated is the last date on which the official source confirmed the
model as free. Git history provides change tracking; no snapshots are stored.
python -m pip install -e ".[test]"
pytestUnit tests use reduced official-page fixtures and do not access the network.