Supported providers
The gateway connects to five kinds of provider. You add a credential for one under Gateway → Credentials → New credential, then register models on it as Route calls through the gateway shows. Every provider is called through the same OpenAI-compatible endpoint, so your code does not change when you switch.
What each provider supports
We ran each check below through the gateway on 13 November 2026, with the model named in the first column.
| Provider | Model list | Prices filled in | Streaming | Tool calls | Image by link | Image inline | Cached tokens reported |
|---|---|---|---|---|---|---|---|
OpenAI (gpt-4.1-mini) | Yes | No | Yes | Yes | Yes | Yes | Yes |
Anthropic (claude-haiku-4-5) | Yes | No | Yes | Yes | Yes | Yes | Yes, with cache_control |
Gemini (gemini-3-flash-preview) | Yes | No | Yes | Yes | No, send it inline | Yes | Yes |
OpenRouter, as OpenAI-compatible (openai/gpt-4o-mini) | Yes | Yes, 433 of 441 models | Yes | Yes | Yes | Yes | Yes |
Runware (anthropic-claude-haiku-4-5) | Yes | Yes, 50 of 64 models | Yes | Partial, not on Gemini models | Yes | Yes | No |
- Model list: when you add a model, the picker lists the models your key can call.
- Prices filled in: picking a model copies its input, output and cached-input prices from the provider's list. Where the provider lists no price, you type it, and the gateway records the call's cost from the prices you saved.
- Image by link and Image inline: an
image_urlpart holding a public URL, or adata:image/...;base64URL. Send an image to a model shows both. - Cached tokens reported: a repeated prompt returns
cached_tokensinusage, and the gateway bills those tokens at the cached rate.
OpenAI, Anthropic and Gemini
Paste your key and pick a model. There is no base URL to set.
Gemini reads images only as inline data. Sending an image link to a Gemini model returns
a 400 that asks for the image bytes instead.
OpenAI-compatible
Use this for any provider whose API takes the OpenAI chat-completions format, such as OpenRouter. The credential needs two things:
- Base URL: the provider's API root, for example
https://openrouter.ai/api/v1. The gateway calls<base URL>/chat/completionsand lists models from<base URL>/models. - Extra headers (optional): for a provider that requires its own header on every
call, one
Name: valueper line. These are stored in plain text, so never put a key here.
On OpenRouter, the model picker fills in prices. On other OpenAI-compatible hosts, you type them.
Runware
A Runware credential needs only your Runware API key. Calls always go
to https://api.runware.ai/v1, so the form has no base URL field. When you add a model, the
picker lists every chat model your Runware key can call. Picking a model also fills in its
input, output and cached-input prices, so most models need no price typed in. Runware lists no
price for some models, mostly the OpenAI ones, and those you type yourself.
A few Runware models behave differently from the same model on its own provider:
- Reasoning models such as
deepseek-v4-flashspendmax_tokenson thinking first. With a small limit, the answer comes back empty withfinish_reason: "length". minimax-m3returns its reasoning inside<think>tags at the start ofcontent.- On Gemini models, the second turn of a tool call fails with a Runware
500. Use a Claude, MiniMax or GLM model for tool loops. - Claude models report no prompt-cache tokens, so every input token is billed at the full
input price, even with
cache_controlset.