For OpenAI-SDK code, the migration is two environment variables. Swap the key, swap the base URL, ship. The wire formats are identical because both sides speak OpenAI Chat Completions.
For Claude Code or any Anthropic-SDK consumer the change is the same two variables, ANTHROPIC_BASE_URL and the key. What changes is which models you can run there.
Model IDs mostly carry over. OpenRouter prefixes model names with the upstream provider (for example, anthropic/claude-haiku-4-5-20251001), and InferAll's OpenAI- and Anthropic-compatible endpoints take the same prefixed form. Keep the prefix when migrating. On trial accounts, bare paid-model IDs such as gpt-4o-mini return HTTP 400. Accounts that have paid can also route supported bare Claude, GPT and Gemini IDs, subject to access and balance checks. A provider prefix does not make a paid model free. Check that each model you use is in our catalogue; the free NVIDIA models use their own ids, such as openai/gpt-oss-20b.
For tool calls, streaming, and vision inputs, both gateways forward the wire-format payloads through to the upstream provider. If your tool-call code worked against OpenRouter, it will work against InferAll on the equivalent endpoint.
If you depend on OpenRouter's per-request models array for client-side fallback, you don't need to port it. InferAll does the cross-provider retry server-side on 429, 529, 5xx, and timeout (30s default). You can still pass a preferred provider; the gateway will route to it first and only fall back if it has to.
The trade-off is worth naming explicitly. OpenRouter's model-list approach gives the caller fine-grained control: “try Sonnet, then a free NIM model, then gpt-oss-20b, in that order.” InferAll's server-side default routes by model class — “serve a Claude-class model, and if Anthropic is rate-limited, route to whatever else can run an equivalent.” That's an opinion. If your fallback choreography is a load-bearing part of your application, the OpenRouter shape gives you the levers; if you want one less thing to maintain, InferAll's default is the cheaper code path.