Integration guide
Run your n8n AI agents on GDPR-compliant EU models
n8n's OpenAI credential carries a Base URL field. Point it at Frontière and every AI Agent node in your workflows runs on open models hosted by OVHcloud or Scaleway instead of OpenAI — same canvas, same nodes, same tools, with the inference under European jurisdiction. One thing to know before you start: that same credential also backs n8n's embeddings node, which we do not serve, so create a new credential rather than editing the one you already use.
What changes
Nothing about your workflows. You keep the AI Agent node, the memory, the tools, the triggers and the canvas you already built. The only thing that moves is where the model runs: instead of leaving for OpenAI, the request goes to Frontière, which routes it to the provider actually hosting the model and bills it per token against your prepaid balance.
This matters more in n8n than in most tools, because people run n8n precisely to keep data close: self-hosting is its headline argument. Self-hosting the orchestrator and then sending every prompt to a US API undoes a good part of that, and it is usually the last piece nobody got round to replacing.
Before you start
Three things:
- An n8n instance — Cloud or self-hosted, both work; the credential is the same.
- A Frontière API key (dashboard → API keys) and a balance above zero: an agent whose calls return 402 stops answering mid-workflow.
- A model ID from the catalog. The catalog endpoint is public, so you can pick one before you even have a key.
1. Create the credential
In n8n, open Credentials, create a new one, and search for OpenAI — the credential named simply OpenAI is the one every OpenAI-compatible node uses. Fill in three fields:
| Field | Value |
|---|---|
| API Key | sk-front-… |
| Base URL | https://getfrontiereai.eu/api/v1 |
| Organization ID | leave empty |
Create a new credential — don't edit your existing one
n8n's Embeddings OpenAI node uses this exact same credential and the exact same base URL. Frontière serves chat completions, not embeddings, so repointing a credential that also feeds a vector store will break your RAG workflows with a 404 that says nothing about the cause. Keep one credential per provider: Frontière for chat and agents, your embeddings provider untouched.
A green test does not mean your key works
n8n tests a credential by calling /models on the base URL you gave it. Our catalog endpoint is public — it answers 200 without any key at all, which we verified with a deliberately invalid one. So the test turns green as soon as the URL is reachable, even if the key is a typo. The first real proof is a chat call: run the agent once, or send the curl below.
# The catalog is public — pick a model ID before you even have a key
curl https://getfrontiereai.eu/api/v1/models
# The real proof the credential works: a chat call with your key
curl https://getfrontiereai.eu/api/v1/chat/completions \
-H "Authorization: Bearer $FRONTIERE_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"qwen3-235b","messages":[{"role":"user","content":"ping"}]}'2. Wire it into the AI Agent node
Add an AI Agent node, then attach an OpenAI Chat Model sub-node to its Chat Model input and select the credential you just created. That sub-node is the one to use — the agent drives it, and it is where the model gets chosen.
Open the Model dropdown and the catalog appears. n8n populates that list by calling /models on your base URL, and it only narrows the list down to OpenAI's own gpt-*, o1 and o3 families when the base URL is OpenAI's — with a custom one it shows everything the endpoint returns, so all our live models are there.
Do not go looking for a Base URL field inside the node's own Options: n8n hides it from node version 1.1 onwards. On any recent n8n it lives in the credential, and only there — which is also why one credential cleanly switches every node that uses it.
3. Check that your model can call tools
This is the step people skip, and the one that decides whether you have an agent or a chatbot. An n8n AI Agent works by function calling: it emits a tool call, n8n runs the connected tool, the result goes back, and the model answers. A model that cannot emit a tool call will chat happily and never trigger anything.
Because the gateway relays tools and tool_choice untouched, the answer depends on the model and its provider, not on us — so we measured it rather than assuming. On 6 August 2026, one real call per model, 12 of the 13 live models returned a valid tool call. The single refusal is Qwen2.5-VL 72B, rejected by its provider with an explicit HTTP 400; it is a vision model, so use it to read images and pick something else to drive the agent.
See the full tool-calling matrix →
4. Raise the timeout before a reasoning model bites you
The OpenAI Chat Model node ships with Timeout at 60000 ms and Max Retries at 2. Those defaults are fine for a small chat model and badly wrong for a reasoning one.
GLM-5.2 thinks before it answers: on a substantial technical prompt we measured 261 seconds without streaming and 333 with. At 60 seconds, n8n cuts the call — then retries it twice, so a single agent step can generate three long answers you never see. Raise Timeout in the node's Options, or pick a non-reasoning model for loops that must stay quick.
Same section, same trap from the other end: leave Maximum Number of Tokens alone on a reasoning model. Set it low and the whole budget goes into thinking — the reply comes back empty with finish_reason "length", which looks like a broken integration and is not one. And if you pick Kimi K3, its endpoint scales to zero: the first call after an idle period spends a few minutes warming up before answering in seconds.
What it changes, and what it doesn't
The inference moves to the provider hosting the model, and each model's sovereign flag tells you which jurisdiction that is. What does not move is n8n itself: your instance still sees every prompt, every tool result and every conversation before we do. Self-hosted in Europe, the whole chain is European. On a managed platform, that platform keeps whatever jurisdiction it has, and the model is the part this fixes.
Worth stating plainly to whoever signs off on it, because the difference is exactly what a data protection officer will ask about. It is also why we label per model rather than per company: anything served through US infrastructure is marked fast access, never sovereign, even in an EU region.
Troubleshooting
The failures worth recognizing on sight:
| Symptom | What to do |
|---|---|
| The credential test passes, the agent fails | The test only calls the public /models endpoint. Check the key itself with a real chat call — a wrong key answers 401. |
| 401 on every run | The key is wrong or has been revoked. Create a new one in the dashboard; keys are shown once. |
| The workflow stops, calls return 402 | Your prepaid balance hit zero. Top up from the dashboard and calls resume immediately — worth an alert if the workflow runs unattended. |
| The model dropdown is empty | The base URL is wrong. It must end in /api/v1, with no trailing slash and no /chat/completions — n8n appends the rest. |
| 404, model_not_found | The model ID must come from GET /models, which lists live models only. Coming-soon entries are not callable. |
| The agent replies but never uses its tools | Check the model supports tool calling — Qwen2.5-VL 72B does not, and its provider says so with a 400. |
| Timeout after exactly 60 seconds | That is n8n's default, not our limit. Raise Timeout in the node's Options, or move to a model that does not reason before answering. |
| An empty reply with finish_reason length | A reasoning model spent its whole token budget thinking. Remove Maximum Number of Tokens or allow at least ~1,000. |
| The Embeddings OpenAI node returns 404 | We do not serve embeddings. That node needs its own credential pointing at a provider that does. |
FAQ
Can n8n use a GDPR-compliant LLM instead of OpenAI?
Yes. n8n's OpenAI credential exposes a Base URL field, so any OpenAI-compatible endpoint can replace OpenAI without touching a single node. Pointing it at Frontière runs your AI Agent nodes on open models hosted by OVHcloud or Scaleway, operators with no non-EU jurisdictional control.
Where is the Base URL field in the n8n OpenAI Chat Model node?
It is not in the node — n8n hides that option from node version 1.1 onwards. On any recent version the Base URL lives in the OpenAI credential itself, alongside the API key, and applies to every node using that credential.
Do n8n AI Agents work with open-source models?
They do, provided the model supports function calling, which is how the agent triggers its tools. We measured this across our catalog on 6 August 2026: 12 of the 13 live models returned valid tool calls, the exception being a vision model whose provider rejects tools outright.
Can I use Frontière for n8n's embeddings and vector store nodes?
No. We serve chat completions, not embeddings, so a call to /embeddings returns 404. Because the Embeddings OpenAI node shares the same credential type, create a separate credential for Frontière rather than editing the one your RAG workflows depend on.
Does this work on n8n Cloud as well as self-hosted?
Both, identically — the credential is the same. The difference is jurisdictional rather than technical: self-hosting in Europe puts the whole chain under EU law, while on a managed instance the orchestration keeps whatever jurisdiction the platform has and only the inference moves.
Get a key and point n8n at it
Create an account, top up from €20, and your existing workflows run on European models.
Create an account