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:attributed_user budget. See Budgets.
3. Turn fallbacks into a routing policy
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
x-litellm-end-user-id keeps working without a change. See Python and TypeScript.
5. Verify
Send one request and check the response forX-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 ascustom/<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.