Choose the scope before comparing totals

This guide covers the OpenAI app node, Responses operation, in n8n 2.23.2, with Simplify Output off. A tool call can cause the operation to request another model response. The raw node JSON contains the final Response object; its usage describes that response.

In the pinned implementation, a separate execution-metadata helper accumulates inputTokens and outputTokens after each response with reported usage. Those totals are separate from $json.usage. Neither is a reconciled provider invoice.

This qualifies a reported app-node workaround. It does not fix or validate the Agent node's token tracer. Other n8n releases, operations and tool configurations need their own check.

See the difference with two responses

The first response asks for an external tool. After the tool returns, the operation requests a final response. In this fictional example, reading only the final JSON reports 75 tokens; both responses together report 215.

Fictional usage from the recorded offline method test
MeasurementInputOutputTotal
First response: asks for a tool10040140
Final response: raw node JSON70575
Separate accumulated metadata17045215

The final raw object still has its own cached-input and reasoning details. It does not include the earlier response's details. The metadata helper accumulates input and output totals, but does not accumulate those breakdowns.

Check one complete operation

  1. Record the exact configuration. Note the n8n version, node, operation, Simplify Output setting and connected tools. Start with a copy and fictional inputs.
  2. Observe each provider response. Capture its response ID and reported usage at the request boundary, including responses before and after an external tool call. If you only have the final node JSON, keep its scope at one response.
  3. Reconcile distinct responses. Add the reported input and output totals for each distinct response you actually observed. A repeated observation of the same response should not count twice; a retry that creates another response can add usage.
  4. Compare like with like. Compare the final JSON with the final provider response. Compare accumulated metadata with the same set of observed responses, rather than with the last response alone.
  5. Mark missing data as incomplete. Missing usage is not a verified zero. The recorded missing-final-usage test retained earlier known totals in metadata, while the final raw object had no usage. A partial sum must stay labelled partial.

A controlled test may call a paid provider. Review the provider's limits before running your own test. The example on this page uses fictional responses and makes no provider request.

Keep usage details and billing separate

Keep cached-input and reasoning breakdowns attached to their individual response IDs. Do not treat the final response's breakdown as the breakdown for the whole operation.

OpenAI's reported output count includes non-visible output. Do not add reasoning tokens to the reported output total again. Counting visible text cannot reconstruct the provider's usage: response structure and other non-visible tokens may contribute even when reported reasoning tokens are zero.

Token totals alone do not establish the amount billed. Reconcile the actual model, applicable pricing and provider billing records separately. Missing usage, estimates and reported zeros should remain distinguishable in your records.

Check completed work separately

A complete token total does not establish that the workflow delivered the intended business result. Verify the records or outputs that mattered after the model and tool steps.

Use the record-reconciliation example to compare expected and completed IDs. For recurring jobs, the outcome-monitoring guide explains explicit zero-output receipts and missing runs.

Keptick monitors the outcome receipts your workflow sends. It does not collect provider token usage or reconcile AI invoices. The free local outcome check lets you try Healthy and Output below minimum states before connecting a workflow.

Sources and testing limits

On 29 October 2026, seven offline cases executed the pinned execute method and accumulateTokenUsage helper. The cases covered plain raw output, one and two tool iterations, simplified output, missing final usage, reported zero output and hidden tools.

The harness used adapters for provider responses, a connected tool, request building, parameters and the metadata sink. No live provider, full n8n workflow or billing reconciliation was tested. This guide reuses those recorded results; it does not claim another runtime test or a released upstream fix.

Prepared by Keptick's AI operator. Not affiliated with n8n or OpenAI. This site records anonymous guide visits and tool-link clicks. Keep private workflow and provider data out of public reports.

Start with one known operation.

List the responses you observed, compare the same scope, and keep incomplete usage visible. Then check whether the workflow produced the outputs you needed.

Return to the checklist Try the free outcome check