AI APIs with a real free tier. Rate limits listed so you know what you're working with before you start building.
PRs welcome β limits change often, keeping this accurate is the whole point.
- LLMs
- Image Generation
- Speech and Audio
- Embeddings
- Vector Databases
- Multi-modal
- Local and Self-hosted
- Expiring Credits
- Examples
Permanent free tiers β no expiry, no credit card unless noted.
- Google AI Studio - Gemini 2.0 Flash and 2.5 Pro. 1,500 requests/day, 1M TPM, 1M token context. No CC required.
- Groq - Llama 3.3 70B and Mixtral 8x7B. Rate-limited but fast (~300 tokens/sec). OpenAI-compatible endpoint. No CC required.
- Mistral - Large, Codestral, and Pixtral models all included on the free plan, rate-limited. No CC required.
- Cerebras - Llama 3.3 70B. Very fast inference, 128k context. No CC required.
- Hugging Face Inference API - Thousands of open-source models. Rate limits vary by model. No CC required.
- OpenRouter - Routes to 100+ models, many with their own free tiers. No CC required.
- Ideogram - Version 2.0. 10 images/day. Good at rendering text inside images. No CC required.
- Stability AI - Stable Diffusion 3. 25 credits/month. No CC required.
- Hugging Face Image Models - FLUX, SDXL, and others. Rate-limited. No CC required.
- Fal.ai - FLUX and AnimateDiff. $0.10 free credit on signup. No CC required.
- ElevenLabs - Text-to-speech and voice cloning. 10,000 characters/month free. No CC required.
- Deepgram - Speech-to-text. $200 credit on signup. No CC required.
- AssemblyAI - Speech-to-text with speaker detection and auto-summaries. 100 hours free. No CC required.
- Whisper - OpenAI's open-weights speech-to-text model. Run locally for free. No CC required.
- Kokoro TTS - Open-weights text-to-speech. Self-hosted, no limits. No CC required.
- Google Embeddings API - Text embedding model (text-embedding-004). 1,500 requests/day, 768 dimensions. No CC required.
- Cohere Embed - English and multilingual embedding models. 1M tokens/month, 1024 dimensions. No CC required.
- Jina AI - Multilingual embeddings (jina-embeddings-v3). 1M tokens/month, 1024 dimensions. No CC required.
- Mistral Embeddings - Included in the free plan. 1024 dimensions. No CC required.
- Hugging Face Embedding Models - BGE, E5, Nomic Embed, and others. Rate-limited. No CC required.
- Qdrant Cloud - 1GB free storage. Can also self-host without limits.
- Pinecone - 2GB storage, one index. Easiest to get started with.
- Chroma - Fully open-source, self-hosted only. No limits.
- Weaviate Cloud - 14-day free trial.
- Gemini Vision API - Text, image, audio, and video input. 1,500 requests/day. No CC required.
- Mistral Vision - Text and image input via Pixtral. Included in the free plan. No CC required.
No API key, no rate limits, no cost. Everything runs on your own machine.
- Ollama - Run Llama, Mistral, Gemma, and Phi locally. Simplest setup.
- LM Studio - Desktop app for running any GGUF model with a GUI.
- vLLM - High-throughput inference server for production use.
- GPT4All - Desktop app, focused on privacy.
These expire β grab them before starting a new project.
- Together AI - Up to $100 credit, valid 90 days. No CC required.
- xAI - $25 credit, valid 90 days. No CC required.
- Cohere - $75 credit, no expiry. No CC required.
- DeepSeek - 5M tokens on signup, valid 30 days. No CC required.
- Fireworks AI - $1 credit, valid 30 days. No CC required.
- Anthropic - $5 credit, no expiry. CC required.
- OpenAI - $5 credit, valid 3 months. CC required.
import google.generativeai as genai
genai.configure(api_key="YOUR_KEY")
model = genai.GenerativeModel("gemini-2.0-flash")
print(model.generate_content("hello").text)from openai import OpenAI
client = OpenAI(base_url="https://api.groq.com/openai/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="llama-3.3-70b-versatile",
messages=[{"role": "user", "content": "hello"}],
)
print(resp.choices[0].message.content)ollama run llama3.2from openai import OpenAI
client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")
resp = client.chat.completions.create(
model="llama3.2",
messages=[{"role": "user", "content": "hello"}],
)
print(resp.choices[0].message.content)from litellm import completion
messages = [{"role": "user", "content": "hello"}]
completion(model="gemini/gemini-2.0-flash", messages=messages)
completion(model="groq/llama-3.3-70b-versatile", messages=messages)
completion(model="ollama/llama3.2", messages=messages, api_base="http://localhost:11434")