Pennyloom GUIDE

Free AI APIs: a practical guide to limits, privacy and zero-spend controls

A practical, evidence-grounded guide to free OpenRouter APIs with decision tables, workflows, and clear limits.

Hypothetical request-budget table: three candidate items use fifteen planned API attempts.
Our own request-budget example · captured 2026-09-18 · Read the example
Source-backed practical guide · AI-assisted preparationUpdated 2026-09-18
In this guide

Start with a small job that can wait

Free AI API access can be useful for a small website, a learning project or a background drafting queue. It is a poor foundation for a promise that every visitor will receive an immediate answer. The useful question is not simply whether a model is free. It is whether you can finish a specific job within the available limits, accept interruptions and check the result before using it.

This guide uses OpenRouter as one concrete example. Its documented :free catalog variants offer model access without cost, with availability and limits that can differ from paid variants. A free variant must actually exist in the catalog; adding the suffix to an arbitrary model name does not create one. Check the free-variant documentation before choosing an entry.

The workflow below is a conservative design recommendation for a text-only background task. It deliberately excludes paid models, paid fallback, paid add-ons and credit purchases. Those are choices for this workflow, not claims that OpenRouter requires every application to make the same choices. It uses non-streaming responses and is not a production SDK, a ranking of model quality or a promise of permanent free availability.

Decide whether a free API fits the job

Use this decision table before spending time on an integration. The actions are recommendations; the conditions describe what your own application needs to establish.

Your situation Recommended action What to check next
The task can wait and you can inspect its result Try a small private pilot A current free model entry and the account's applicable limits
Visitors need a guaranteed immediate answer Keep a deterministic response available Whether the product still works when generation is unavailable
The input includes information you cannot send to an external provider Keep that input out of the pilot Your data-handling requirements and provider terms
The task requires a specific output format Test that exact format The model and endpoint support for the requested parameters
A request or source cannot be verified Save the job as pending The missing evidence or configuration, rather than a paid substitute
The result will make a consequential decision Require appropriate review Whether automation is suitable for the decision at all

A useful first task has a small input, a visible result and a clear rejection rule. For example, you might ask for an outline based on a short public document, then reject outlines containing claims absent from that document. That is a proposed test design, not evidence that any particular model will pass it.

Write the rejection rule before choosing the model. Otherwise, a fluent answer can tempt you to accept an output that does not solve the original problem. If the job is a calculation with a known formula, use ordinary code for the calculation and reserve a model for an optional explanation. A failed explanation should not change the numeric result.

Check the model entry you will actually use

OpenRouter's model catalog documentation describes model identifiers, supported inputs and outputs, context information and pricing. Record the exact entry selected for your pilot, rather than keeping only a model's display name. A base entry and a free variant can have different metadata.

For this workflow, choosing an explicit catalog entry ending in :free is a local safety rule. It avoids silently substituting a different entry when a saved identifier disappears. It is not a claim that OpenRouter has no aliases or other routing options. If your chosen entry is missing, put the job back in the queue and investigate.

Check the parameters the task actually needs. A text response, a particular JSON structure and a tool call are different requirements. The catalog's capability information helps narrow the choice; a small test of the intended request is still useful. Do not infer support for a required feature merely from a model's name or from a successful test using different parameters.

Read the prices and any applicable pricing conditions for the selected entry and features. The catalog defines zero-valued pricing fields as free for those fields. For a conservative application, an unfamiliar price condition is a reason to pause and investigate. That pause is an application decision, not a statement that the API rejects every unfamiliar condition.

Keep the initial pilot simple: ordinary text input, a bounded text response and no optional paid features. This reduces what you need to verify. It does not turn a cached catalog snapshot into a guarantee about a later request. Recheck the entry when resuming an old job or changing its request shape.

Obtain a key and inspect the applicable limits

Follow the official quickstart for account access, API-key setup and the current authenticated request syntax. Its examples show the chat-completions endpoint and the authorization header. Use your own key in your private application configuration; do not paste it into a published article or a shared example.

As an implementation recommendation, keep this credential on the server or in the private local process that performs the work. Give a browser a narrow application endpoint rather than embedding the provider credential in a public page. This is advice about your application boundary, not a claim that a particular account setting automatically protects a key placed in public code.

The limits documentation describes an authenticated GET request to https://openrouter.ai/api/v1/key. Follow the documented authorization-header pattern. Inspect the returned JSON rather than assuming that creating a key establishes a particular allowance.

For applicable free-model limits, free_model_daily_requests contains used, limit and remaining for the current UTC day. The documentation notes exceptions where this counter is not the enforcing limit. It also distinguishes this daily information from the per-minute limit. Read the explanation alongside the fields; the three numbers do not describe every possible capacity restriction.

The same endpoint describes key-level credit information such as limit and limit_remaining. The documented limit and limit_remaining fields are numbers or null; null means unlimited for that key credit cap. It does not mean that an account has unlimited free requests, and it is not a substitute for an account-balance field. Keep credit limits and request-count limits separate in your dashboard.

The documented standard free-variant tiers use 20 requests per minute and daily ceilings of 50 or 1,000 requests, depending on credits purchased over the account's lifetime, with the qualifications explained on the limits page. Do not buy credits just to satisfy this guide. Use the actual applicable account information, and remember that provider availability can prevent a request even when a daily allowance remains.

Budget attempts rather than finished articles

One API call does not necessarily produce one usable result. A draft may require revision, a response may be incomplete, or an independent review may reject it. Budget the work in stages before deciding how many outputs to promise.

Here is an arithmetic-only example. Assume an account for which the applicable daily request ceiling is 50, and choose a local ceiling of 40 attempts for one background process. The local ceiling leaves ten attempts outside that process's allocation. Other applications using the account can consume shared capacity, so those ten are not a reserved provider allowance.

Hypothetical stage Attempts per item Three candidate items
Prepare a draft 1 3
Edit it into a coherent result 1 3
Review it separately 1 3
Allow one revision and another review 2 6
Total planned attempts 5 15

The arithmetic is 3 × 5 = 15 planned attempts. Against the local ceiling of 40, that leaves 40 − 15 = 25 attempts unallocated in this simplified plan. Against the assumed provider ceiling of 50, a full local allocation of 40 leaves 50 − 40 = 10 outside the process's allocation.

These are planning numbers, not measurements of a model's success rate. They do not predict three approved articles. They also assume no additional generation stages beyond the ones listed. If your workflow splits a draft into five parts, include all five calls before deciding what is feasible.

For your own accounting, reserve an attempt before sending it and retain the record when a call fails. That is a conservative local counting policy; it does not assert how the provider counts every error. Check the provider's returned account information separately. Never reset your local counter merely because restarting the computer would otherwise make more work eligible.

Keep response size separate from request count

Request count, token capacity and monetary cost answer different questions. A zero token price does not create more requests per day. A generous daily allowance does not mean one enormous prompt will fit the chosen model.

The catalog schema exposes context and completion information. Use the actual selected entry's limits when setting a response bound. Avoid estimating compatibility solely from a word count: the relevant capacity is expressed in tokens, and tokenization depends on the model and input.

For a clearly hypothetical size check, suppose the chosen context allowance is 32,000 tokens. Suppose your measured input allocation, including instructions and history, is 20,000, and you reserve 8,000 for output. The planned total is 28,000, leaving 4,000 against that assumed context allowance. This only checks the stated arithmetic. It does not establish that a real endpoint permits an 8,000-token completion or that its response will finish.

Record the endpoint's applicable completion limit as a separate check. Start with a small input and inspect truncation or completion signals before increasing the size. If an output is incomplete, keep it private until it is repaired and rechecked. A partial answer should not become a published page simply because some text arrived.

Treat privacy settings as constraints to verify

The provider-routing documentation describes controls including data_collection, zdr, provider selection and parameter requirements. These are useful inputs to a routing decision. They should not be presented as an independently verified guarantee about every party's storage, logging or handling of a request.

Decide what data the task actually needs before selecting settings. For a first pilot, public source material is easier to assess than private customer records. Removing unnecessary sensitive input is an application design choice that reduces what must be sent; it is not a claim that redaction alone satisfies every legal or contractual requirement.

A restrictive configuration can leave no eligible route. In a hypothetical example, an application requires a specific retention policy and a particular output format. If no available endpoint meets both, the job remains pending. There is no need to pretend that a request was first accepted and then rejected by your own preflight check: the application can decline to send it in the first place.

Do not quietly relax privacy or price preferences to improve a success counter. If you change a constraint, record the change and repeat the test. A visible pending job is more useful than a green status that conceals a different data-handling decision.

Handle failures without buying a fallback

The official limits and error guidance distinguishes credit-related 402 responses from rate-related 429 responses. Inspect the actual response; do not build a workflow around the assumption that all failures mean the same thing.

For a 429, the guidance recommends backoff and honoring Retry-After when present. A daily counter with remaining capacity does not exclude a per-minute or upstream-provider restriction. Save the job and retry within your own bounded policy rather than sending a burst of identical requests. If you later add streaming, the same documentation describes errors arriving as stream events after the HTTP response has begun; a streaming client needs separate handling for those events.

For a 402, inspect structured error metadata when it is provided. The documentation discusses account credits, key caps and a separate in-flight budget for paid requests. It explicitly excludes free-model requests from that paid-request budget. It also warns that a negative account balance may cause 402 responses even for free models; an exhausted per-key credit cap is a separate documented cause. Do not assume that shortening a prompt resolves every credit error. In this no-purchase workflow, an unresolved credit requirement means stopping rather than adding credits automatically.

An unavailable model does not authorize replacing it with a paid one. The recommended fallback is another currently verified free candidate, if it meets the same requirements, or no generation. A saved record should explain which of those outcomes happened.

Separate transport success from content acceptance. An HTTP response can be received while the answer is incomplete, invalid for your required structure or factually wrong. Check completion and expected fields, then apply the task's content checks. Do not label a request successful merely because an API call returned text.

Make restarting the computer boring

The following is a proposed queue design, not a feature that OpenRouter provides automatically. Store each job with an identifier, its current stage, the saved draft, the next retry time and a concise error status. Save the result of a stage before starting the next one.

On restart, resume eligible saved work. Use an application lock so two runners do not process the same stage at once. Keep a unique publication identifier so retrying after a lost connection cannot create a second public page. These controls belong in your application and need their own tests.

A daily publication ceiling should apply to actual publications, not merely to scheduled jobs. If the computer was offline for three days, do not treat that as permission to publish three days of backlog immediately. Resume the queue under the current day's limits and recheck old source material before using it.

For an ambiguous timeout, preserve the local attempt record. Avoid assuming either that the provider finished or that it definitely did no work. Your next stage should depend on a saved, validated response, not on that assumption. This conservative approach can reduce output volume, but it keeps operational uncertainty visible.

Review usefulness before publication

A separate model review can help find mistakes, but it is still a model response. It can miss errors and can also raise incorrect objections. Treat a score as a recorded assessment, not proof of truth or human expertise.

For a factual guide, keep a claim ledger linking important assertions to the source passages that support them. Check that a quotation belongs to the right source and that it actually supports the claim. A matching phrase alone does not establish the meaning. Recheck calculations independently and compare the rendered page with the approved draft.

Use a short acceptance checklist:

  • The page answers a specific question that readers have reason to ask.
  • Documented facts, local recommendations and hypothetical examples are distinguishable.
  • Numerical examples have been recalculated.
  • Important claims have working, relevant source links.
  • The article adds a useful comparison, workflow or example rather than repeating documentation.
  • Rejected drafts remain private; the published URL corresponds to the approved version.

For high-risk material, use appropriate qualified review rather than assuming this checklist replaces expertise. For an ordinary technical guide, remove claims you cannot support instead of adding confident language around them.

What to measure during the pilot

Keep a small operational report: attempted calls, completed responses, usable drafts, rejected drafts, published items, retry reasons and reported API cost. These measures describe different stages. Ten completed responses may still produce no publishable article.

Track the dates of catalog checks and source retrievals as well. When a result fails, the useful next question is whether the input evidence, request shape, model availability or editorial requirement caused the failure. Without that distinction, changing models repeatedly can consume the allowance without improving the outcome.

After several days, compare the number of approved results with your actual capacity needs. If the free route is too intermittent, reduce the task's scope or keep the feature optional. Do not turn a best-effort experiment into a reliability promise solely because one run succeeded.

Free access is most useful when it supports a product that already works. Calculations, navigation, source links and previously reviewed content can remain available while a background draft waits. That gives you room to choose the next useful publication instead of publishing whatever the last API call returned.

Research and limitations

This guide was prepared with AI assistance using the official sources linked in the text, automated checks and a separate model review. It is not a claim of hands-on testing or human expert verification. Provider terms can change; check the linked documentation before making a commitment. Examples identified as hypothetical are not measured benchmarks. Tell us about an error.

Keep exploring

Privacy choices

Tools work without analytics. You may allow interaction measurement without sending your financial inputs. You can manage or disable advertising below. Regional consent requirements still apply.