n8n logon8n Automation Hub
Debugging notes

When the Tool Built to Query Your API Just Replays One Cached Answer

Build breakdown · n8n workflow · August 29, 2026

The first sign something was wrong wasn't an error message. It was that three completely different requests to what was supposed to be a general-purpose API tool all came back with the exact same output, down to the byte.

Workflow at a glance
  1. Debugging a live n8n workflow needed to inspect a specific past execution's exact node data
  2. The available tool for hitting n8n's API took a method, URL, and query string as parameters
  3. Three deliberately different requests — a specific workflow, a Sheets API call, a filtered list — came back byte-identical
  4. The tool's schema had no real parameter validation behind it; whatever was passed in, it always returned the same fixed workflows dump
  5. Switched to calling n8n's REST API directly with curl and an API key instead
  6. A bonus find while doing it manually: n8n's execution endpoint stores the exact node code that ran, which can differ from what's live right now
Screenshot of the actual n8n workflow canvas: the Daily Portfolio Publisher, the workflow whose broken execution this debugging technique was used against

The actual workflow canvas, straight from my n8n instance.

Why a specific past execution needed a closer look

A workflow had published content with garbled text, and the live, current version of that workflow already looked correct — meaning whatever had actually run that day was different from what was sitting in the editor now. The only way to see what genuinely executed is n8n's own execution history, which stores a snapshot of the workflow exactly as it was at run time, not the current state.

A tool that looked general-purpose

An available assistant tool advertised itself as a generic HTTP request tool for the n8n API — pass it a method, a URL, query parameters, whatever endpoint you need. That's exactly the shape needed to fetch one specific execution by ID with its full data attached.

The test that gave it away

Instead of trusting the first response, three deliberately different requests went through it: a GET for one specific workflow, a GET against a completely unrelated Google Sheets API URL, and a GET for the workflow list with different query parameters. All three came back identical — the same roughly 1.1-million-character response, a paginated dump of every workflow's full node bodies. Not similar. Byte-for-byte the same string, three times, for three requests that had nothing in common with each other.

What was actually happening

The tool's parameter schema accepted anything — no real validation, `additionalProperties: true` — but whatever was passed through it never actually reached wherever the real request logic lived. It always executed the same fixed call and returned the same cached-shaped result, regardless of input. Nothing about calling it threw an error or returned a failure status; it looked exactly like a successful, correct response every single time.

The actual fix: skip the wrapper

The box running this n8n instance is reachable directly, and n8n's REST API takes a plain API key in a header — no tool wrapper needed. `curl` with `X-N8N-API-KEY` against the instance's own `/api/v1` endpoint reached the real specific execution, with `includeData=true` pulling the full node-by-node data for that run, including a `workflowData` snapshot showing exactly what code executed at that moment in time — not what's live in the editor now. That snapshot is what actually solved the original bug; the broken tool would never have gotten there no matter how the request was phrased.

The generalizable lesson

A tool that wraps an API and claims to take real parameters is worth testing with more than one call before trusting its output, especially in an AI-assisted workflow where a wrong-but-confident answer looks identical to a right one. Three intentionally different inputs producing one identical output is a fast, cheap way to catch this — and going straight to the underlying API with a plain HTTP client is always the fallback that can't have this particular failure mode.

Not sure whether a tool result you're trusting is actually live data?

I debug n8n API integrations and AI-tool wiring directly against the source, not through a layer that might be caching or faking success.