Run your n8n agents on models in Europe.
n8n's OpenAI credential has a Base URL field. Point it at Evanesca, and the AI Agent nodes that use it run on models in Europe instead of OpenAI's — same canvas, same nodes, same tools. The Embeddings OpenAI node shares that credential, so a RAG workflow moves in the same step.
SoonOpening soon: what follows describes the service as it will work.
Before you start
- An n8n instance, self-hosted or n8n Cloud: the credential is the same.
- An Evanesca API key and credit above zero — an agent whose calls get 402 stops mid-workflow.
- A model ID from GET /models, which needs no key: pick one that does tool calling (model table).
Step by step
- Create an OpenAI credential
In Credentials, create a credential and choose OpenAI — the one every OpenAI node uses. Paste your key in API Key and put https://evanesca.app/api/v1 in Base URL, with no trailing slash and nothing after /v1. Leave Organization ID empty and Add Custom Header off.
- Check the key with a real call
n8n tests a credential by calling /models on its base URL, and Evanesca's catalogue answers without a key: the test turns green even with a mistyped key. The real check is a chat call — run the agent once, or send the curl below.
- Attach an OpenAI Chat Model to your AI Agent
Add an AI Agent node, connect an OpenAI Chat Model sub-node to its Chat Model input and select the credential. Look for Base URL in the credential, not in the node: from version 1.1 of the node, n8n hides its own Base URL option.
- Turn off Use Responses API
From version 1.3, the OpenAI Chat Model node has a Use Responses API toggle, on by default in n8n's code. Evanesca serves Chat Completions, not OpenAI's Responses API: turn the toggle off, or the node's calls fail.
- Pick a model that calls tools
The Model list comes from /models on your base URL; with a base URL other than OpenAI's, n8n shows all of it — embedding models included, so pick a chat model. An agent acts through tool calls: take a model whose tool calling reads Yes in the model table.
- Give reasoning models time
In the node's Options, Timeout defaults to 60,000 ms and Max Retries to 2. A reasoning model can think for more than a minute: n8n then cuts the call and starts it again, up to twice — and each attempt runs to the end at the operator, and is paid for. Raise Timeout, and leave Maximum Number of Tokens unset: a low ceiling can go entirely into thinking and return an empty answer.
- Embeddings: same credential, other models
The Embeddings OpenAI node uses the same credential and base URL. Its list mixes chat models in: pick qwen3-embedding-8b or bge-multilingual-gemma2. A chat model there gets a 404.
| Field | Value |
|---|---|
| API Key | Your Evanesca key |
| Base URL | https://evanesca.app/api/v1 |
| Organization ID (optional) | Empty |
| Add Custom Header | Off |
# The catalogue needs no key: pick your model ID here
curl https://evanesca.app/api/v1/models
# The real test of your key: one chat call
curl https://evanesca.app/api/v1/chat/completions \
-H "Authorization: Bearer $EVANESCA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "gemma-4-26b", "messages": [{"role": "user", "content": "ping"}]}'Where these field names come from
From n8n's code — the OpenAI credential and the OpenAI Chat Model node — and its documentation, read on 6 Oct 2026. This guide has not been run end to end against Evanesca yet: the API opens soon.
What moves, and what stays
The inference moves to Europe, where every Evanesca model runs. n8n itself does not move: your instance sees every prompt, tool result and conversation before Evanesca does. Self-hosted in the EU, n8n and the model both stay in Europe; on a managed instance, that instance keeps its own jurisdiction, and the model is the part this setting changes (details).
Troubleshooting
| Symptom | What to do |
|---|---|
| The credential test passes, the agent fails | The test only reads /models, which is public. Check the key with a real chat call: a wrong key gets 401. |
| 401 on every run | The key is wrong or revoked. Create another one in your account: a key shows only once. |
| 404 on every chat call | Use Responses API is on (node version 1.3). Turn it off in the OpenAI Chat Model node. |
| 402, the workflow stops | Your credit is at zero. Add credit and the calls resume; keep an eye on the balance if the workflow runs unattended. |
| 404 model_not_found for one model | That ID is not in Evanesca's catalogue: a typo, or a model Evanesca does not serve. Pick one from the list, which comes from GET /models. |
| The model list is empty | Check Base URL: it must end in /api/v1, with no trailing slash. |
| The agent answers but never uses its tools | Check the Tool calling column of the model table. |
| A timeout at exactly 60 seconds | That is n8n's default Timeout. Raise it in the node's Options, or use a model that does not reason before it answers. |
| An empty answer, finish_reason length | A reasoning model spent its token budget thinking. Clear Maximum Number of Tokens, or allow about 1,000 tokens or more. |
| 404 in the Embeddings OpenAI node | A chat model is selected there. Pick an embedding model. |
Frequently asked questions
Can n8n use Evanesca instead of OpenAI?
Yes. n8n's OpenAI credential has a Base URL field, so any OpenAI-compatible endpoint can stand in for OpenAI without touching a node. Pointed at Evanesca, your AI Agent nodes run on Evanesca's models, all run in Europe.
Where is the Base URL field?
In the OpenAI credential, next to the API key. n8n hides the OpenAI Chat Model node's own Base URL option from version 1.1 of the node, so on a recent n8n the credential is the only place to set it.
Why turn off Use Responses API?
Because Evanesca serves OpenAI's Chat Completions format, not the newer Responses API. In version 1.3 of the node the toggle is on by default in n8n's code; with it off, the node calls /chat/completions.
Is it the same on n8n Cloud and self-hosted?
Yes, the credential is the same. What differs is jurisdiction: self-hosted in the EU, the orchestration stays in Europe too; on a managed instance, only the inference moves.
One credential, and the model runs in Europe.
Your workflows stay as they are: only where the model runs changes.