Curl() expressions and manual JSON parsing.
Overview
- Operates per record: one API call for each input row.
- Enriches 1:1: every input row passes through unchanged and gains the response fields you select, so the output row count equals the input row count.
- Builds the request from row values using
#{field}placeholders in the URL, headers, and body. - Parses the response with a JSON Path and projects the fields you choose.
- Supports None, Basic, and saved Connection authentication, so you can reuse a connection’s access token instead of hardcoding credentials.
#{url} for each row to fetch and attach the details.
Configuration
Drop the API Call component into the pipeline designer, connect an input to it, and open it to configure the request and the response.Request
Authentication
Response and Fields
Two reserved response fields are available under the Meta Data tab of the field picker, populated from the HTTP response itself rather than its body:
These stay populated even when a call returns an error and Fail on error is off, so a downstream component can branch on the real status while the body fields are null.
Detecting fields
Because#{field} placeholders are only resolved at run time, the component can sample a real response so you do not have to define fields manually.
1
Configure the request
Set the method, URL, authentication, and any headers or body.
2
Click Detect fields from API
The component makes a single sample request through the upstream data, then displays the response and suggests a JSON Path.
3
Apply the suggestion and select fields
Accept the suggested JSON Path (or enter your own) and choose the fields to add to your rows.
Example
Enrich a list of records with details fetched per row.- A REST API Source reads a list endpoint, producing one row per item with fields such as
urlandtitle. - An API Call transformation is connected after it:
- Method:
GET - URL:
#{url} - JSON Path:
$ - Response fields:
director,release_date
- Method:
- For each input row, the component calls that row’s
url, parses the response, and appendsdirectorandrelease_date.
url, title) and gains the selected response fields (director, release_date), which are then available to downstream components.
Best Practices
- Use Connection authentication for any API that needs a token, so credentials live in a managed connection instead of in the component.
- Set a request sleep interval when the target API enforces rate limits. Each row is a separate call, so high-volume inputs can hit limits quickly.
- Decide on Fail on error deliberately. Leave it on to stop the job on bad responses, or turn it off to let rows pass through with null enrichment (and inspect
http_status_codedownstream). - Use
#{field}placeholders to drive per-row URLs, headers, and bodies from upstream data. - Remember that Preview makes real API calls to the configured endpoint, just like a job run.
FAQ
How many API calls does this component make? One call per input row during a job run. Detect fields from API makes a single call, regardless of how many rows are upstream, because it only needs one sample response to infer the fields. Does the API Call transformation change the number of rows? No. It enriches each input row 1:1, so the output row count equals the input row count. Can I reuse a saved connection’s token instead of entering credentials? Yes. Set Authentication to Connection and choose a saved connection. The component uses that connection’s credentials or access token for every request. What happens when a request fails? It depends on Fail on error. When on, a non-2xx response, a network error, or a JSON Path with no match fails the job. When off, the row passes through with null response fields and the job continues, whilehttp_status_code and http_headers still reflect the real response.