Getting "[POST] "https://api.n8n.io/api/workflows": <no response> Failed to fetch" Error While Uploading a Template

Describe the problem/error/question

Hi,
While uploading a template, I am getting a no response, failed to fetch error. I checked other responses to similar questions for previous versions of the submission process - I am unable to find anything that might trigger Cloudflare WAF - I am not a developer, but my previous workflow, which was very similar in nodes and configuration, was accepted.

The solution listed at - Can´t upload my n8n template - #6 by Miha doesn’t help me much as I do not have dev know-how + the AI recommendations tend to share solutions that I do not see as acceptable for keeping the functionality of my workflow.

What is the error message (if any)?

Information on your n8n setup

  • n8n version: 2.33.7
  • Database (default: SQLite): Postgres
  • Running n8n via (Docker, npm, n8n cloud, desktop app): Docker
  • Operating system: Windows

@Siddharth_Gupta1

The “failed to fetch” error occurs because the n8n template portal is protected by Cloudflare’s Web Application Firewall (WAF), which inspects the raw JSON of your workflow during upload. Cloudflare can misidentify valid n8n syntax—such as JavaScript template literals (backticks), optional chaining (?.), or certain emojis and special characters—as malicious attack patterns. When this happens, Cloudflare blocks the request entirely before it even reaches n8n, resulting in the error you are seeing.

To fix this without breaking your workflow, you can use a “binary search” approach: duplicate your workflow and delete nodes in halves until you isolate the specific node or sticky note triggering the block. Once identified, you can usually resolve the issue by making minimal, non-destructive changes, such as removing special characters from node names, cleaning up emojis in descriptions, or slightly refactoring a specific expression to avoid the exact syntax that the WAF is flagging.

Hi @Siddharth_Gupta1
Check for pinned data before touching anything that runs. Pinned data travels inside the exported JSON, and on a link recommendation workflow that means real scraped page markup sitting in the file, which is the shape a generic WAF ruleset reads as an attack. It is also the safest thing to remove, because pinning only applies while you are editing and is ignored in production, so taking it out cannot change how the template behaves.
Open each node whose output panel shows “This data is pinned”, select Unpin in that banner, then export again and resubmit.

Pinned data is worth clearing regardless, but there is a second cause with the same symptom and a completely different fix, and it is the one that had me stuck for two days.

The upload is being blocked by Cloudflare’s WAF in front of the portal, before it reaches n8n at all. Liz on the n8n creators team confirmed the mechanism to me on 4 September: the portal sits behind Cloudflare’s WAF, which inspects the uploaded JSON and the description and can block the request with a 403. The portal reports that as “no response, failed to fetch”, which reads exactly like a network blip you should retry. It is not. Retrying identical content fails identically, forever.

You do not need dev knowledge for this one. You need to find and replace specific characters. I found which ones by uploading ten variants of the same workflow, changing one thing at a time:

Arrow functions. Anything of the form x => x.name. Replace with function (x) { return x.name; }

Backtick template literals. Replace with ordinary quotes and + concatenation.

Optional chaining, the ?. operator. Replace with an explicit if (a && a.b) test.

Emojis.

Two things that cost me time and are easy to miss:

It is not only Code nodes. The description field and STICKY NOTE text go through the same inspection. An emoji in a sticky note is enough on its own, and nobody thinks to look there.

The workflow runs perfectly with all of those constructs. Nothing is wrong with your automation. This is purely about getting past the upload, so the rewrite is cosmetic and you can keep the original for your own instance.

The practical version without any dev work: export the workflow JSON, open it in a plain text editor, and use find for => then for the backtick character then for ?. Fix what turns up, re-export, re-upload.

One more thing, because it misled me too: your earlier template being accepted tells you very little. A single added expression is enough to trip it, and the rules are not published.