Skip to main content
Logic & Flow Control

Respond to Webhook Node

Send a custom HTTP response to a webhook trigger. Supports JSON, text, binary, redirect, and more. JWT mode not supported.

Written By Philippe

Last updated 3 days ago

Respond to Webhook Node

⚠️ Limitations — Works with known restrictions, see details below

What It Does

Sends a custom HTTP response back to the caller of a Webhook trigger. Use it when you need to control the status code, headers, or body of your webhook's response.

Supported Response Modes

ModeDescription
First Incoming ItemReturns the first item's JSON data
All Incoming ItemsReturns all items as a JSON array
JSONReturns a custom JSON body you define
TextReturns plain text
BinaryReturns binary data (e.g., an image or file) as the complete response
RedirectRedirects the caller to another URL (307 by default)
No DataReturns the status code with no body

Options

  • Response Code — Set any HTTP status code (100–599). Default: 200
  • Response Headers — Add custom headers (e.g., Cache-Control, X-Request-Id). Header names are preserved as-is
  • Headers removed from the answer — Set-Cookie, Content-Security-Policy, Access-Control-Allow-Origin, X-Frame-Options, Strict-Transport-Security and X-Indie-Cache are removed from every webhook answer. The platform shares its domain with your callers' sign-in cookies, so a workflow may not set them. X-Indie-Cache is set only by the platform, on a cached answer. Every other header goes out as you set it

Compatibility

FeatureStatus
JSON, Text, Binary, Redirect, No Data modesSupported
Custom status codes and headersSupported — a Cache-Control: public, max-age=… header lets indie.money answer repeat GET calls to the You pay link from cache, see Repeat answers from cache
JWT modeNot supported — Cannot generate signed JWT tokens in responses. Use JSON mode with a pre-generated token instead
Streaming responsesNot supported — Responses are returned in full, not chunked. Binary data is sent as a complete response
When the response arrivesWhen the agent finishes — the response you build here is the one the caller receives, but it is sent once the run completes rather than immediately

Responding early, then doing more work

Steps placed after this node run normally and are covered by the same 5-minute run limit asthe rest of the agent. The response you configure here is still exactly what the callerreceives — it is delivered when the run ends.

If the run fails after this node, the caller still receives the response you configured —it is the reply you designed, and a later step failing does not rewrite it. The run itselfis reported as failed on the run page and in the run record, so the failure stays visible.Because the caller already has the answer, the run is charged its full price, and theBuilder is paid as for a successful run.

To reply to the caller as quickly as possible, put the slow work before this node so thereis less left to do after it.

Tips

  • Place this node at the end of a branch that starts with a Webhook trigger
  • Use JSON mode for API responses and Text mode for simple acknowledgements
  • For file downloads, use Binary mode — the file is sent as one complete response
  • Invalid JSON in the response body will show a clear error message with a preview of the malformed input

Status

This integration works on indie.money with known limitations. See the details above for specifics.

Was this helpful?

Still need help? Ask the team