curl --request POST \
--url https://flowker.sandbox.lerian.net/v1/workflows/preview-request \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"node": {
"body": {
"amount": "${body.amount}"
},
"executorId": "http.post-v1-pay",
"method": "POST",
"path": "/v1/pay",
"providerConfigId": "018f3e2a-1c4d-7b9e-a1b2-c3d4e5f6c4d5"
},
"providerConfig": {
"config": {
"base_url": "https://api.example.com"
},
"providerId": "http"
},
"sampleInput": {
"amount": 150,
"currency": "BRL"
}
}
'import requests
url = "https://flowker.sandbox.lerian.net/v1/workflows/preview-request"
payload = {
"node": {
"body": { "amount": "${body.amount}" },
"executorId": "http.post-v1-pay",
"method": "POST",
"path": "/v1/pay",
"providerConfigId": "018f3e2a-1c4d-7b9e-a1b2-c3d4e5f6c4d5"
},
"providerConfig": {
"config": { "base_url": "https://api.example.com" },
"providerId": "http"
},
"sampleInput": {
"amount": 150,
"currency": "BRL"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
node: {
body: JSON.stringify({amount: '${body.amount}'}),
executorId: 'http.post-v1-pay',
method: 'POST',
path: '/v1/pay',
providerConfigId: '018f3e2a-1c4d-7b9e-a1b2-c3d4e5f6c4d5'
},
providerConfig: {config: {base_url: 'https://api.example.com'}, providerId: 'http'},
sampleInput: {amount: 150, currency: 'BRL'}
})
};
fetch('https://flowker.sandbox.lerian.net/v1/workflows/preview-request', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://flowker.sandbox.lerian.net/v1/workflows/preview-request",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'node' => [
'body' => [
'amount' => '${body.amount}'
],
'executorId' => 'http.post-v1-pay',
'method' => 'POST',
'path' => '/v1/pay',
'providerConfigId' => '018f3e2a-1c4d-7b9e-a1b2-c3d4e5f6c4d5'
],
'providerConfig' => [
'config' => [
'base_url' => 'https://api.example.com'
],
'providerId' => 'http'
],
'sampleInput' => [
'amount' => 150,
'currency' => 'BRL'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://flowker.sandbox.lerian.net/v1/workflows/preview-request"
payload := strings.NewReader("{\n \"node\": {\n \"body\": {\n \"amount\": \"${body.amount}\"\n },\n \"executorId\": \"http.post-v1-pay\",\n \"method\": \"POST\",\n \"path\": \"/v1/pay\",\n \"providerConfigId\": \"018f3e2a-1c4d-7b9e-a1b2-c3d4e5f6c4d5\"\n },\n \"providerConfig\": {\n \"config\": {\n \"base_url\": \"https://api.example.com\"\n },\n \"providerId\": \"http\"\n },\n \"sampleInput\": {\n \"amount\": 150,\n \"currency\": \"BRL\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://flowker.sandbox.lerian.net/v1/workflows/preview-request")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"node\": {\n \"body\": {\n \"amount\": \"${body.amount}\"\n },\n \"executorId\": \"http.post-v1-pay\",\n \"method\": \"POST\",\n \"path\": \"/v1/pay\",\n \"providerConfigId\": \"018f3e2a-1c4d-7b9e-a1b2-c3d4e5f6c4d5\"\n },\n \"providerConfig\": {\n \"config\": {\n \"base_url\": \"https://api.example.com\"\n },\n \"providerId\": \"http\"\n },\n \"sampleInput\": {\n \"amount\": 150,\n \"currency\": \"BRL\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://flowker.sandbox.lerian.net/v1/workflows/preview-request")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"node\": {\n \"body\": {\n \"amount\": \"${body.amount}\"\n },\n \"executorId\": \"http.post-v1-pay\",\n \"method\": \"POST\",\n \"path\": \"/v1/pay\",\n \"providerConfigId\": \"018f3e2a-1c4d-7b9e-a1b2-c3d4e5f6c4d5\"\n },\n \"providerConfig\": {\n \"config\": {\n \"base_url\": \"https://api.example.com\"\n },\n \"providerId\": \"http\"\n },\n \"sampleInput\": {\n \"amount\": 150,\n \"currency\": \"BRL\"\n }\n}"
response = http.request(request)
puts response.read_body{
"body": "{\"amount\":150.00,\"currency\":\"BRL\"}",
"curl": "<string>",
"headers": {},
"method": "POST",
"unresolved": [
"<string>"
],
"url": "https://api.example.com/v1/pay"
}{
"code": "FLK-0001",
"detail": "name is a required field",
"errors": [
{
"location": "body.nodes",
"message": "expected array length >= 1",
"value": "<unknown>"
}
],
"instance": "/v1/workflows",
"status": 400,
"title": "Bad Request",
"type": "https://errors.lerian.studio/v1/FLK-0001"
}Preview an Executor Request
Use this endpoint to assemble the outgoing HTTP request an executor node would send, without sending it. The preview applies the same interpolation, input mapping, and authentication assembly used at execution time. It never opens a network connection and never reads the vault. Secret material, including write-only configuration fields and authentication material, is masked with ***.
curl --request POST \
--url https://flowker.sandbox.lerian.net/v1/workflows/preview-request \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"node": {
"body": {
"amount": "${body.amount}"
},
"executorId": "http.post-v1-pay",
"method": "POST",
"path": "/v1/pay",
"providerConfigId": "018f3e2a-1c4d-7b9e-a1b2-c3d4e5f6c4d5"
},
"providerConfig": {
"config": {
"base_url": "https://api.example.com"
},
"providerId": "http"
},
"sampleInput": {
"amount": 150,
"currency": "BRL"
}
}
'import requests
url = "https://flowker.sandbox.lerian.net/v1/workflows/preview-request"
payload = {
"node": {
"body": { "amount": "${body.amount}" },
"executorId": "http.post-v1-pay",
"method": "POST",
"path": "/v1/pay",
"providerConfigId": "018f3e2a-1c4d-7b9e-a1b2-c3d4e5f6c4d5"
},
"providerConfig": {
"config": { "base_url": "https://api.example.com" },
"providerId": "http"
},
"sampleInput": {
"amount": 150,
"currency": "BRL"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
node: {
body: JSON.stringify({amount: '${body.amount}'}),
executorId: 'http.post-v1-pay',
method: 'POST',
path: '/v1/pay',
providerConfigId: '018f3e2a-1c4d-7b9e-a1b2-c3d4e5f6c4d5'
},
providerConfig: {config: {base_url: 'https://api.example.com'}, providerId: 'http'},
sampleInput: {amount: 150, currency: 'BRL'}
})
};
fetch('https://flowker.sandbox.lerian.net/v1/workflows/preview-request', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://flowker.sandbox.lerian.net/v1/workflows/preview-request",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'node' => [
'body' => [
'amount' => '${body.amount}'
],
'executorId' => 'http.post-v1-pay',
'method' => 'POST',
'path' => '/v1/pay',
'providerConfigId' => '018f3e2a-1c4d-7b9e-a1b2-c3d4e5f6c4d5'
],
'providerConfig' => [
'config' => [
'base_url' => 'https://api.example.com'
],
'providerId' => 'http'
],
'sampleInput' => [
'amount' => 150,
'currency' => 'BRL'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://flowker.sandbox.lerian.net/v1/workflows/preview-request"
payload := strings.NewReader("{\n \"node\": {\n \"body\": {\n \"amount\": \"${body.amount}\"\n },\n \"executorId\": \"http.post-v1-pay\",\n \"method\": \"POST\",\n \"path\": \"/v1/pay\",\n \"providerConfigId\": \"018f3e2a-1c4d-7b9e-a1b2-c3d4e5f6c4d5\"\n },\n \"providerConfig\": {\n \"config\": {\n \"base_url\": \"https://api.example.com\"\n },\n \"providerId\": \"http\"\n },\n \"sampleInput\": {\n \"amount\": 150,\n \"currency\": \"BRL\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://flowker.sandbox.lerian.net/v1/workflows/preview-request")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"node\": {\n \"body\": {\n \"amount\": \"${body.amount}\"\n },\n \"executorId\": \"http.post-v1-pay\",\n \"method\": \"POST\",\n \"path\": \"/v1/pay\",\n \"providerConfigId\": \"018f3e2a-1c4d-7b9e-a1b2-c3d4e5f6c4d5\"\n },\n \"providerConfig\": {\n \"config\": {\n \"base_url\": \"https://api.example.com\"\n },\n \"providerId\": \"http\"\n },\n \"sampleInput\": {\n \"amount\": 150,\n \"currency\": \"BRL\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://flowker.sandbox.lerian.net/v1/workflows/preview-request")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"node\": {\n \"body\": {\n \"amount\": \"${body.amount}\"\n },\n \"executorId\": \"http.post-v1-pay\",\n \"method\": \"POST\",\n \"path\": \"/v1/pay\",\n \"providerConfigId\": \"018f3e2a-1c4d-7b9e-a1b2-c3d4e5f6c4d5\"\n },\n \"providerConfig\": {\n \"config\": {\n \"base_url\": \"https://api.example.com\"\n },\n \"providerId\": \"http\"\n },\n \"sampleInput\": {\n \"amount\": 150,\n \"currency\": \"BRL\"\n }\n}"
response = http.request(request)
puts response.read_body{
"body": "{\"amount\":150.00,\"currency\":\"BRL\"}",
"curl": "<string>",
"headers": {},
"method": "POST",
"unresolved": [
"<string>"
],
"url": "https://api.example.com/v1/pay"
}{
"code": "FLK-0001",
"detail": "name is a required field",
"errors": [
{
"location": "body.nodes",
"message": "expected array length >= 1",
"value": "<unknown>"
}
],
"instance": "/v1/workflows",
"status": 400,
"title": "Bad Request",
"type": "https://errors.lerian.studio/v1/FLK-0001"
}Authorizations
JWT bearer token issued by the identity provider. Send it in the Authorization header as Bearer <token>.
Body
Executor node configuration (executorId, providerConfigId, method, path, headers, body, config, inputMapping/transforms) — the same map shape persisted on a workflow node's data slot.
Show child attributes
Show child attributes
{ "body": { "amount": "${body.amount}" }, "executorId": "http.post-v1-pay", "method": "POST", "path": "/v1/pay", "providerConfigId": "018f3e2a-1c4d-7b9e-a1b2-c3d4e5f6c4d5" }
Provider configuration the node targets, supplied inline so the preview is a pure function of its inputs (no DB / vault read).
Show child attributes
Show child attributes
{ "config": { "base_url": "https://api.example.com" }, "providerId": "http" }
Arbitrary JSON used as the workflow context to resolve mappings and ${node.}/${body.} references; unresolved refs stay literal. Optional (a preview with no sample context is valid).
Show child attributes
Show child attributes
{ "amount": 150, "currency": "BRL" }
Response
Indicates that the request was successful and the response contains the requested data.
Was this page helpful?

