# LiteLLM with Zurelay > One OpenAI-style API for every provider: a Python SDK and a proxy server. Made by BerriAI. Source: https://zurelay.com/docs/integrations/litellm The examples use `claude-opus-5-5`. Any model ID from [the models page](https://zurelay.com/docs/models) works. ## Set it up 1. Install it: `pip install litellm` for the Python SDK, or `pip install 'litellm[proxy]'` for the proxy server. 2. Prefix Zurelay model IDs with `openai/` and set `api_base` to the base URL, with `/v1`. 3. For the proxy, list the models in `config.yaml` and run `litellm --config config.yaml`. It serves `http://localhost:4000` to OpenAI and Anthropic clients alike. 4. Keep `use_chat_completions_api` and `use_chat_completions_url_for_anthropic_messages` on. Without them LiteLLM turns Responses and Anthropic Messages requests (Claude Code’s) into calls to OpenAI’s Responses API, which Zurelay doesn’t serve. ## Configuration **config.yaml** (`config.yaml`): ```yaml model_list: - model_name: claude-opus-5-5 litellm_params: model: openai/claude-opus-5-5 api_base: https://api.zurelay.com/v1 api_key: os.environ/ZURELAY_API_KEY use_chat_completions_api: true model_info: input_cost_per_token: 0.0000014 output_cost_per_token: 0.000007 cache_read_input_token_cost: 0.00000007 # Every other Zurelay model, as zurelay/ - model_name: zurelay/* litellm_params: model: openai/* api_base: https://api.zurelay.com/v1 api_key: os.environ/ZURELAY_API_KEY use_chat_completions_api: true litellm_settings: use_chat_completions_url_for_anthropic_messages: true check_provider_endpoint: true general_settings: master_key: os.environ/LITELLM_MASTER_KEY ``` **Proxy** (`terminal`): ```bash pip install 'litellm[proxy]' export LITELLM_MASTER_KEY="sk-choose-a-long-random-key" litellm --config config.yaml # from another terminal curl http://localhost:4000/v1/chat/completions \ -H "Authorization: Bearer $LITELLM_MASTER_KEY" \ -H "Content-Type: application/json" \ -d '{"model": "claude-opus-5-5", "messages": [{"role": "user", "content": "Hello"}]}' ``` **Python SDK** (`app.py`): ```python import os from litellm import completion response = completion( model="openai/claude-opus-5-5", api_base="https://api.zurelay.com/v1", api_key=os.environ["ZURELAY_API_KEY"], messages=[{"role": "user", "content": "Hello"}], ) print(response.choices[0].message.content) ``` > **Note:** LiteLLM prices requests from its own list: at the lab’s list price for models it knows, and not at all for the rest. `model_info` puts Zurelay’s prices in its spend tracking. For Claude through LiteLLM’s `anthropic/` provider instead, use `https://api.zurelay.com` with no `/v1`; LiteLLM adds `/v1/messages` itself. We ran this setup end to end with DeepSeek and Claude. The [LiteLLM guide](https://zurelay.com/guides/litellm) has every error we hit, how to fix it, and what each test task cost. [LiteLLM’s own docs](https://docs.litellm.ai/docs/providers/openai_compatible)