Hi everyone,
I’m experiencing an issue with the official DeepL node. Even though I have a valid DeepL API Free account with a verified credit card and an active API Key (ending in :fx), the credentials test always returns:
Couldn’t connect with these settings - Forbidden - perhaps check your credentials?
I have tried deleting and recreating the credentials multiple times, ensuring the “Free Plan” is selected, but the error persists.
The workaround:
I managed to get it working using a standard HTTP Request node with the following settings:
URL: https://api-free.deepl.com/v2/translate
Method: POST
Authentication: Header Auth (DeepL-Auth-Key [MY_KEY])
Body Content Type: Form Urlencoded
When using the HTTP Request node with these settings, the translation works perfectly. This leads me to believe there might be a bug in how the official DeepL node handles the authentication or the endpoint for the Free Plan.
Has anyone else encountered this lately?
My setup:
n8n version: 2.15.1 (Self Hosted)
Database: SQLite (default)
Deployment: Docker Compose
Operation mode: Own domain with Cloudflare Tunnel
@DevDream check if your key literally ends in :fx — the official node uses that suffix to decide which endpoint to hit. if there’s a trailing space or newline when you paste it into the credential field it won’t detect the free plan correctly and defaults to the paid API url, which gives you the 403. trim the key and retest.
Hi @DevDream
Based on the thread so far, the root cause hasn’t been confirmed yet.
For anyone who wants to dig deeper, check the n8n GitHub source at nodes-base/nodes/DeepL and look at how apiPlan === free maps to the base URL. If the credential test is hitting the wrong endpoint, it’ll be visible there.
That said, I found an open GitHub issue (#25304) that points to a deeper problem: DeepL deprecated their legacy query parameter authentication method in November 2025. The native n8n node still uses the old auth method, which explains the 403 even with a perfectly valid :fx key.
Your HTTP Request workaround works because you’re using DeepL-Auth-Key as a header, which is exactly what now requires. Until the n8n team patches the native node, the HTTP Request approach isn’t just a workaround, it’s actually the correct implementation.
@DevDream yeah tamy nailed it, #25304 confirms the native node still uses the old auth method deepl killed off in nov 2025 — your key and config are fine, the node itself is broken. stick with your HTTP Request workaround until they ship the fix, nothing wrong on your end.
Thanks to everybody
