The same model often runs on three providers at three prices. Routing is the rule that decides which one serves a request — and it is a rule you can take over entirely.
Four inputs can decide a request. They are consulted in this order, and the first one that names a usable provider wins:
provider field on the POST body overrides everything else.{
"model": "flux-schnell",
"prompt": "a lighthouse at dawn",
"provider": "replicate"
}Pinning a provider that does not serve the model returns 400 rather than silently falling back — a wrong pin should fail loudly, not quietly cost you a different price.
You are the router. Pull the price table from the catalog endpoint, apply your own logic — cost ceilings, latency history, provider allow-lists — and send provider on every request. We execute; the decision stays in your code.
ElliSekiz is the router. Omit provider and the account policy decides. Cheapest-first by default, which tracks price changes without a deploy on your side. The response always reports the provider that ran it, so you can log and audit the choice.
Store a fal.ai, Replicate, Atlas Cloud or OpenRouter key in account settings and the router prefers it for that provider. The generation then bills your upstream account directly instead of your ElliSekiz balance, and the response carries "used_own_key": true.