My loop stops over API calls

I don’t know why my loop over API calls stops halfway with no error and the execution says success. Why would it just stop?

Describe the problem/error/question

What is the error message (if any)?

Please share your workflow

(Select the nodes on your canvas and use the keyboard shortcuts CMD+C/CTRL+C and CMD+V/CTRL+V to copy and paste the workflow.)

Share the output returned by the last node

Information on your n8n setup

  • n8n version:
  • Database (default: SQLite):
  • n8n EXECUTIONS_PROCESS setting (default: own, main):
  • Running n8n via (Docker, npm, n8n cloud, desktop app):
  • Operating system:
1 Like

Hi @Abistel_hub Welcome!
It always means that one of your loop’s insider nodes have gave NO output, turn on Always output data in all of your insider nodes in loop then let me know if the issue persists.

most times, this is always silent rate limiting or degraded API responses.

and can be caused by a number of things

some APIS don’t return proper error codes OR JUST return 200 OK but with empty or partial data

silently drop responses under load

YOU can Fix this by validating your response content, not just status code, ]Add delays (Wait node) and finally Implement retry logic with backoff

2 Likes

welcome to the n8n community @Abistel_hub
I would add explicit rate limiting or a small Wait node between the API calls and enable retry-on-fail on the HTTP node, because, as mentioned above, silent throttling or empty API responses can make the loop stop without throwing an error.

1 Like

This is a classic n8n silent drop issues. its either

  1. One of the AP responses is returning empty output

  2. Your API might be rate-limiting you; you should enable the Include response header status then

  3. Check your loop wire if you are using split in batches

rate limiting is def the culprit — been there. adding a wait node between api calls + setting the http node to retry on 429 fixed it for us. how many requests are you doing per loop?

1 Like

Hi! This is a fairly common puzzle in n8n — a loop that silently stops with “success” usually has one of a handful of root causes. Here’s a systematic checklist to diagnose and fix it:

1. Verify your Loop Over Items (SplitInBatches) wiring

The most frequent cause. The node has two outputs:

  • Output 1 (loop) → your HTTP Request node → back into the Loop Over Items node
  • Output 2 (done) → whatever comes after the loop

If the “loop” output is not connected back into the node, n8n processes only the first batch and then exits cleanly — no error, just “success.” Double-check both connections on the canvas.

2. Enable “Continue on Fail” on your HTTP Request node

Some APIs return a 429 (rate limit), 404, or 5xx with an empty body. By default, n8n may swallow these silently depending on your version. Enable Continue on Fail on the HTTP Request node, then add an IF node after it to branch on {{ $json.error }} or a status code check. This makes hidden failures visible.

3. Add a Wait node to handle rate limits

If your API has rate limits, bursting all calls in quick succession can cause it to stop responding. Add a Wait node (set to 1–2 seconds) inside the loop, between the HTTP Request and the loop-back connection.

4. Check your execution timeout

n8n has a configurable execution timeout. If your loop is long-running, it can be killed silently and still marked “success.”

  • Self-hosted: check the EXECUTIONS_TIMEOUT environment variable (default is often 3600s but can be lower).
  • n8n Cloud: there is a default timeout per plan.
  • You can also check Settings → n8n Settings → Execution Timeout in the UI.

5. Verify your actual item count

Before the loop, add a quick Code node or just inspect the output of the node feeding the loop. Confirm the number of items matches your expectation. It’s possible the source data genuinely has fewer items than assumed.

6. Check memory / process limits (self-hosted)

Very large loops in own process mode can exhaust memory and terminate silently. Consider switching to main process mode via EXECUTIONS_PROCESS=main, or break the loop into smaller batches using the Batch Size setting on the Loop Over Items node.

Docs worth reading:

Hope this helps! If it solved your issue, please mark this as the solution and heart

1 Like