Skip to main content

What maps to what

Several model_list entries under one model_name, which LiteLLM balances across, have no equivalent: the gateway tries the rows of a routing policy in order.

1. Move the credentials

Add a row under Settings > Model Providers for each provider in your LiteLLM config. The LiteLLM model spellings carry over: azure/<deployment> and bedrock/<model id> are the same, and vertex_ai/gemini-2.5-flash is accepted as an alias of vertex/gemini-2.5-flash.

2. Create the keys and budgets

For each LiteLLM key, create a virtual key with the same budget and model list. From the CLI:
A LiteLLM budget on a team becomes a budget with Target set to the team, under AI Gateway > Budgets. A per-end-user cap becomes an attributed_user budget. See Budgets.

3. Turn fallbacks into a routing policy

Create a routing policy under AI Gateway > Routing policies with the OpenAI row first and the Azure row second, map gpt-5-mini to azure/acme-mini-eu in its model aliases, and pick the policy under Routing on the key.

4. Change the client

An application that sends x-litellm-end-user-id keeps working without a change. See Python and TypeScript.

5. Verify

Send one request and check the response for X-LangWatch-Gateway-Request-Id. Open Trace Explorer in the key’s project for the trace and AI Gateway > Usage for the spend.

Keep a LiteLLM proxy behind the gateway

To move in stages, add the LiteLLM proxy as a custom OpenAI-compatible provider with its URL as the base URL and a LiteLLM key as the API key. Keys created in LangWatch then reach it as custom/<model_name>, with LangWatch budgets, traces and spend events in front of it. Move providers to their own rows one at a time. On LangWatch Cloud that base URL must use https and must not resolve to a private address. A self-hosted gateway accepts http while REQUIRE_HTTPS_CUSTOM_ENDPOINTS stays false.
Last modified on September 6, 2026