curl --request POST \
--url https://flows.super.ai/api/flows/{flow_id}/validate \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"definition": {
"flow": {
"author_uuid": "",
"created_at": ""
},
"flow_configs": [
{
"config": {
"groups": [],
"notes": [],
"tasks": [
{
"is_schedulable_executor": false,
"name": "e264bc8d-d6d3-4bef-a18e-a27ad491cd26",
"parameters": {},
"task_executor_name": "receive_file",
"task_title": "Receive File",
"visual_properties": {
"collapsed": false,
"position": {
"x": 584.5,
"y": 359.5
},
"zIndex": 2
}
},
{
"is_schedulable_executor": false,
"name": "6ef3e60a-94e7-48b0-adbf-80d3ef81c3a6",
"parameters": {
"document_url": "{{e264bc8d-d6d3-4bef-a18e-a27ad491cd26.document_url}}",
"fields": [
{
"columns": [],
"data_type": "int",
"id": "InvoiceID",
"instructions": "",
"title": "Invoice ID"
}
],
"worker": "gpt-4.1"
},
"task_executor_name": "doc_to_structured",
"task_title": "Doc To Structured",
"visual_properties": {
"collapsed": false,
"position": {
"x": 1170,
"y": 360
},
"zIndex": 2
}
}
]
},
"meta": {
"description": "Extract data from invoices",
"name": "Invoice Processing"
}
}
]
},
"expected_revision": "<string>"
}
'import requests
url = "https://flows.super.ai/api/flows/{flow_id}/validate"
payload = {
"definition": {
"flow": {
"author_uuid": "",
"created_at": ""
},
"flow_configs": [
{
"config": {
"groups": [],
"notes": [],
"tasks": [
{
"is_schedulable_executor": False,
"name": "e264bc8d-d6d3-4bef-a18e-a27ad491cd26",
"parameters": {},
"task_executor_name": "receive_file",
"task_title": "Receive File",
"visual_properties": {
"collapsed": False,
"position": {
"x": 584.5,
"y": 359.5
},
"zIndex": 2
}
},
{
"is_schedulable_executor": False,
"name": "6ef3e60a-94e7-48b0-adbf-80d3ef81c3a6",
"parameters": {
"document_url": "{{e264bc8d-d6d3-4bef-a18e-a27ad491cd26.document_url}}",
"fields": [
{
"columns": [],
"data_type": "int",
"id": "InvoiceID",
"instructions": "",
"title": "Invoice ID"
}
],
"worker": "gpt-4.1"
},
"task_executor_name": "doc_to_structured",
"task_title": "Doc To Structured",
"visual_properties": {
"collapsed": False,
"position": {
"x": 1170,
"y": 360
},
"zIndex": 2
}
}
]
},
"meta": {
"description": "Extract data from invoices",
"name": "Invoice Processing"
}
}
]
},
"expected_revision": "<string>"
}
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({
definition: {
flow: {author_uuid: '', created_at: ''},
flow_configs: [
{
config: {
groups: [],
notes: [],
tasks: [
{
is_schedulable_executor: false,
name: 'e264bc8d-d6d3-4bef-a18e-a27ad491cd26',
parameters: {},
task_executor_name: 'receive_file',
task_title: 'Receive File',
visual_properties: {collapsed: false, position: {x: 584.5, y: 359.5}, zIndex: 2}
},
{
is_schedulable_executor: false,
name: '6ef3e60a-94e7-48b0-adbf-80d3ef81c3a6',
parameters: {
document_url: '{{e264bc8d-d6d3-4bef-a18e-a27ad491cd26.document_url}}',
fields: [
{
columns: [],
data_type: 'int',
id: 'InvoiceID',
instructions: '',
title: 'Invoice ID'
}
],
worker: 'gpt-4.1'
},
task_executor_name: 'doc_to_structured',
task_title: 'Doc To Structured',
visual_properties: {collapsed: false, position: {x: 1170, y: 360}, zIndex: 2}
}
]
},
meta: {description: 'Extract data from invoices', name: 'Invoice Processing'}
}
]
},
expected_revision: '<string>'
})
};
fetch('https://flows.super.ai/api/flows/{flow_id}/validate', 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://flows.super.ai/api/flows/{flow_id}/validate",
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([
'definition' => [
'flow' => [
'author_uuid' => '',
'created_at' => ''
],
'flow_configs' => [
[
'config' => [
'groups' => [
],
'notes' => [
],
'tasks' => [
[
'is_schedulable_executor' => false,
'name' => 'e264bc8d-d6d3-4bef-a18e-a27ad491cd26',
'parameters' => [
],
'task_executor_name' => 'receive_file',
'task_title' => 'Receive File',
'visual_properties' => [
'collapsed' => false,
'position' => [
'x' => 584.5,
'y' => 359.5
],
'zIndex' => 2
]
],
[
'is_schedulable_executor' => false,
'name' => '6ef3e60a-94e7-48b0-adbf-80d3ef81c3a6',
'parameters' => [
'document_url' => '{{e264bc8d-d6d3-4bef-a18e-a27ad491cd26.document_url}}',
'fields' => [
[
'columns' => [
],
'data_type' => 'int',
'id' => 'InvoiceID',
'instructions' => '',
'title' => 'Invoice ID'
]
],
'worker' => 'gpt-4.1'
],
'task_executor_name' => 'doc_to_structured',
'task_title' => 'Doc To Structured',
'visual_properties' => [
'collapsed' => false,
'position' => [
'x' => 1170,
'y' => 360
],
'zIndex' => 2
]
]
]
],
'meta' => [
'description' => 'Extract data from invoices',
'name' => 'Invoice Processing'
]
]
]
],
'expected_revision' => '<string>'
]),
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://flows.super.ai/api/flows/{flow_id}/validate"
payload := strings.NewReader("{\n \"definition\": {\n \"flow\": {\n \"author_uuid\": \"\",\n \"created_at\": \"\"\n },\n \"flow_configs\": [\n {\n \"config\": {\n \"groups\": [],\n \"notes\": [],\n \"tasks\": [\n {\n \"is_schedulable_executor\": false,\n \"name\": \"e264bc8d-d6d3-4bef-a18e-a27ad491cd26\",\n \"parameters\": {},\n \"task_executor_name\": \"receive_file\",\n \"task_title\": \"Receive File\",\n \"visual_properties\": {\n \"collapsed\": false,\n \"position\": {\n \"x\": 584.5,\n \"y\": 359.5\n },\n \"zIndex\": 2\n }\n },\n {\n \"is_schedulable_executor\": false,\n \"name\": \"6ef3e60a-94e7-48b0-adbf-80d3ef81c3a6\",\n \"parameters\": {\n \"document_url\": \"{{e264bc8d-d6d3-4bef-a18e-a27ad491cd26.document_url}}\",\n \"fields\": [\n {\n \"columns\": [],\n \"data_type\": \"int\",\n \"id\": \"InvoiceID\",\n \"instructions\": \"\",\n \"title\": \"Invoice ID\"\n }\n ],\n \"worker\": \"gpt-4.1\"\n },\n \"task_executor_name\": \"doc_to_structured\",\n \"task_title\": \"Doc To Structured\",\n \"visual_properties\": {\n \"collapsed\": false,\n \"position\": {\n \"x\": 1170,\n \"y\": 360\n },\n \"zIndex\": 2\n }\n }\n ]\n },\n \"meta\": {\n \"description\": \"Extract data from invoices\",\n \"name\": \"Invoice Processing\"\n }\n }\n ]\n },\n \"expected_revision\": \"<string>\"\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://flows.super.ai/api/flows/{flow_id}/validate")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"definition\": {\n \"flow\": {\n \"author_uuid\": \"\",\n \"created_at\": \"\"\n },\n \"flow_configs\": [\n {\n \"config\": {\n \"groups\": [],\n \"notes\": [],\n \"tasks\": [\n {\n \"is_schedulable_executor\": false,\n \"name\": \"e264bc8d-d6d3-4bef-a18e-a27ad491cd26\",\n \"parameters\": {},\n \"task_executor_name\": \"receive_file\",\n \"task_title\": \"Receive File\",\n \"visual_properties\": {\n \"collapsed\": false,\n \"position\": {\n \"x\": 584.5,\n \"y\": 359.5\n },\n \"zIndex\": 2\n }\n },\n {\n \"is_schedulable_executor\": false,\n \"name\": \"6ef3e60a-94e7-48b0-adbf-80d3ef81c3a6\",\n \"parameters\": {\n \"document_url\": \"{{e264bc8d-d6d3-4bef-a18e-a27ad491cd26.document_url}}\",\n \"fields\": [\n {\n \"columns\": [],\n \"data_type\": \"int\",\n \"id\": \"InvoiceID\",\n \"instructions\": \"\",\n \"title\": \"Invoice ID\"\n }\n ],\n \"worker\": \"gpt-4.1\"\n },\n \"task_executor_name\": \"doc_to_structured\",\n \"task_title\": \"Doc To Structured\",\n \"visual_properties\": {\n \"collapsed\": false,\n \"position\": {\n \"x\": 1170,\n \"y\": 360\n },\n \"zIndex\": 2\n }\n }\n ]\n },\n \"meta\": {\n \"description\": \"Extract data from invoices\",\n \"name\": \"Invoice Processing\"\n }\n }\n ]\n },\n \"expected_revision\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://flows.super.ai/api/flows/{flow_id}/validate")
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 \"definition\": {\n \"flow\": {\n \"author_uuid\": \"\",\n \"created_at\": \"\"\n },\n \"flow_configs\": [\n {\n \"config\": {\n \"groups\": [],\n \"notes\": [],\n \"tasks\": [\n {\n \"is_schedulable_executor\": false,\n \"name\": \"e264bc8d-d6d3-4bef-a18e-a27ad491cd26\",\n \"parameters\": {},\n \"task_executor_name\": \"receive_file\",\n \"task_title\": \"Receive File\",\n \"visual_properties\": {\n \"collapsed\": false,\n \"position\": {\n \"x\": 584.5,\n \"y\": 359.5\n },\n \"zIndex\": 2\n }\n },\n {\n \"is_schedulable_executor\": false,\n \"name\": \"6ef3e60a-94e7-48b0-adbf-80d3ef81c3a6\",\n \"parameters\": {\n \"document_url\": \"{{e264bc8d-d6d3-4bef-a18e-a27ad491cd26.document_url}}\",\n \"fields\": [\n {\n \"columns\": [],\n \"data_type\": \"int\",\n \"id\": \"InvoiceID\",\n \"instructions\": \"\",\n \"title\": \"Invoice ID\"\n }\n ],\n \"worker\": \"gpt-4.1\"\n },\n \"task_executor_name\": \"doc_to_structured\",\n \"task_title\": \"Doc To Structured\",\n \"visual_properties\": {\n \"collapsed\": false,\n \"position\": {\n \"x\": 1170,\n \"y\": 360\n },\n \"zIndex\": 2\n }\n }\n ]\n },\n \"meta\": {\n \"description\": \"Extract data from invoices\",\n \"name\": \"Invoice Processing\"\n }\n }\n ]\n },\n \"expected_revision\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"validation_errors": [
{
"input": "<unknown>",
"loc": [
123
],
"msg": "<string>",
"type": "<string>",
"ctx": {},
"url": "<string>"
}
],
"default_reference_modes": {},
"dynamic_data": {},
"ordered_task_names": [
"<string>"
],
"output_schemas": {}
}Validate a flow definition without persisting
Validate a flow definition without persisting anything.
Runs DSL validation and returns validation errors and ordered task names. Used for real-time validation feedback during editing.
curl --request POST \
--url https://flows.super.ai/api/flows/{flow_id}/validate \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"definition": {
"flow": {
"author_uuid": "",
"created_at": ""
},
"flow_configs": [
{
"config": {
"groups": [],
"notes": [],
"tasks": [
{
"is_schedulable_executor": false,
"name": "e264bc8d-d6d3-4bef-a18e-a27ad491cd26",
"parameters": {},
"task_executor_name": "receive_file",
"task_title": "Receive File",
"visual_properties": {
"collapsed": false,
"position": {
"x": 584.5,
"y": 359.5
},
"zIndex": 2
}
},
{
"is_schedulable_executor": false,
"name": "6ef3e60a-94e7-48b0-adbf-80d3ef81c3a6",
"parameters": {
"document_url": "{{e264bc8d-d6d3-4bef-a18e-a27ad491cd26.document_url}}",
"fields": [
{
"columns": [],
"data_type": "int",
"id": "InvoiceID",
"instructions": "",
"title": "Invoice ID"
}
],
"worker": "gpt-4.1"
},
"task_executor_name": "doc_to_structured",
"task_title": "Doc To Structured",
"visual_properties": {
"collapsed": false,
"position": {
"x": 1170,
"y": 360
},
"zIndex": 2
}
}
]
},
"meta": {
"description": "Extract data from invoices",
"name": "Invoice Processing"
}
}
]
},
"expected_revision": "<string>"
}
'import requests
url = "https://flows.super.ai/api/flows/{flow_id}/validate"
payload = {
"definition": {
"flow": {
"author_uuid": "",
"created_at": ""
},
"flow_configs": [
{
"config": {
"groups": [],
"notes": [],
"tasks": [
{
"is_schedulable_executor": False,
"name": "e264bc8d-d6d3-4bef-a18e-a27ad491cd26",
"parameters": {},
"task_executor_name": "receive_file",
"task_title": "Receive File",
"visual_properties": {
"collapsed": False,
"position": {
"x": 584.5,
"y": 359.5
},
"zIndex": 2
}
},
{
"is_schedulable_executor": False,
"name": "6ef3e60a-94e7-48b0-adbf-80d3ef81c3a6",
"parameters": {
"document_url": "{{e264bc8d-d6d3-4bef-a18e-a27ad491cd26.document_url}}",
"fields": [
{
"columns": [],
"data_type": "int",
"id": "InvoiceID",
"instructions": "",
"title": "Invoice ID"
}
],
"worker": "gpt-4.1"
},
"task_executor_name": "doc_to_structured",
"task_title": "Doc To Structured",
"visual_properties": {
"collapsed": False,
"position": {
"x": 1170,
"y": 360
},
"zIndex": 2
}
}
]
},
"meta": {
"description": "Extract data from invoices",
"name": "Invoice Processing"
}
}
]
},
"expected_revision": "<string>"
}
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({
definition: {
flow: {author_uuid: '', created_at: ''},
flow_configs: [
{
config: {
groups: [],
notes: [],
tasks: [
{
is_schedulable_executor: false,
name: 'e264bc8d-d6d3-4bef-a18e-a27ad491cd26',
parameters: {},
task_executor_name: 'receive_file',
task_title: 'Receive File',
visual_properties: {collapsed: false, position: {x: 584.5, y: 359.5}, zIndex: 2}
},
{
is_schedulable_executor: false,
name: '6ef3e60a-94e7-48b0-adbf-80d3ef81c3a6',
parameters: {
document_url: '{{e264bc8d-d6d3-4bef-a18e-a27ad491cd26.document_url}}',
fields: [
{
columns: [],
data_type: 'int',
id: 'InvoiceID',
instructions: '',
title: 'Invoice ID'
}
],
worker: 'gpt-4.1'
},
task_executor_name: 'doc_to_structured',
task_title: 'Doc To Structured',
visual_properties: {collapsed: false, position: {x: 1170, y: 360}, zIndex: 2}
}
]
},
meta: {description: 'Extract data from invoices', name: 'Invoice Processing'}
}
]
},
expected_revision: '<string>'
})
};
fetch('https://flows.super.ai/api/flows/{flow_id}/validate', 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://flows.super.ai/api/flows/{flow_id}/validate",
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([
'definition' => [
'flow' => [
'author_uuid' => '',
'created_at' => ''
],
'flow_configs' => [
[
'config' => [
'groups' => [
],
'notes' => [
],
'tasks' => [
[
'is_schedulable_executor' => false,
'name' => 'e264bc8d-d6d3-4bef-a18e-a27ad491cd26',
'parameters' => [
],
'task_executor_name' => 'receive_file',
'task_title' => 'Receive File',
'visual_properties' => [
'collapsed' => false,
'position' => [
'x' => 584.5,
'y' => 359.5
],
'zIndex' => 2
]
],
[
'is_schedulable_executor' => false,
'name' => '6ef3e60a-94e7-48b0-adbf-80d3ef81c3a6',
'parameters' => [
'document_url' => '{{e264bc8d-d6d3-4bef-a18e-a27ad491cd26.document_url}}',
'fields' => [
[
'columns' => [
],
'data_type' => 'int',
'id' => 'InvoiceID',
'instructions' => '',
'title' => 'Invoice ID'
]
],
'worker' => 'gpt-4.1'
],
'task_executor_name' => 'doc_to_structured',
'task_title' => 'Doc To Structured',
'visual_properties' => [
'collapsed' => false,
'position' => [
'x' => 1170,
'y' => 360
],
'zIndex' => 2
]
]
]
],
'meta' => [
'description' => 'Extract data from invoices',
'name' => 'Invoice Processing'
]
]
]
],
'expected_revision' => '<string>'
]),
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://flows.super.ai/api/flows/{flow_id}/validate"
payload := strings.NewReader("{\n \"definition\": {\n \"flow\": {\n \"author_uuid\": \"\",\n \"created_at\": \"\"\n },\n \"flow_configs\": [\n {\n \"config\": {\n \"groups\": [],\n \"notes\": [],\n \"tasks\": [\n {\n \"is_schedulable_executor\": false,\n \"name\": \"e264bc8d-d6d3-4bef-a18e-a27ad491cd26\",\n \"parameters\": {},\n \"task_executor_name\": \"receive_file\",\n \"task_title\": \"Receive File\",\n \"visual_properties\": {\n \"collapsed\": false,\n \"position\": {\n \"x\": 584.5,\n \"y\": 359.5\n },\n \"zIndex\": 2\n }\n },\n {\n \"is_schedulable_executor\": false,\n \"name\": \"6ef3e60a-94e7-48b0-adbf-80d3ef81c3a6\",\n \"parameters\": {\n \"document_url\": \"{{e264bc8d-d6d3-4bef-a18e-a27ad491cd26.document_url}}\",\n \"fields\": [\n {\n \"columns\": [],\n \"data_type\": \"int\",\n \"id\": \"InvoiceID\",\n \"instructions\": \"\",\n \"title\": \"Invoice ID\"\n }\n ],\n \"worker\": \"gpt-4.1\"\n },\n \"task_executor_name\": \"doc_to_structured\",\n \"task_title\": \"Doc To Structured\",\n \"visual_properties\": {\n \"collapsed\": false,\n \"position\": {\n \"x\": 1170,\n \"y\": 360\n },\n \"zIndex\": 2\n }\n }\n ]\n },\n \"meta\": {\n \"description\": \"Extract data from invoices\",\n \"name\": \"Invoice Processing\"\n }\n }\n ]\n },\n \"expected_revision\": \"<string>\"\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://flows.super.ai/api/flows/{flow_id}/validate")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"definition\": {\n \"flow\": {\n \"author_uuid\": \"\",\n \"created_at\": \"\"\n },\n \"flow_configs\": [\n {\n \"config\": {\n \"groups\": [],\n \"notes\": [],\n \"tasks\": [\n {\n \"is_schedulable_executor\": false,\n \"name\": \"e264bc8d-d6d3-4bef-a18e-a27ad491cd26\",\n \"parameters\": {},\n \"task_executor_name\": \"receive_file\",\n \"task_title\": \"Receive File\",\n \"visual_properties\": {\n \"collapsed\": false,\n \"position\": {\n \"x\": 584.5,\n \"y\": 359.5\n },\n \"zIndex\": 2\n }\n },\n {\n \"is_schedulable_executor\": false,\n \"name\": \"6ef3e60a-94e7-48b0-adbf-80d3ef81c3a6\",\n \"parameters\": {\n \"document_url\": \"{{e264bc8d-d6d3-4bef-a18e-a27ad491cd26.document_url}}\",\n \"fields\": [\n {\n \"columns\": [],\n \"data_type\": \"int\",\n \"id\": \"InvoiceID\",\n \"instructions\": \"\",\n \"title\": \"Invoice ID\"\n }\n ],\n \"worker\": \"gpt-4.1\"\n },\n \"task_executor_name\": \"doc_to_structured\",\n \"task_title\": \"Doc To Structured\",\n \"visual_properties\": {\n \"collapsed\": false,\n \"position\": {\n \"x\": 1170,\n \"y\": 360\n },\n \"zIndex\": 2\n }\n }\n ]\n },\n \"meta\": {\n \"description\": \"Extract data from invoices\",\n \"name\": \"Invoice Processing\"\n }\n }\n ]\n },\n \"expected_revision\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://flows.super.ai/api/flows/{flow_id}/validate")
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 \"definition\": {\n \"flow\": {\n \"author_uuid\": \"\",\n \"created_at\": \"\"\n },\n \"flow_configs\": [\n {\n \"config\": {\n \"groups\": [],\n \"notes\": [],\n \"tasks\": [\n {\n \"is_schedulable_executor\": false,\n \"name\": \"e264bc8d-d6d3-4bef-a18e-a27ad491cd26\",\n \"parameters\": {},\n \"task_executor_name\": \"receive_file\",\n \"task_title\": \"Receive File\",\n \"visual_properties\": {\n \"collapsed\": false,\n \"position\": {\n \"x\": 584.5,\n \"y\": 359.5\n },\n \"zIndex\": 2\n }\n },\n {\n \"is_schedulable_executor\": false,\n \"name\": \"6ef3e60a-94e7-48b0-adbf-80d3ef81c3a6\",\n \"parameters\": {\n \"document_url\": \"{{e264bc8d-d6d3-4bef-a18e-a27ad491cd26.document_url}}\",\n \"fields\": [\n {\n \"columns\": [],\n \"data_type\": \"int\",\n \"id\": \"InvoiceID\",\n \"instructions\": \"\",\n \"title\": \"Invoice ID\"\n }\n ],\n \"worker\": \"gpt-4.1\"\n },\n \"task_executor_name\": \"doc_to_structured\",\n \"task_title\": \"Doc To Structured\",\n \"visual_properties\": {\n \"collapsed\": false,\n \"position\": {\n \"x\": 1170,\n \"y\": 360\n },\n \"zIndex\": 2\n }\n }\n ]\n },\n \"meta\": {\n \"description\": \"Extract data from invoices\",\n \"name\": \"Invoice Processing\"\n }\n }\n ]\n },\n \"expected_revision\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"validation_errors": [
{
"input": "<unknown>",
"loc": [
123
],
"msg": "<string>",
"type": "<string>",
"ctx": {},
"url": "<string>"
}
],
"default_reference_modes": {},
"dynamic_data": {},
"ordered_task_names": [
"<string>"
],
"output_schemas": {}
}Authorizations
JWT Bearer token authentication. Include your access token in the Authorization header as: Bearer YOUR_ACCESS_TOKEN
Example:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Path Parameters
Query Parameters
Body
Model for flow definition update request.
Flow definition in DSL format. The definition contains a 'flow' metadata object and a 'flow_configs' array with task configurations. Each task has a unique 'name' (UUID), 'task_executor_name' (the task type), 'task_title' (display name), 'parameters' (executor-specific config), and optional 'visual_properties' for UI layout. Tasks reference upstream outputs using '{{task_name.output_field}}' template syntax in their parameters to define dependencies.
{
"flow": { "author_uuid": "", "created_at": "" },
"flow_configs": [
{
"config": {
"groups": [],
"notes": [],
"tasks": [
{
"is_schedulable_executor": false,
"name": "e264bc8d-d6d3-4bef-a18e-a27ad491cd26",
"parameters": {},
"task_executor_name": "receive_file",
"task_title": "Receive File",
"visual_properties": {
"collapsed": false,
"position": { "x": 584.5, "y": 359.5 },
"zIndex": 2
}
},
{
"is_schedulable_executor": false,
"name": "6ef3e60a-94e7-48b0-adbf-80d3ef81c3a6",
"parameters": {
"document_url": "{{e264bc8d-d6d3-4bef-a18e-a27ad491cd26.document_url}}",
"fields": [
{
"columns": [],
"data_type": "int",
"id": "InvoiceID",
"instructions": "",
"title": "Invoice ID"
}
],
"worker": "gpt-4.1"
},
"task_executor_name": "doc_to_structured",
"task_title": "Doc To Structured",
"visual_properties": {
"collapsed": false,
"position": { "x": 1170, "y": 360 },
"zIndex": 2
}
}
]
},
"meta": {
"description": "Extract data from invoices",
"name": "Invoice Processing"
}
}
]
}
Optional. The revision of the flow this write is based on, from the FlowResponse you last read or saved. When set, the write applies only if the latest version is still at that revision, checked under the flow lock; otherwise nothing is saved and the response is 409 with code revision_conflict and details.current_revision. Reload the flow, re-apply your change and retry. When omitted, the write applies on top of whatever is latest (last writer wins).
Response
Validation result returned
Response model for validate-only endpoint (no persistence).