📝 Originally published (in Japanese) at forge.workstyle.tech.
When you want to use an LLM for a personal project or a prototype, the first obstacle usually isn't technical — it's registering payment information. You just want to try something out, but you're asked for a credit card; you'd rather not put it on the company card; you're nervous that usage-based billing will blow up on you. It's a shame to stall out for reasons like that.
Fortunately, as of 2026, LLM APIs with free tiers that require no credit card are no longer rare. But if you stop at "apparently there's a free tier," the moment you actually run something you'll get smacked with 429 Too Many Requests and that's the end of it. This article covers how to read rate limits and how to design a fallback across multiple providers, so you can use free tiers in a way that holds up in real use.
A realistic sense of how far a free tier gets you
Let me give the conclusion up front: for personal experiments, prototypes, and internal tools, free tiers alone are plenty. On the other hand, supporting the backend of a publicly available service on free tiers alone isn't realistic. A free tier isn't a "cheap plan" — it's a favor that can change without notice.
With that premise in place, here's what free tiers are well suited for:
- Validating ideas and iterating on prompts
- Personal automation scripts, scheduled batch jobs, summarization pipelines
- Backends for apps under development (pre-production)
- Internal tools where low frequency and asynchronous processing are fine
Conversely, if even one of the following applies — you need a latency SLA, you handle confidential data, or you're looking at hundreds of thousands of requests a month — your total cost will be lower if you just consider a paid plan.
The axis for comparing providers isn't "which models"
Most comparison articles about free LLM APIs stop at "here's the list of available models," but what actually matters in production is these five things:
- The structure of the rate limits (more on this below — it's not a single number)
- Whether the API is OpenAI-compatible — if it is, swapping providers takes a few lines
- Data handling — free tiers sometimes have terms that allow your input data to be used for training
- How often models get swapped out — free-tier models tend to be discontinued or replaced without notice
- Real-world availability — free tiers are the first thing throttled when things get busy
Number 2 in particular feeds directly into your design. Most of the major free providers offer OpenAI-compatible endpoints, so simply standardizing your client on the compatible interface reduces the fallback described below to "swap the base URL, API key, and model name." Whether you do this up front changes your later workload by an order of magnitude.
What the major no-credit-card providers look like
At the time of research, the representative options you can use without registering a credit card look roughly like this (specific limit values change frequently, so always confirm with the official documentation).
| Provider | Characteristics |
|---|---|
| High-speed inference services | Custom hardware makes inference extremely fast. Mostly open-weight models, with relatively generous tokens-per-minute |
| AI APIs from major clouds | Free tiers are available, with broad functionality including multimodal support |
| Inference services from GPU vendors | Host a large number of open models. Good for evaluation work |
| Model aggregators / routers | One key gets you access to many models, including free-tier ones |
| Free API gateways | OpenAI-compatible, bundling multiple models behind one interface |
Beyond these, there are several directory-style sites and repositories that collect and catalog free LLM APIs, with over 200 endpoints listed. That said, this kind of list lives or dies on freshness. Entries that are listed but already shut down, or whose free tier has gone paid, are an everyday occurrence — so treat these lists as an entry point for discovering candidates, and always make the adoption decision based on primary sources.
The important thing is not to pick a single provider, but to have two or three ready at the same time. The reason leads into the next section.
Rate limits aren't "one number"
Articles introducing free tiers tend to emphasize a single number like "up to 30,000 tokens per minute free," but real rate limits are usually a logical AND across several axes.
- RPM (requests per minute) — requests per minute
- TPM (tokens per minute) — tokens per minute (usually input + output combined)
- RPD / TPD — daily caps. These are often the effective ceiling
- Concurrency — how many requests can run in parallel
- Per-model limits — bigger models get stricter limits
So even if a provider advertises "30,000 tokens per minute," a low RPM means you'll hit the RPM wall first if your workload throws lots of short requests. Conversely, for something like long-document summarization, TPM binds first. Estimating up front which axis your workload will hit is the first trick to using free tiers well.
Another thing that's easy to overlook is when the daily limit resets. Resets are often based on UTC, which leads to accidents like hitting the cap in the morning Japan time and not recovering until the evening. When you build batch jobs, schedule them with the reset time in mind.
And when you get a 429, don't retry based on guesswork — read the Retry-After header and the x-ratelimit-* response headers. Many providers return your remaining quota and the seconds until reset, and just using those makes your retry behavior dramatically more accurate.
How to build a fallback setup
This is the main event for making free tiers practical. If you depend on a single provider, any one of rate limiting, an outage, or a model shutdown will stop you cold. Line up multiple providers and route to the next one on failure, and you can raise availability to a practical level while staying on free tiers.
Design principles
- Assign priorities: decide your first, second, and third string based on the balance of speed, quality, and limits
- Line up comparable models: if your fallback target is drastically weaker, output quality collapses the moment you fail over
- Distinguish fallback triggers: 429 (rate limit) is worth retrying, 401 (auth) should move to the next provider immediately, 5xx should be retried after a short backoff
- Exponential backoff + jitter: fixed-interval retries mean you punch yourself in the face when many failures happen at once
- Share one prompt: branching prompts per provider destroys maintainability
A minimal example
The point is to convey the idea, so written plainly it looks like this.
import time, random
from openai import OpenAI
# OpenAI互換エンドポイントを優先度順に並べる
PROVIDERS = [
{"base_url": "https://api.provider-a.example/v1", "key": KEY_A, "model": "model-a"},
{"base_url": "https://api.provider-b.example/v1", "key": KEY_B, "model": "model-b"},
{"base_url": "https://api.provider-c.example/v1", "key": KEY_C, "model": "model-c"},
]
def chat(messages, max_retries=2):
last_error = None
for p in PROVIDERS:
client = OpenAI(base_url=p["base_url"], api_key=p["key"])
for attempt in range(max_retries):
try:
return client.chat.completions.create(
model=p["model"], messages=messages, timeout=30
)
except Exception as e:
last_error = e
status = getattr(e, "status_code", None)
if status in (401, 403, 404):
break # 設定の問題。リトライしても無駄なので次のプロバイダへ
# 429 / 5xx: 指数バックオフ + ジッタ
time.sleep((2 ** attempt) + random.random())
raise RuntimeError(f"all providers failed: {last_error}")
This works well enough, but once you have more providers, it's more realistic to put a routing library or gateway in front. Boilerplate like fallback, retries, cost tracking, and model-name normalization can be declared in a config file, and your application code just points at a single endpoint.
Pitfalls
- Differences in context length: if your fallback target is shorter, long inputs will always fail. Truncate inputs to the minimum across providers (not the "least common multiple"), or filter providers when handling long documents
- Differences in features: support for function calling (tool use), JSON mode, and streaming isn't uniform across models and providers. Only include combinations that support the features you use as fallback candidates
- Infinite retries: unless you design for giving up quickly when every provider is exhausted, the caller will hang until it times out
Tips for not burning through your free tier
Fallback is about what happens after you hit a limit, but making it harder to hit the limit in the first place is more effective.
- Cache: just caching responses locally for identical inputs dramatically cuts consumption during development. Hashing the prompt as the key is enough
- Tier your models: send simple tasks like classification, extraction, and formatting to smaller models, and use the big model only where generation quality matters
- Trim your prompts: free tiers consume input tokens too. Redundant few-shot examples and context you left pasted in are limit consumption, plain and simple
- Batch and go async: move work that doesn't need to be real-time into daily batches and run it in the quiet gaps between limits
- Observe: log token consumption and error types. If you don't know which axis you're getting stuck on, you can't improve anything
Things to watch out for
Finally, here are the practical risks of relying on free tiers.
- Data handling: free-tier terms sometimes allow your input data to be used for model improvement. If you're going to send personal or confidential information through, reading the terms is mandatory
- Commercial use: some free tiers permit commercial use, some don't
- No SLA: free tiers come with no availability guarantee. Build on the assumption that you have no grounds to complain when it goes down
- Rapid spec changes: both limit values and model lineups change within months. Don't hardcode numbers — push them out into configuration
- Key management: don't get lax just because it's free; keep keys in environment variables or a secret manager. Leaking them into a repository is a common accident
Summary
As of 2026, there are plenty of no-credit-card free LLM API options. But whether you can extract value from them depends less on which provider you choose and more on your design.
- Free-tier limits aren't a single number — they're a combination of RPM, TPM, daily caps, and concurrency. Estimate up front which axis your workload will hit
- Standardize your client on the OpenAI-compatible interface and build a fallback across two or three providers in priority order. That alone gets availability to a practical level
- Handle 429 with exponential backoff plus jitter, and move on immediately for auth errors. Make use of the remaining-quota information in the response headers
- Use caching, model tiering, and prompt trimming to make hitting the limit less likely in the first place
- Use free tiers with the data-usage terms and the absence of an SLA accepted up front
If you build past "it's free to use" and all the way to "it stays up while staying free," the personal-project experience gets remarkably comfortable. Start by moving the script you have on hand over to the compatible interface.
Top comments (0)