How to Correctly Poll and Collect Results from Multiple Asynchronous Jobs?

Hi n8n Community,

I’m building a workflow to convert book chapters into audio using the Google Text-to-Speech Long Audio API, and I’m stuck on the correct way to handle the polling loop.

My Goal:

  1. Start multiple TTS jobs at once (e.g., 8 chapters = 8 jobs). This is an asynchronous API, so it immediately returns a job ID for each.

  2. Wait for all of these jobs to complete successfully.

  3. Once all jobs are done: true, pass the collected results (all 8 successful jobs) to the next part of my workflow to be downloaded.

My Current Workflow & The Problem:

My workflow successfully starts all 8 jobs in the TTS_Start_Job (HTTP Request) node.

After that, I have built a loop to process each job sequentially. Inside the loop, an HTTP Request node polls the job status, and an If node checks if the job is done.

The problem is that as soon as the very first job is finished, it passes through the If node’s “true” exit and the workflow continues with just that one item. The other 7 jobs are left behind and are never processed.

The core question is: What is the correct n8n pattern to start multiple background jobs, wait for all of them to finish, and then proceed with the full list of completed items?

I will paste the JSON of my current workflow below. Any help or guidance on the right pattern for this would be hugely appreciated!


Hi @Nick_B
Are you sure you need that loop over the item node? I don’t have mock data to test, but I feel that it might be the main issue because of the Reset option and its behavior..
I’d suggest removing it and keeping the loop like this:

If you can pin the nodes data, it would be great for debugging..

3 Likes

Thanks dude, much appreciated!

1 Like

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.