N8N - API POST in app

Hi, I have a flow in N8N, in a step there is a conection to API - POST. In the logs N8N shows that just send 1 POST. But, in the app of my client, is posible to see 4 results.

This is important clarify that review all days, just one day receive anda POST in N8N. But in the app of my cliente, the POST shows in differents days and 4 results. What could be?

Hi Rai — since the 4 POSTs appear on different days in your client’s app (your screenshot shows 04/06 and 05/06), this most likely isn’t a duplicate-sending bug. It’s that n8n isn’t keeping all the execution records, so the log only shows 1 while the workflow actually ran several times.

Two things to check:

  1. Execution history — go to the Executions tab (left menu), set the status filter to All and widen the date range. n8n (especially Cloud, and self-hosted with pruning on) doesn’t keep every run, and successful runs may not be saved depending on Workflow Settings → “Save successful production executions.” So those POSTs are probably real runs that just aren’t all visible in the log.
  2. What’s the trigger? If it’s a Schedule/Cron trigger firing once a day, then 4 days = 4 POSTs, which matches what your client sees. That would confirm it’s normal runs + missing logs, not a bug.

If instead the POSTs were within seconds of each other on the same day, the likely cause is Retry On Fail on the HTTP Request node (open it → Settings → Retry On Fail / max tries) — a POST that reaches the app but returns a non-2xx makes n8n retry, so the app receives duplicates.

Can you confirm: (1) is your trigger a Schedule node, and (2) in the Executions tab with All statuses, how many runs do you actually see for those dates? That will tell us which one it is.

Hi @Rai_Augusto

For better clarity, it is recommended that you do these:

  1. Implement an Idempotency Key: This is the professional way to fix this. Add a unique ID (like an Order ID or a Hash of the file) to the POST body. Tell your client to configure their API to ignore requests that have an ID they have already processed.
  2. Check n8n Retention: Verify if your execution history is being deleted automatically.
  3. Add a “Log” Step: Add a Google Sheet or a simple database node right before the HTTP Request node. This creates a permanent record outside of n8n’s temporary logs so you can see exactly when the workflow ran.
  4. Verify with the Client: Ask the client to check their Server Access Logs (not the App UI). The server logs will show the exact IP address and timestamp of every incoming request. If the IP is not from your n8n server, the duplication is happening inside their system.

Hey @Rai_Augusto, great answers above. One quick thing to add, before anything else, check your workflow’s execution settings: go to the workflow → Settings → “Save successful production executions.” If this is turned off, n8n won’t log successful runs at all, which would explain why you only see 1 in the logs even if it ran 4 times.
Also, @kjooleng suggestion to add a logging step before the HTTP Request node is the fastest way to get a reliable audit trail going forward, a simple Google Sheets append or even a Write to File node gives you a permanent record that’s completely independent of n8n’s execution history retention.

I rewiew all points thath you had suggestioned, but the problem is that in my N8N just show 1 log and in app fo my client, show 4 differents logs, and each log has a different result. I dont know what happeness..

rewiew all points thath you had suggestioned, but the problem is that in my N8N just show 1 log and in app fo my client, show 4 differents logs, and each log has a different result. I dont know what happeness.

@Rai_Augusto looking closer at your screenshot, its not 4 different results, its the same file (ART299 - PI 327322.pdf) sent 4 times at irregular times. that pattern means the workflow keeps re-picking the same source record and re-sending it, not one run producing four. whats the trigger, a Schedule/poll over a sheet or Airtable, or a single event? if its polling a source, that record isnt being marked as sent, so every run re-grabs ART299 and POSTs it again. add a step after the POST that flags the record as processed (or filter out already-sent ones up front) and it’ll only go once. the single n8n log is just successful-execution pruning, thats a separate thing.

In true, in my screenshot is posible to see 4 differents results, because is the same file, but the result/comment that the AI create is different. In the API I receive a file just one time. And the log in N8N show this, because is posible to see only a log.

@Rai_Augusto that fits perfectly, the file is one source item but its being run through the workflow about 4 times (your timestamps span 04/06 to 11/06), and the AI writes a fresh comment each run since the model is non-deterministic, hence same file with 4 different comments. n8n shows only 1 log because successful executions arent retained, but it did run those times, widen the Executions filter to All across that date range and theyll show up. the fix is to stop ART299 getting re-processed, whatever selects it keeps re-picking it because its never marked done, so flag it as processed right after the POST (or filter to only unsent records up front) and it runs once, one comment, one POST.