Skip to content

Evanesca opens soon: this page shows how the chat will work.

LiteLLM on AI models run in Europe

Add Evanesca to LiteLLM's SDK or proxy with the openai/ prefix: models run in Europe behind your virtual keys, budgets and spend tracking. model="openai/<model ID>" with api_base and api_key — in a litellm.completion() call or in a model_list entry of the proxy's config.yaml.

Tool documentation read on 12 Oct 2026

SoonOpening soon: what follows describes the service as it will work.

Tool
LiteLLM · LLM gateway
API format
OpenAI-compatible (Chat Completions)
Base URL
https://evanesca.app/api/v1
Your prompts
From your machine or server, straight to Evanesca

Setup

1. Call Evanesca from the Python SDK

The openai/ prefix is what tells LiteLLM to talk the OpenAI protocol to a base URL other than OpenAI's; a bare model ID leaves it unable to pick a provider. api_base ends at /api/v1: LiteLLM adds /chat/completions on its own.

Python — SDK
import os
import litellm

response = litellm.completion(
    model="openai/gemma-4-26b",
    api_base="https://evanesca.app/api/v1",
    api_key=os.environ["EVANESCA_API_KEY"],
    messages=[{"role": "user", "content": "Hello"}],
)
print(response.choices[0].message.content)

2. Declare the models on the proxy

On LiteLLM Proxy, each Evanesca model is one model_list entry: model_name is what your own clients will ask for, litellm_params holds the same three settings as the SDK, and os.environ/ keeps the key out of the file. The prices under model_info are Evanesca's, per token, in euros, margin and VAT included — computed from the catalogue when this page was built. drop_params: true drops options a model does not take instead of failing the call.

config.yaml
model_list:
  - model_name: gemma-4-26b
    litellm_params:
      model: openai/gemma-4-26b
      api_base: https://evanesca.app/api/v1
      api_key: os.environ/EVANESCA_API_KEY
    model_info:
      # Evanesca's price, € per token, margin and VAT included
      input_cost_per_token: 0.000000168
      output_cost_per_token: 0.00000084
  - model_name: bge-multilingual-gemma2
    litellm_params:
      model: openai/bge-multilingual-gemma2
      api_base: https://evanesca.app/api/v1
      api_key: os.environ/EVANESCA_API_KEY
    model_info:
      mode: embedding
      input_cost_per_token: 0.000000168

litellm_settings:
  drop_params: true

3. Start the proxy with a master key

Recent LiteLLM releases refuse to start the proxy without LITELLM_MASTER_KEY (or general_settings.master_key). Set one, then hand your clients that key or virtual keys made with it: they call the proxy, and the proxy calls Evanesca.

Shell
export EVANESCA_API_KEY="<your Evanesca key>"
export LITELLM_MASTER_KEY="sk-$(openssl rand -hex 24)"
litellm --config config.yaml --port 4000

4. Ask for usage in streams

Evanesca ends every stream with a usage chunk, but the LiteLLM SDK only hands it to your code when the call asks for it with stream_options. Behind the proxy, clients get it on request, or always with always_include_stream_usage: true under general_settings. Billing on Evanesca's side does not depend on it.

Python — stream
stream = litellm.completion(
    model="openai/gemma-4-26b",
    api_base="https://evanesca.app/api/v1",
    api_key=os.environ["EVANESCA_API_KEY"],
    messages=[{"role": "user", "content": "Bonjour"}],
    stream=True,
    stream_options={"include_usage": True},
)

5. Read who served each call

Evanesca names the operator and the place of every call in two response headers, x-evanesca-operator and x-evanesca-location. LiteLLM passes upstream headers on with an llm_provider- prefix: on the proxy's HTTP response, and in response._hidden_params["additional_headers"] in the SDK. Logged next to LiteLLM's own request log, they record where each request ran.

Where these settings come from

These settings come from LiteLLM's official documentation, read on 12 Oct 2026. This guide has not been run against Evanesca yet: it will be checked when the API opens.

Which model to pick

Evanesca's models from which a real tool call came back at their operator. This guide uses DeepSeek V4.1 Flash and Gemma 4 26B, picked from the catalogue for their properties. Prices per million tokens, input / output, margin and VAT included.

Model IDOperator and placeContextReasoningPrice
mistral-large-4EU region of Mistral AI512k—€2.5133 / €7.7246
deepseek-v4.1-flashGermany (AKI.IO)1MYes€1.008 / €3.024
glm-5.3Germany (AKI.IO)512kYes€3.024 / €9.24
qwen3.8-27bScaleway — Paris, France256kYes€1.008 / €5.544
deepseek-v4-flashScaleway — Paris, France256kYes€0.672 / €1.344
apertus-v1.5-70bSwitzerland (Infomaniak)100k—€1.2936 / €4.62
glm-5.2Scaleway — Paris, France256kYes€3.024 / €9.24
qwen3.6-35bScaleway — Paris, France256kYes€0.42 / €2.52
gemma-4-26bGermany (AKI.IO)256k—€0.168 / €0.84
mistral-small-4-119bEU region of Mistral AI256k—€0.2772 / €1.1088
qwen3.5-397bScaleway — Paris, France250kYes€1.008 / €6.048
gpt-oss-120bScaleway — Paris, France—Yes€0.252 / €1.008
qwen3-coder-30bScaleway — Paris, France256k—€0.336 / €1.344
qwen3-235bScaleway — Paris, France250k—€1.26 / €3.78
mistral-small-3.2Scaleway — Paris, France——€0.252 / €0.588
llama-3.3-70bScaleway — Paris, France——€1.512 / €1.512
pixtral-12bScaleway — Paris, France128k—€0.336 / €0.336

Reasoning tokens are billed as output. Where each model runs and what its operator keeps: Models and Europe.

Good to know

  • Clients that call /v1/responses (OpenAI's newer format) fail with a 404 behind the openai/ prefix, since Evanesca serves Chat Completions. LiteLLM documents a custom_openai/ prefix that bridges that route into Chat Completions; keep openai/ for embedding models.
  • LiteLLM does not convert currencies: it multiplies tokens by the cost you enter. With Evanesca's prices, the spend it tracks is in euros — mind it if the same budget also covers models priced in dollars.
  • If the same proxy also routes to providers outside Europe, LiteLLM's fallbacks can move a request from one to the other. Keep the fallback chains of regulated workloads inside Evanesca's models.

Where your prompts go

LiteLLM runs where you deploy it: the SDK in your process, the proxy on your server. It sees every prompt before Evanesca does, and its logs and database are yours to place.

On Evanesca's side, the model runs at a European operator, named with its place in the x-evanesca-operator and x-evanesca-location headers of every response, and Evanesca keeps no copy of prompts or answers — only the billing data of each call. What each operator keeps is set out in Models and Europe; the host of Evanesca's servers is named in the legal notice.

Troubleshooting

SymptomWhat to do
LLM Provider NOT providedThe openai/ prefix is missing: write openai/<model ID>.
NotFoundError with an HTML page in the messageapi_base ends with /chat/completions. Stop it at /api/v1.
NotFoundError on one modelThe part after openai/ must be an ID listed by GET /models.
The proxy exits at startup: no master keySet LITELLM_MASTER_KEY before starting it.
Spend reads 0 for Evanesca's modelsLiteLLM has no price for them: add input_cost_per_token and output_cost_per_token under model_info.
Calls return 402Your Evanesca credit is at zero: add credit and calls resume.

Sources

Official documentation, read on 12 Oct 2026:

Frequently asked questions

Does LiteLLM work with Evanesca?

Yes, through its base URL setting: model="openai/<model ID>" with api_base and api_key — in a litellm.completion() call or in a model_list entry of the proxy's config.yaml. These settings come from LiteLLM's official documentation, read on 12 Oct 2026. This guide has not been run against Evanesca yet: it will be checked when the API opens.

Which Evanesca model should I use with LiteLLM?

One whose tool calling is measured. This guide uses DeepSeek V4.1 Flash and Gemma 4 26B; the 17 candidates are in this page's table, with their context window and price.

Do my prompts stay in Europe with LiteLLM?

LiteLLM runs where you deploy it: the SDK in your process, the proxy on your server. It sees every prompt before Evanesca does, and its logs and database are yours to place. On Evanesca's side, the model runs at a European operator, named with its place in the x-evanesca-operator and x-evanesca-location headers of every response, and Evanesca keeps no copy of prompts or answers — only the billing data of each call. What each operator keeps is set out in Models and Europe; the host of Evanesca's servers is named in the legal notice.

One key, and the tool runs on models in Europe.

Prepaid credit, no subscription: the same key works with every guide.