What compatibility covers—and what it does not
This page includes 24 of the 25 providers with detailed pages because each documents an endpoint compatible with part of the OpenAI API. In practical terms, the standard client can usually send chat completions after you replace the Base URL, model id, and API key. Compatibility is a protocol statement, not a claim that every OpenAI feature exists. Responses, tool calls, streaming events, embeddings, image routes, and error fields can differ by provider.
Compatible endpoints and free-access terms
These 24 providers are listed in catalog order rather than by an invented quality score. The Base URL is copied from provider data, while the limit column keeps the wording that can be supported by official documentation. Follow the provider link for exact model ids and sources. A client configured with the correct protocol still fails when it sends a model alias the provider does not recognize.
| Provider | Free access | Published limits | Card | Base URL |
|---|---|---|---|---|
| Google Gemini API | Provider free tier | Set by project tier | Not required | https://generativelanguage.googleapis.com/v1beta/openai/ |
| GroqCloud | Provider free tier | 30 requests per minute, 1000 requests per day | Not required | https://api.groq.com/openai/v1 |
| SambaNova Cloud | Provider free tier | 20 requests per minute, 20 requests per day | Not required | https://api.sambanova.ai/v1 |
| Cohere | Provider free tier | 20 requests per minute | Not required | https://api.cohere.ai/compatibility/v1 |
| Cloudflare Workers AI | Provider free tier | Published in compute units | Not required | https://api.cloudflare.com/client/v4/accounts/ACCOUNT_ID/ai/v1 |
| Hugging Face Inference Providers | Provider free tier | Published as a credit balance | Not required | https://router.huggingface.co/v1 |
| SiliconFlow | Provider free tier | 1000 requests per minute | Not required | https://api.siliconflow.com/v1 |
| Fireworks AI | Provider free tier | 10 requests per minute | Not required | https://api.fireworks.ai/inference/v1 |
| Z.AI Open Platform | Provider free tier | Selected models priced at zero | Not required | https://api.z.ai/api/paas/v4 |
| Novita AI | Provider free tier | Selected models priced at zero | Not required | https://api.novita.ai/openai |
| Mistral La Plateforme | Provider free tier | Enforced but not published | Not required | https://api.mistral.ai/v1 |
| Alibaba Cloud Model Studio | Provider free tier | Published per model | Not required | https://dashscope-intl.aliyuncs.com/compatible-mode/v1 |
| Moonshot AI (Kimi) | Provider free tier | Published per tier | Not required | https://api.moonshot.ai/v1 |
| Pollinations.AI | Provider free tier | Enforced but not published | Not required | https://text.pollinations.ai/openai |
| Ollama Cloud | Provider free tier | Enforced but not published | Not required | https://ollama.com/v1 |
| Cerebras Inference | Free trial credit | 5 requests per minute | Required | https://api.cerebras.ai/v1 |
| Vercel AI Gateway | Free trial credit | Published as a credit balance | Not required | https://ai-gateway.vercel.sh/v1 |
| OpenRouter | Free model aggregator | 20 requests per minute, 50 requests per day | Not required | https://openrouter.ai/api/v1 |
| Together AI | Metered access | Dynamic, no fixed numbers | Not required | https://api.together.xyz/v1 |
| Nebius Token Factory | Metered access | 60 requests per minute | Not required | https://api.tokenfactory.nebius.com/v1 |
| Perplexity API | Metered access | 50 requests per minute | Not required | https://api.perplexity.ai |
| DeepInfra | Metered access | Enforced but not published | Not required | https://api.deepinfra.com/v1/openai |
| Chutes | Metered access | Published per paid plan | Not required | https://llm.chutes.ai/v1 |
| Scaleway Generative APIs | Metered access | Enforced but not published | Required | https://api.scaleway.ai/v1 |
Start with the feature your client actually uses
A simple chat client needs much less compatibility than an agent that streams tool calls and expects a particular error schema. List the routes and fields your application depends on, then test those against a short list. For coding tools, confirm custom Base URL support and the environment variable used for the key. For batch jobs, published daily limits and concurrency matter more than a successful one-off request from an interactive console.
Why drop-in replacement is rarely literal
Providers expose different model catalogs, context windows, moderation behavior, token accounting, and retry headers behind a familiar endpoint shape. Some ignore unsupported parameters; others reject the request. Free tiers add another variable because model availability and queue priority may change independently of the protocol. Keep provider-specific model ids in configuration, preserve the raw error status for diagnosis, and avoid code that assumes every 429 response carries the same reset information.
A portable integration pattern
Keep Base URL, model id, and key environment variable outside application code. Run a minimal non-streaming completion first, then enable streaming, structured output, and tools one capability at a time. Record which feature fails rather than labeling the entire endpoint incompatible. This pattern makes switching providers a configuration change and leaves a clear fallback when a free model is removed or its capacity becomes temporarily constrained.
Evidence behind the compatibility label
The label is used only when a provider documents the endpoint itself; a community wrapper does not count. Records were reviewed on 2026-07-25. Read the data methodology for the evidence rules, then use the browser key checker or its generated curl command to separate a bad key, a rate limit, and an endpoint error before changing your SDK.