OpenRouter Alternatives in 2026: LiteLLM, Vercel AI Gateway, Requesty, Portkey and Direct APIs Compared, With What Developers on Twitter (X) Say

This page is about what to use instead of OpenRouter: which other model routers, gateways and inference hosts exist, what each one charges, and what changes in your code when you move. If you want OpenRouter's own API details (the base URL, getting a key, the free models and their limits, its fee on credits), our OpenRouter API guide covers those, and we only repeat the fee here where a comparison needs it.
Every option below was checked on the vendor's own pricing or docs page this year, and none of them is a Twitter (X) data vendor, so we name them in prose and show their documentation URLs as plain text. To see why people actually move, we also read what developers post on X when they mention OpenRouter next to a rival or a switching word: 779 public posts from 627 authors, collected in 2026. The last part shows how to give whichever gateway you pick live X data through tool calling, and what that data costs.
OpenRouter alternatives at a glance: fees, keys and compatibility
Gateways sort into three groups. Hosted routers sell you one balance and one key for hundreds of models (OpenRouter, Requesty, Vercel AI Gateway). Gateways in front of your own keys add logging, caching, budgets and fallbacks but leave billing with each provider (Portkey, Cloudflare AI Gateway, a self-hosted LiteLLM proxy). Inference hosts serve models themselves (Together AI, Groq, Fireworks) or are the model maker (OpenAI, Anthropic, Google, xAI). The table uses each vendor's own wording.
How to read it. A percentage fee only matters relative to your model spend: on $100 of tokens, OpenRouter's 5.5% purchase fee is $5.50, Requesty's 5% markup is $5, and Vercel's is $0 plus whatever your card processor charges. For a gateway in front of your own keys, the cost is the plan (Portkey bills by recorded logs, not tokens) or the server you run (LiteLLM). For an inference host, there is no gateway fee, but you also lose the one-key, many-providers catalog.
Which fees we could not confirm. OpenRouter's FAQ page renders its credit fee as an unfilled template placeholder, so we took the 5.5% and 8% figures from openrouter.ai/pricing. Vercel's pricing page says every team gets a monthly free credit on a subset of models but does not show the amount, so we do not quote one. Portkey's pricing page does not say whether it marks up tokens; its docs have you add provider credentials to a Model Catalog, which means billing stays with your providers.
LiteLLM vs OpenRouter: self-hosting the gateway
LiteLLM's docs describe its proxy as a self-hosted server that gives applications one endpoint for 100+ LLM providers and returns responses in OpenAI format: if a client can call the OpenAI API, it can call the proxy. The project is MIT-licensed (docs.litellm.ai/docs/simple_proxy). An Enterprise tier adds SSO, audit logs and multi-team management at custom pricing, with a 30-day self-hosted trial key (litellm.ai/enterprise).
The trade against OpenRouter is ownership against convenience. With LiteLLM, there is no one balance: you open an account with every provider you route to, store those keys in the proxy's config, and pay each provider at its list price. There is no gateway fee, and prompts never pass through a third party other than the model provider. In exchange, you run, scale and secure a server, and you keep provider keys alive on it, which is exactly where one leaked config bites: an unused key left in a running proxy keeps billing until someone notices.
When it wins. Teams with compliance rules about where prompts go, teams already paying several providers directly, and anyone who wants routing, budgets and logging under their own control. When OpenRouter wins. Solo builders and prototypes that want one key, one bill and hundreds of models without creating ten provider accounts.
On X, LiteLLM appeared in 8.9% of the 683 posts we read, and 54.1% of those also talked about price, fees or credits, the highest price share among the seven most-named options.
Vercel AI Gateway and Requesty: hosted routers with a different fee model
Vercel AI Gateway. Vercel's pricing doc says the gateway charges no markup and no platform fee on tokens, you pay the provider's list price from prepaid AI Gateway Credits, and you are responsible for any payment processing fees (vercel.com/docs/ai-gateway/pricing). Bring-your-own-key carries no markup either, but it is a paid-tier feature, and when a BYOK request fails, the gateway retries it with Vercel's own credentials and charges that fallback to your credits. The free tier covers a subset of models with lower per-model rate limits (a 429 when exceeded), and buying credits ends the monthly free credit. Optional add-ons are billed separately: team-wide zero data retention at $0.10 per 1,000 requests, a team-wide provider allowlist at $0.10 per 1,000 successful requests, and custom reporting at $0.075 per 1,000 writes and $5 per 1,000 queries.
Its OpenAI-compatible endpoint is https://ai-gateway.vercel.sh/v1 with Authorization: Bearer and an AI Gateway API key (or a Vercel OIDC token on Vercel deployments); chat/completions supports streaming, tool calling and structured outputs. Your app does not have to run on Vercel. If you already build with the AI SDK, model strings like openai/... or anthropic/... route through the gateway directly; our Vercel AI SDK guide shows that path with X data.
Requesty. Requesty's pricing page lists three plans: Free ($0, all free models, 200 requests per day, no card), Pay as you go (a 5% markup, 600+ models, bring your own keys) and Enterprise (custom). Its own example: a model that costs $10 per 1M tokens from OpenAI costs $10.50 through Requesty (requesty.ai/pricing). The quickstart gives https://router.requesty.ai/v1 (and an EU endpoint at router.eu.requesty.ai/v1), Bearer auth and provider/model IDs; a bare model name lets Requesty pick the provider per request.
Versus OpenRouter. OpenRouter's pricing page puts its fee on the credit purchase (5.5% Standard, 8% Business, never on individual requests), lists 600+ models from 80+ providers, sets no plan-based rate limit on paid models, and gives BYOK users $25,000 of list-price inference a month with no fee, then 5%. So for a team spending heavily on its own provider keys, OpenRouter's BYOK allowance can cost less than Requesty's markup, while for a team buying credits, Vercel's zero markup is the lowest stated fee of the three.
Portkey and Cloudflare AI Gateway: control in front of your own keys
Portkey and Cloudflare AI Gateway are less about the model catalog and more about what happens around each call: logs, caching, retries, fallbacks, guardrails and budgets.
Portkey. The pricing page lists an Open Source self-hosted gateway, a Developer plan that is free with 10K recorded logs a month (3-day log retention, labeled not suitable for production), Production at $49 a month with 100K recorded logs and $9 per additional 100K, and custom Enterprise. Exceeding the log limit does not block requests; logs past the limit are simply not recorded (portkey.ai/pricing). The REST base URL is https://api.portkey.ai/v1, and the OpenAI SDKs work by changing the base URL and adding Portkey's headers.
Cloudflare AI Gateway. Cloudflare's pricing reference says the core features (analytics, caching, rate limiting) are free; Workers Free accounts keep 100,000 legacy logs in total, Workers Paid 10,000,000 per gateway; and if you buy credits through Unified Billing instead of using your own provider keys, a 5% fee applies, so a $100 credit purchase is a $105 charge (developers.cloudflare.com/ai-gateway/reference/pricing). Its OpenAI-compatible endpoint takes the form https://gateway.ai.cloudflare.com/v1/{account_id}/default/compat/chat/completions with {provider}/{model} IDs and an optional cf-aig-authorization header.
In our X sample, Cloudflare came up in 9.1% of posts, and many of those were about Workers AI free allowances rather than the gateway: 51.6% mentioned free models or a free tier. Portkey appeared in 3.1%.
Skipping the router: Together AI, Groq and the providers' own APIs
If your app has settled on two or three models, a router can be one hop you do not need. Inference hosts publish OpenAI-compatible endpoints of their own: Together AI at https://api.together.ai/v1 (its compatibility matrix lists tools as supported, and model IDs follow <provider>/<model_name>), and Groq at https://api.groq.com/openai/v1, where logprobs, logit_bias, top_logprobs and messages[].name return a 400 and n must be 1 (console.groq.com/docs/openai).
Going direct to the model maker (OpenAI, Anthropic, Google, xAI) gives list price, the newest features first and one data processor fewer. The costs are operational: a key and a bill per provider, your own retry and fallback code, and no single place to compare spend. A pattern that shows up in the posts we read is a hybrid one: a router while you explore models, then direct contracts once volume concentrates on one provider.
Groq was the single most-named option in our sample (21.7% of posts), and its context was mostly free access: 53.4% of Groq posts mentioned free models or a free tier and 27.0% rate limits or quotas, which is what free-tier lists look like. Local or self-hosted models (Ollama, LM Studio, llama.cpp, vLLM) were second at 15.4%, and 52.4% of those posts were about control or self-hosting. The provider's own API by name appeared in 3.5%.
Why developers leave OpenRouter: 683 X posts, read
We ran two searches on X: one for OpenRouter next to switching words (alternative, instead of, switched, moved to, migrate, leaving), the other for OpenRouter next to a named rival (LiteLLM, Portkey, Requesty, "ai gateway", Together, Helicone, Fireworks, Groq, "direct api"). After removing posts that were only a link or a mention, 683 posts remained: 244 from the switching search and 479 from the rival search (a post can be in both). Keyword rules then tagged the alternatives named and the reasons given.
Money first, then reliability. Price, fees or credits appeared in 49.2% of switching posts against 41.3% of all posts, the largest single reason. Reliability, errors and outages rose the most between the two groups, from 15.7% overall to 22.5% when someone was talking about switching. Latency followed at 20.9%.
Privacy is quieter than the guides suggest. Comparison articles often lead with data retention and compliance, but only 7.8% of switching posts mentioned privacy, data retention or compliance, and BYOK just 3.3%. Free models pulled the other way: they came up more in the overall sample (23.7%) than in switching posts (18.4%), which fits OpenRouter's free models being something people stay for.
Who is talking. The median post had 4 likes and 555 views; 18.9% were replies. English was 72.3% of posts, Chinese 10.7% and Japanese 2.4%; 11.7% had no detectable language (link or media only).

Which alternatives people name, and how big their X accounts are
Across the 683 posts, 61.1% named at least one alternative, and 70.7% of those also gave a reason. Because the second search was built around rival names, these shares show what is discussed next to OpenRouter, not market share.
Official accounts at collection. These are organization accounts, so we name them. Follower counts say more about each company's wider audience than about its gateway: Vercel's account covers its whole platform, and Together AI's covers its inference cloud.
OpenRouter's account (157,733 followers) is more than 25 times the size of LiteLLM's (6,160) and over 150 times Requesty's (959), which matches what the posts show: most builders meet OpenRouter first and compare from there.

Give any of these gateways live X data, and what that data costs
Whichever gateway you choose, the way a model gets fresh X data is the same: you define a tool, the model asks for it, your code calls an API and passes the result back. OpenAI-style tools on chat/completions is part of the format these gateways accept (Vercel and Together document it explicitly; check your gateway's docs for the model you pick), so one search_x function works across them; only the base URL, key and model ID change. The full script is in the code block at the end of this page.
The tool. search_x(query, max_tweets) calls GET https://api.twitterapi.io/twitter/tweet/advanced_search with the X-API-Key header, query in X's search syntax and queryType=Latest, follows next_cursor while has_next_page is true, and returns compact rows (author.userName, text, likeCount, createdAt, url). Reads need no X account and no X developer app.
The loop. Send the conversation with tools; if the reply has tool_calls, run each one, append a role: tool message with the matching tool_call_id, and call the gateway again; stop when the model answers in plain text or after a few rounds. The pattern is the same one our OpenAI Agents and Claude tool-use guides use, just pointed at a gateway.
Or use MCP. If your client speaks MCP (Claude Code, Cursor, Codex and others), our hosted server at https://mcp.twitterapi.io/mcp exposes the same search as ready-made tools with your API key as a Bearer token, so you do not write the tool at all; the MCP server guide has the setup per client.
Writes, if the agent should post. Posting runs through an authenticated session: one /twitter/user_login_v2 login ($0.10, with a proxy you supply) returns login_cookies, then each /twitter/create_tweet_v2 call is 60 credits ($0.0006), billed per HTTP 200 call. The call acts as that account, so X can rate-limit, lock or suspend it; keep a human pace and expect the session to need a re-login now and then.
The X data bill next to the gateway fee. Gateway fees are a percentage of model spend; X data is a separate meter, and it is usually the one that scales with what the agent does. TwitterAPI.io charges 15 credits per tweet returned, $0.15 per 1,000 tweets, with a 15-credit minimum per request: a full 20-tweet page costs $0.003, and a search that finds nothing costs the $0.00015 minimum. The official X API's pay-per-usage rate card (docs.x.com/x-api/getting-started/pricing) lists $0.005 per post read, $5.00 per 1,000, about 33 times more, with pay-per-usage capped at 3 million post reads a month before Enterprise.
Put next to the gateway. On $100 of model spend, the gateway fee is $0 on Vercel (plus payment fees), $5 on Requesty and $5.50 in OpenRouter's credit fee; the same agent reading 10,000 tweets adds $1.50 of X data. Profiles are 18 credits per user ($0.18 per 1,000) against $0.010 per user read on the X rate card. New accounts that pass the automatic bot check get up to $1 of free credits (at most 100,000 credits, no card, one per person or network, expiring after 31 days); purchased credits never expire. Rate limits are 0.2 requests per second before the first payment and 20 once paid; plans are on the pricing page.
Cost lever. In a tool-calling agent the model decides how many tweets to fetch, so cap max_tweets in the tool schema and in your code. That one number bounds both the X bill and the tokens you pay the gateway to read the results.
# Same tool, any gateway: only these three values change
# OpenRouter GATEWAY_BASE_URL=https://openrouter.ai/api/v1
# Vercel AI Gateway GATEWAY_BASE_URL=https://ai-gateway.vercel.sh/v1
# Requesty GATEWAY_BASE_URL=https://router.requesty.ai/v1
# Together AI GATEWAY_BASE_URL=https://api.together.ai/v1
# LiteLLM (self-host) GATEWAY_BASE_URL=http://localhost:4000
import os, requests
r = requests.post(
f"{os.environ['GATEWAY_BASE_URL']}/chat/completions",
headers={"Authorization": f"Bearer {os.environ['GATEWAY_API_KEY']}"},
json={"model": os.environ["GATEWAY_MODEL"],
"messages": [{"role": "user", "content": "What is X saying about LiteLLM?"}],
"tools": TOOLS}, # the search_x definition from the full script below
timeout=120,
)
print(r.json()["choices"][0]["message"].get("tool_calls"))How we collected this
Question. When developers on X mention OpenRouter next to a switching word or a rival gateway, which alternatives do they name and which reasons do they give?
Queries. Two advanced_search queries with -filter:retweets: OpenRouter plus switching words (alternative, instead of, switched, switching, moved to, migrate, ditched, leaving) and OpenRouter plus rival names (LiteLLM, Portkey, Requesty, "ai gateway", Together, Helicone, Fireworks, Groq, "direct api"), each as Latest and Top. Plus /twitter/user/info for six organization accounts: OpenRouter, LiteLLM, PortkeyAI, RequestyAI, togethercompute and vercel.
Window and sample. The switching search's Latest results spanned about 9.6 days, the rival search's about 37.8 days, both collected in 2026. After de-duplication, 779 posts from 627 distinct authors; 683 had at least 15 characters of text once links and mentions were removed, and all shares use that base. 55 API requests in total.
Method. Keyword rules on post text tag each post with the options it names and the reasons it gives; a post can carry several labels. The script, protocol and de-identified rows are in data/studies/openrouter-alternatives/ in our repository.
What the sample cannot show. Keyword rules miss sarcasm and context (a post can mention fees to praise OpenRouter), the rival search pulls toward the names in it, and posts are not usage: none of this measures which gateway has more customers. Gateway fees on this page come from vendor pages, not from the sample.
Privacy. Aggregates only. Search results come from private individuals, so raw pages were not kept in our repository; the committed rows carry no post IDs, URLs, text, author IDs or handles. Only organization accounts are named.
import json
import os
import requests
# Any OpenAI-compatible gateway works: set its base URL, key and a model ID it serves.
# OpenRouter https://openrouter.ai/api/v1
# Vercel AI Gateway https://ai-gateway.vercel.sh/v1
# Requesty https://router.requesty.ai/v1
# Together AI https://api.together.ai/v1
# LiteLLM (self-host) http://localhost:4000 (wherever your proxy listens)
GW_BASE = os.environ["GATEWAY_BASE_URL"]
GW_KEY = os.environ["GATEWAY_API_KEY"]
MODEL = os.environ["GATEWAY_MODEL"] # e.g. "openai/gpt-oss-120b" on Together
TW_BASE = "https://api.twitterapi.io"
TW_KEY = os.environ["TWITTERAPI_IO_KEY"] # reads need no X account
TOOLS = [{
"type": "function",
"function": {
"name": "search_x",
"description": "Search recent public X (Twitter) posts. Uses X search syntax, "
"e.g. 'openrouter lang:en -filter:retweets'. Returns up to max_tweets posts.",
"parameters": {
"type": "object",
"properties": {
"query": {"type": "string"},
"max_tweets": {"type": "integer", "minimum": 1, "maximum": 100},
},
"required": ["query"],
},
},
}]
def chat(messages):
r = requests.post(
f"{GW_BASE}/chat/completions",
headers={"Authorization": f"Bearer {GW_KEY}"},
json={"model": MODEL, "messages": messages, "tools": TOOLS, "max_tokens": 800},
timeout=120,
)
if r.status_code in (402, 429):
raise SystemExit(f"gateway {r.status_code}: {r.text[:300]}")
r.raise_for_status()
return r.json()["choices"][0]["message"]
def search_x(query, max_tweets=40):
"""15 credits per tweet returned ($0.15 per 1,000); a full 20-tweet page costs $0.003."""
out, cursor = [], ""
while len(out) < max_tweets:
r = requests.get(
f"{TW_BASE}/twitter/tweet/advanced_search",
headers={"X-API-Key": TW_KEY},
params={"query": query, "queryType": "Latest", "cursor": cursor},
timeout=30,
)
r.raise_for_status()
body = r.json()
for t in body.get("tweets", []):
out.append({
"author": t["author"]["userName"],
"followers": t["author"].get("followers"),
"text": t["text"][:400],
"likes": t.get("likeCount", 0),
"created": t.get("createdAt"),
"url": t.get("url"),
})
if not body.get("has_next_page"):
break
cursor = body.get("next_cursor", "")
return out[:max_tweets]
def run(question, max_rounds=4):
messages = [
{"role": "system", "content": "You answer with evidence from live X posts. "
"Call search_x, then cite @handles and like counts."},
{"role": "user", "content": question},
]
for _ in range(max_rounds):
msg = chat(messages)
messages.append(msg)
calls = msg.get("tool_calls") or []
if not calls:
return msg.get("content")
for call in calls:
args = json.loads(call["function"]["arguments"] or "{}")
tweets = search_x(args["query"], int(args.get("max_tweets", 40)))
messages.append({
"role": "tool",
"tool_call_id": call["id"],
"content": json.dumps(tweets, ensure_ascii=False),
})
return "stopped after max_rounds"
if __name__ == "__main__":
print(run("What are developers on X saying about LLM gateway fees this week?"))
Questions readers ask
What is the best alternative to OpenRouter?
It depends on what you are replacing. For a hosted router with no token markup, Vercel AI Gateway (its docs state zero markup, including BYOK). For a self-hosted gateway you control, LiteLLM (MIT-licensed proxy, 100+ providers). For an OpenRouter-style catalog with a flat fee, Requesty (5% markup). For logging and budgets in front of keys you already have, Portkey or Cloudflare AI Gateway. For a few fixed models, the provider's own API or an inference host such as Together AI or Groq.
Is LiteLLM better than OpenRouter?
They solve different problems. LiteLLM is a proxy you run yourself: no gateway fee and prompts go only to the providers, but you need an account and key with every provider and you operate the server. OpenRouter is hosted: one key and one balance for 600+ models, with a 5.5% fee when you buy credits on Standard. Many teams use OpenRouter to explore and LiteLLM or direct APIs once their model choice settles.
Does Vercel AI Gateway charge a markup?
Vercel's pricing doc says AI Gateway charges no markup and no platform fee on tokens and that BYOK has no markup or fee either. You are responsible for payment processing fees, BYOK needs purchased credits, failed BYOK requests can be retried on Vercel's credentials and charged to your balance, and some add-ons (team-wide ZDR, provider allowlist, custom reporting, trace drains) cost extra.
How much does OpenRouter charge compared with Requesty?
OpenRouter's pricing page puts its fee on buying credits: 5.5% on Standard and 8% on Business, never on individual requests, with token prices passed through. Requesty charges a 5% markup on what your application spends; its own example is a $10 per 1M token model costing $10.50. OpenRouter's BYOK allowance ($25,000 of list-price inference a month with no fee, then 5%) can change the math if you bring your own provider keys.
Are OpenRouter alternatives OpenAI-compatible?
Yes for every option on this page. Vercel AI Gateway (ai-gateway.vercel.sh/v1), Requesty (router.requesty.ai/v1), Portkey (api.portkey.ai/v1), Together AI (api.together.ai/v1), Groq (api.groq.com/openai/v1), Cloudflare's compat endpoint and a LiteLLM proxy all accept OpenAI-style chat completions, so switching is mostly a base URL, key and model ID change. Check per-provider gaps: Groq, for example, rejects logprobs and logit_bias.
Why do developers switch away from OpenRouter?
In 244 public X posts we collected in 2026 that mention OpenRouter next to switching words, price, fees or credits came up in 49.2%, reliability, errors or outages in 22.5%, latency in 20.9% and self-hosting or control in 19.7%. Privacy and compliance came up in only 7.8%. These are keyword-rule shares, so read them as direction, not precise measurement.
Can I use Grok or other models with live X data through these gateways?
Gateways give a model access, not data: no model can see today's X posts unless your code fetches them. Define a search_x tool that calls TwitterAPI.io's /twitter/tweet/advanced_search and pass results back as tool messages; it works through any OpenAI-compatible gateway and any model with tool calling. X data costs $0.15 per 1,000 tweets returned, against $0.005 per post read ($5.00 per 1,000) on the official X API rate card.
Is there a free OpenRouter alternative?
Several have free entry points: LiteLLM's open-source proxy costs nothing to run beyond your server, Requesty's Free plan gives 200 requests a day on free models with no card, Portkey's Developer plan is free with 10K recorded logs a month, Cloudflare AI Gateway's core features are free, and Vercel AI Gateway gives a monthly free credit on a subset of models. Model usage itself is paid on all of them except free models.
Continue
- OpenRouter pricing: 5.5% (Standard) and 8% (Business) fee on credit purchases, BYOK allowance, free-model limits
- Vercel docs: AI Gateway pricing (no markup on tokens, BYOK, free tier, add-on surcharges)
- LiteLLM docs: self-hosted AI Gateway proxy, OpenAI-format endpoint, 100+ providers, MIT license
- Cloudflare docs: AI Gateway pricing (free core features, log limits, 5% Unified Billing fee)
- X developer docs: X API pay-per-usage pricing ($0.005 per post read, 3M monthly post-read cap)
- TwitterAPI.io docs: advanced search endpoint (query, queryType, cursor, tweets[], has_next_page)
- X API guide: endpoints, pricing and access options
- OpenRouter API: base URL, key, free models and fees
- Use the Vercel AI SDK with live X data
- MCP servers explained, with the hosted X data server
- OpenAI Agents SDK with a Twitter (X) search tool
- Get a Grok API key from xAI
- TwitterAPI.io pricing and plans
- TwitterAPI.io API documentation
- 01What Is Qoder? Plans, Credits, MCP Setup and Twitter (X) Data in Qoder
- 02Cursor vs GitHub Copilot: Plans, Agent Mode, MCP and a Twitter (X) Data Setup in Both
- 03Claude Code hooks: every event, the settings.json shape, and tested recipes (plus an X data budget guard)
- 04Google Antigravity Pricing: Free Tier, Pro and Ultra Quotas, and What X Users Report
- 05Lovable pricing in 2026: plans, credits, and what an app that pulls Twitter (X) data really costs
- 06Grok Bot Alternatives: Open-Source and Hosted Agents for Twitter (X)
- 07Zapier Alternatives in 2026: Prices, Self-Hosting and Which Ones Still Connect to Twitter (X)
- 08Social Listening via X (Twitter) API — Build vs Buy
Stop reading. Start building.
Starter credits cover real testing on real data. Google sign-in, no card, no application queue.
Get an API keyAlready building with TwitterAPI.io? Publish an honest tutorial or build log about it and earn up to $200 a month in API credits.