- Define a data source with a tested REST endpoint
- Build a workflow from REST API Call, Script, and End nodes and run it
- Start a workflow from a process and map data in and out of it
- Find the result in the finished process instance
- Access to FlowX Designer
- A workspace and project set up (create one here)
- Outbound internet access from your FlowX environment, so the workflow can reach the public API
What you’ll build
A currency lookup. A process holds the currency a customer picked, starts a workflow with it, and waits. The workflow calls the Frankfurter exchange-rates API (free, no API key), extracts the USD rate, and returns it. The process stores the result underexchangeResult.
The API is a stand-in. Swap in any REST API you have access to and the steps stay the same.
This is how the finished workflow looks in the Integration Designer:

Step 1: Create the data source
A data source is a reusable connection to an external system: its base URL, authorization, and the endpoints you call on it. Every workflow in the project can use it.Create a RESTful system
- Name:
Exchange Rates - Description:
Frankfurter exchange-rates API
Set the base URL
https://api.frankfurter.dev/v1.Check the authorization
NO_AUTH, BEARER, BASIC, SERVICE_ACCOUNT, PRIVATE_KEY, and ACCESS_KEY. Frankfurter needs no credentials, so leave NO_AUTH. For a real API, pick what it requires. Token values are best defined here at system level and overridden per environment.Add an endpoint
GET method and set the Name to getLatestRates, then confirm. On the endpoint page:- Path:
/latest - On the Query tab, add one parameter: Name
base, ValueEUR. The value is the default the endpoint test uses; the workflow overrides it at runtime.

getLatestRates.
Test the endpoint

rates object contains USD. If it does, the data source is ready for the workflow.Step 2: Build the workflow
Create the workflow
Get exchange rate, add a description, and under Set Workflow Type keep Output Focused. The workflow editor opens with a Start node already on the canvas.Declare the input and output
baseCurrency (String), rate (Number), and currency (String). Then add baseCurrency under Input Parameters, and rate and currency under Output Parameters.This is what makes the process able to talk to the workflow in Step 3: the input mapper offers only declared input parameters, and the End node exposes only declared output parameters.Set the Start node sample input
Add the REST API Call node
Get rates. Configure it:- Endpoint: pick
GET getLatestRatesunder the Exchange Rates system (the dropdown groups endpoints by system). - Query Parameters →
base: enter${baseCurrency}in the field that reads Add value or variable. This replaces the test default with the workflow input. - Response Key:
rates

input.rates, and the JSON body sits at input.rates.data.Pick the rate with a Script node
Get rates, connect the two, and name it Pick USD rate. Keep the JS language tab and paste:input and publish their result by assigning keys on output. There is no return statement.
Add the End node
rate and currency, taken from the output parameters you declared. Whatever the previous nodes wrote under those keys is the workflow’s output, and it is what the calling process receives.
Run the workflow

rate and "USD". The rate differs from the one above, because the API publishes new rates every working day.Step 3: Call the workflow from a process
The process needs two things: a place to keep the input and the result, and a pair of nodes that start the workflow and wait for its answer.Create the process and its data model
currencyLookup. Open its Data Model page from the left rail and add:selectedCurrency(String): the input the process passes to the workflowexchangeResult(Object) with two attributes,rate(Number) andcurrency(String): where the workflow’s output lands
Add the nodes
Get exchange rate → Receive Message Task named Receive exchange rate → End. Connect them in that order.
Add the Start Integration Workflow action
Get exchange rate, open Node details → Actions, and click +. Give the action a name, set Action Type to Start Integration Workflow, and leave Trigger, Execution, and Navigation at their defaults, so the action runs on its own when the token arrives.In the workflow field (Search workflow by name), pick Get exchange rate. Under Data mapping, leave Legacy mapping off. The Input Mapping section lists the Workflow nodes that take input: click the wrench on the Start row.
Map the process data to the workflow input
- If the left pane says No process Parameters, click Define parameters, tick
selectedCurrency, and click Done. - In the right pane, click the field next to
baseCurrency, type${selectedCurrency}, and pick the suggestion that appears. - Click Confirm, then Save on the action form.

Receive the workflow output
Receive exchange rate and open Node details → Node Config. Under Integration Output, click Add Stream and configure the Data Stream:- Source: Workflow
- Select workflow:
Get exchange rate - Legacy Mapping: leave off

Map the workflow output to the process
- Add the targets to the right pane: click Update, tick
rateandcurrencyunderexchangeResult, and confirm. - Next to
exchangeResult.ratetype${rate}and pick the suggestion; next toexchangeResult.currencytype${currency}and pick the suggestion. - Click Confirm, then Save on the node.

Step 4: Run it end to end
Start the process
Inspect the instance
currencyLookup instance is FINISHED with End as its current node. Open it: the Variables tab shows the data, and the Tokens tab shows the path Start → Get exchange rate → Receive exchange rate → End.
exchangeResult.rate holds a number and exchangeResult.currency holds USD. That round trip, process to workflow to external API and back into the process data, is the pattern behind most FlowX integrations.Troubleshooting
The input mapper's left pane says No process Parameters
The input mapper's left pane says No process Parameters
selectedCurrency, and click Done. The attribute then appears and can be mapped.The input mapper's right pane is empty
The input mapper's right pane is empty
baseCurrency under Input Parameters, then reopen the mapper.Typing the attribute name only offers Add new attribute
Typing the attribute name only offers Add new attribute
${selectedCurrency} (with the dollar sign and braces) and pick the suggestion that appears below the field.The script fails reading rates
The script fails reading rates
input.rates.data, so the REST API Call node’s Response Key must be exactly rates. If you used another key, change either the key or the first line of the script to match. Open the Get rates node’s Output tab after a run to see the exact shape it produced.
