This node is in beta. Its behavior may change in future releases.
When to use HTTP action
- You need to enrich an extracted record with data from your own backend, a CRM, or a public API mid-pipeline.
- You want to trigger an external workflow before continuing (create a ticket, post a notification, kick off downstream processing in another system).
- You need to fetch reference data that varies per run (a customer ID, a tax rate, a currency conversion) and feed it into a downstream transform or validation step.
- Use the callback output instead when the goal is just to deliver final results at the end of the run; HTTP action is for mid-pipeline calls whose response you’ll keep using.
Configuration
| Field | Type | Required | Description |
|---|---|---|---|
| URL | text | Yes | The endpoint to call. Supports template expressions like {{steps.extract.data.id}}. When you select a Business Central connector and the URL field is still empty, the editor auto-fills the company base path (built from the connector’s environment and company id) so you only append the resource segment such as salesOrders. It only seeds a blank URL and never overwrites a URL you already typed |
| Method | select | Yes | HTTP method: GET, POST, PUT, PATCH, or DELETE. Default: GET |
| Headers | key-value list | No | Custom headers to include in the request. Values support template expressions |
| Body format | select | No | JSON (default) sends the body as application/json. OData Batch sends a Business Central JSON $batch request with Isolation: snapshot. See the Business Central guide for the worked example |
| Body template | JSON editor | No | Request body for POST, PUT, and PATCH requests. Supports template expressions. Defaults to application/json; set a Content-Type header to override |
| Timeout | number | No | Request timeout in seconds. The HTTP call is cancelled after this many seconds and not retried. Accepts 1 to 300 seconds. Leave blank to use the system default (45s) |
| Response path | string | No | Dot-path to extract a subset of the JSON response (e.g., data.results). When set, the extracted value lands at payload.data; if the path does not resolve, payload.data is null |
| Required result path | string | No | A dot-path that must resolve to a record. If it is missing, null, or an empty array, the step fails with a no-records error (for example value for an OData list response). Leave blank to disable it |
| Response schema | schema editor | No | Define the expected response shape so downstream nodes can reference response fields under payload.data.<field>. payload.data is always available as an output container whether or not a schema is set; when a schema is set, its fields are nested beneath it as payload.data.<field>, not at the payload root. Use Detect from response to build the schema from a real request |
Template expressions
The URL, headers, and body fields support template expressions using the{{expression}} syntax. This lets you dynamically build requests using data from upstream nodes.
Response path
If the API returns a large response and you only need part of it, use the response path to extract a subset. For example, if the response is{ "data": { "results": [...] } }, set the response path to data.results to pass only the array to downstream nodes.
Required result path
Required result path is a guardrail, not an extractor. Where Response path only narrows the output and yieldsnull when it does not resolve, Required result path fails the step when no record is present at that path (missing, null, or an empty array). The two are independent and can be set together. For an OData list response shaped like { "value": [...] }, set Required result path to value so a run with zero records fails fast with a no-records error instead of passing an empty result downstream.
Detect from response
Next to the Response Schema field, use Detect from response to build the schema from a real request instead of typing it by hand. It sends an actual request and derives the schema from the response, prompting you for a test value for each dynamic token in the URL and body (headers are excluded). The detected schema populates the Response Schema editor so downstream nodes can reference fields underpayload.data.
Inputs and outputs
Allowed inputs: All trigger nodes and all action nodes. Output: The HTTP response with the following fields:| Field | Description |
|---|---|
| statusCode | The HTTP response status code |
| requestSucceeded | Whether the request returned a 2xx status |
| data | The parsed JSON response (or the extracted subset if a response path is configured). payload.data is always available as an output container object whether or not a Response Schema is defined, so the payload.data reference always resolves. When a Response Schema is set, its fields are nested beneath it as payload.data.<field>, not at the payload root. The value is null when the body is not JSON or the path did not resolve. Use this in downstream templates as {{httpNodeName.payload.data.<field>}} |
| responseBody | The raw response body as a string. Useful for non-JSON responses |
| url | The URL template as configured (pre-substitution) |
| resolvedUrl | The URL that was actually called (post template substitution and connector base URL) |
| method | The HTTP method that was used (lowercase: get, post, etc.) |
| attempts | The Temporal attempt number for this run |
| errorCode | When the request failed, one of: BadConfig, ConnectorAuth, OdataBatchInvalid, HttpError, EmptyResult. null on success. EmptyResult is produced when the Required result path finds no records |
Related
Callback output
Send final results to a webhook after processing
Extract action
Extract structured data before or after HTTP calls
Transform action
Transform HTTP response data into a specific format
Webhooks and callbacks
Guide to working with external integrations