Import workflow from Agent Spec JSON
curl --request POST \
--url http://localhost:5173/api/flowdrop/workflows/import/agentspec \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"component_type": "flow",
"name": "document_processing",
"start_node": "start",
"nodes": [
{
"component_type": "start_node",
"name": "process_input",
"description": "<string>",
"inputs": [
{
"title": "user_query",
"type": "string",
"description": "<string>",
"default": "<unknown>",
"enum": [
"<unknown>"
],
"items": "<unknown>",
"properties": {},
"required": [
"<string>"
]
}
],
"outputs": [
{
"title": "user_query",
"type": "string",
"description": "<string>",
"default": "<unknown>",
"enum": [
"<unknown>"
],
"items": "<unknown>",
"properties": {},
"required": [
"<string>"
]
}
],
"metadata": {}
}
],
"control_flow_connections": [
{
"name": "start_to_process",
"from_node": "start",
"to_node": "process_input",
"from_branch": "high_priority"
}
],
"description": "<string>",
"data_flow_connections": [
{
"name": "query_to_llm",
"source_node": "process_input",
"source_output": "processed_text",
"destination_node": "llm_generate",
"destination_input": "prompt"
}
],
"metadata": {}
}
'{
"success": true,
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "My AI Workflow",
"nodes": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "calculator",
"position": {
"x": 100,
"y": 200
},
"data": {
"label": "Math Calculator",
"config": {
"instanceTitle": "Email Summarizer",
"instanceDescription": "Summarizes incoming emails into 3 bullet points",
"instanceBadge": "LLM",
"nodeType": "simple",
"model": "gpt-4o-mini",
"temperature": 0.7,
"maxTokens": 1000,
"apiKey": "sk-...",
"dynamicInputs": [
{
"name": "extra_data",
"label": "Extra Data",
"dataType": "json",
"required": false
}
],
"dynamicOutputs": [
{
"name": "result",
"label": "Result",
"dataType": "string"
}
],
"branches": [
{
"name": "success",
"label": "Success",
"condition": "status === 200"
},
{
"name": "error",
"label": "Error",
"isDefault": true
}
]
},
"metadata": {
"id": "calculator",
"name": "Calculator",
"description": "Perform mathematical operations on input data",
"category": "processing",
"version": "1.0.0",
"inputs": [
{
"id": "json",
"name": "JSON Response",
"dataType": "mixed",
"required": false,
"description": "Parsed JSON response from the HTTP request",
"defaultValue": "<unknown>",
"schema": {
"type": "object",
"properties": {
"user": {
"type": "object",
"title": "User",
"description": "User information",
"properties": {
"id": {
"type": "integer",
"description": "User ID"
},
"name": {
"type": "string",
"description": "User full name"
},
"email": {
"type": "string",
"description": "User email address"
},
"address": {
"type": "object",
"title": "Address",
"properties": {
"street": {
"type": "string"
},
"city": {
"type": "string"
},
"country": {
"type": "string"
}
}
}
}
},
"orders": {
"type": "array",
"title": "Orders",
"description": "List of user orders",
"items": {
"type": "object",
"properties": {
"order_id": {
"type": "string"
},
"product_name": {
"type": "string"
},
"quantity": {
"type": "integer"
},
"price": {
"type": "number"
}
}
}
}
}
}
}
],
"outputs": [
{
"id": "json",
"name": "JSON Response",
"dataType": "mixed",
"required": false,
"description": "Parsed JSON response from the HTTP request",
"defaultValue": "<unknown>",
"schema": {
"type": "object",
"properties": {
"user": {
"type": "object",
"title": "User",
"description": "User information",
"properties": {
"id": {
"type": "integer",
"description": "User ID"
},
"name": {
"type": "string",
"description": "User full name"
},
"email": {
"type": "string",
"description": "User email address"
},
"address": {
"type": "object",
"title": "Address",
"properties": {
"street": {
"type": "string"
},
"city": {
"type": "string"
},
"country": {
"type": "string"
}
}
}
}
},
"orders": {
"type": "array",
"title": "Orders",
"description": "List of user orders",
"items": {
"type": "object",
"properties": {
"order_id": {
"type": "string"
},
"product_name": {
"type": "string"
},
"quantity": {
"type": "integer"
},
"price": {
"type": "number"
}
}
}
}
}
}
}
],
"supportedTypes": [],
"icon": "mdi:calculator",
"color": "#3b82f6",
"badge": "API",
"portDataType": "trigger",
"configSchema": {
"type": "object",
"properties": {},
"required": [
"<string>"
],
"additionalProperties": false
},
"tags": [
"math",
"calculation",
"processing"
],
"formats": [
"agentspec"
],
"extensions": {
"ui": {
"hideUnconnectedHandles": true,
"style": {
"opacity": 0.8
}
},
"agentspec:component_type": "llm_node",
"myapp:analytics": {
"trackUsage": true,
"customField": "value"
}
}
},
"isProcessing": true,
"error": "<string>",
"nodeId": "<string>",
"executionInfo": {
"executionCount": 5,
"isExecuting": true,
"lastExecuted": "2023-11-07T05:31:56Z",
"lastExecutionDuration": 1500,
"lastError": "<string>"
},
"extensions": {
"ui": {
"hideUnconnectedHandles": true,
"style": {
"opacity": 0.8
}
},
"agentspec:component_type": "llm_node",
"myapp:analytics": {
"trackUsage": true,
"customField": "value"
}
}
},
"deletable": true
}
],
"edges": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"source": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"target": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sourceHandle": "<string>",
"targetHandle": "<string>",
"selectable": true,
"deletable": true,
"data": {
"label": "<string>",
"condition": "<string>",
"metadata": {
"sourcePortDataType": "<string>"
},
"isToolConnection": true,
"targetNodeType": "<string>",
"targetCategory": "<string>"
}
}
],
"metadata": {
"schemaVersion": "1.0.0",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"author": "admin",
"tags": [
"ai",
"production"
],
"versionId": "<string>",
"updateNumber": 123,
"format": "flowdrop"
},
"description": "<string>",
"config": {}
},
"message": "<string>",
"error": "<string>"
}Agent Spec
Import workflow from Agent Spec JSON
Convert an Agent Spec flow or document to a FlowDrop workflow.
The conversion:
- Maps Agent Spec component types to FlowDrop node types
- Merges control_flow_connections and data_flow_connections into unified edges
- Auto-layouts nodes if no position metadata is present
- Preserves Agent Spec component_type in FlowDrop extensions
POST
/
workflows
/
import
/
agentspec
Import workflow from Agent Spec JSON
curl --request POST \
--url http://localhost:5173/api/flowdrop/workflows/import/agentspec \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"component_type": "flow",
"name": "document_processing",
"start_node": "start",
"nodes": [
{
"component_type": "start_node",
"name": "process_input",
"description": "<string>",
"inputs": [
{
"title": "user_query",
"type": "string",
"description": "<string>",
"default": "<unknown>",
"enum": [
"<unknown>"
],
"items": "<unknown>",
"properties": {},
"required": [
"<string>"
]
}
],
"outputs": [
{
"title": "user_query",
"type": "string",
"description": "<string>",
"default": "<unknown>",
"enum": [
"<unknown>"
],
"items": "<unknown>",
"properties": {},
"required": [
"<string>"
]
}
],
"metadata": {}
}
],
"control_flow_connections": [
{
"name": "start_to_process",
"from_node": "start",
"to_node": "process_input",
"from_branch": "high_priority"
}
],
"description": "<string>",
"data_flow_connections": [
{
"name": "query_to_llm",
"source_node": "process_input",
"source_output": "processed_text",
"destination_node": "llm_generate",
"destination_input": "prompt"
}
],
"metadata": {}
}
'{
"success": true,
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "My AI Workflow",
"nodes": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "calculator",
"position": {
"x": 100,
"y": 200
},
"data": {
"label": "Math Calculator",
"config": {
"instanceTitle": "Email Summarizer",
"instanceDescription": "Summarizes incoming emails into 3 bullet points",
"instanceBadge": "LLM",
"nodeType": "simple",
"model": "gpt-4o-mini",
"temperature": 0.7,
"maxTokens": 1000,
"apiKey": "sk-...",
"dynamicInputs": [
{
"name": "extra_data",
"label": "Extra Data",
"dataType": "json",
"required": false
}
],
"dynamicOutputs": [
{
"name": "result",
"label": "Result",
"dataType": "string"
}
],
"branches": [
{
"name": "success",
"label": "Success",
"condition": "status === 200"
},
{
"name": "error",
"label": "Error",
"isDefault": true
}
]
},
"metadata": {
"id": "calculator",
"name": "Calculator",
"description": "Perform mathematical operations on input data",
"category": "processing",
"version": "1.0.0",
"inputs": [
{
"id": "json",
"name": "JSON Response",
"dataType": "mixed",
"required": false,
"description": "Parsed JSON response from the HTTP request",
"defaultValue": "<unknown>",
"schema": {
"type": "object",
"properties": {
"user": {
"type": "object",
"title": "User",
"description": "User information",
"properties": {
"id": {
"type": "integer",
"description": "User ID"
},
"name": {
"type": "string",
"description": "User full name"
},
"email": {
"type": "string",
"description": "User email address"
},
"address": {
"type": "object",
"title": "Address",
"properties": {
"street": {
"type": "string"
},
"city": {
"type": "string"
},
"country": {
"type": "string"
}
}
}
}
},
"orders": {
"type": "array",
"title": "Orders",
"description": "List of user orders",
"items": {
"type": "object",
"properties": {
"order_id": {
"type": "string"
},
"product_name": {
"type": "string"
},
"quantity": {
"type": "integer"
},
"price": {
"type": "number"
}
}
}
}
}
}
}
],
"outputs": [
{
"id": "json",
"name": "JSON Response",
"dataType": "mixed",
"required": false,
"description": "Parsed JSON response from the HTTP request",
"defaultValue": "<unknown>",
"schema": {
"type": "object",
"properties": {
"user": {
"type": "object",
"title": "User",
"description": "User information",
"properties": {
"id": {
"type": "integer",
"description": "User ID"
},
"name": {
"type": "string",
"description": "User full name"
},
"email": {
"type": "string",
"description": "User email address"
},
"address": {
"type": "object",
"title": "Address",
"properties": {
"street": {
"type": "string"
},
"city": {
"type": "string"
},
"country": {
"type": "string"
}
}
}
}
},
"orders": {
"type": "array",
"title": "Orders",
"description": "List of user orders",
"items": {
"type": "object",
"properties": {
"order_id": {
"type": "string"
},
"product_name": {
"type": "string"
},
"quantity": {
"type": "integer"
},
"price": {
"type": "number"
}
}
}
}
}
}
}
],
"supportedTypes": [],
"icon": "mdi:calculator",
"color": "#3b82f6",
"badge": "API",
"portDataType": "trigger",
"configSchema": {
"type": "object",
"properties": {},
"required": [
"<string>"
],
"additionalProperties": false
},
"tags": [
"math",
"calculation",
"processing"
],
"formats": [
"agentspec"
],
"extensions": {
"ui": {
"hideUnconnectedHandles": true,
"style": {
"opacity": 0.8
}
},
"agentspec:component_type": "llm_node",
"myapp:analytics": {
"trackUsage": true,
"customField": "value"
}
}
},
"isProcessing": true,
"error": "<string>",
"nodeId": "<string>",
"executionInfo": {
"executionCount": 5,
"isExecuting": true,
"lastExecuted": "2023-11-07T05:31:56Z",
"lastExecutionDuration": 1500,
"lastError": "<string>"
},
"extensions": {
"ui": {
"hideUnconnectedHandles": true,
"style": {
"opacity": 0.8
}
},
"agentspec:component_type": "llm_node",
"myapp:analytics": {
"trackUsage": true,
"customField": "value"
}
}
},
"deletable": true
}
],
"edges": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"source": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"target": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sourceHandle": "<string>",
"targetHandle": "<string>",
"selectable": true,
"deletable": true,
"data": {
"label": "<string>",
"condition": "<string>",
"metadata": {
"sourcePortDataType": "<string>"
},
"isToolConnection": true,
"targetNodeType": "<string>",
"targetCategory": "<string>"
}
}
],
"metadata": {
"schemaVersion": "1.0.0",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"author": "admin",
"tags": [
"ai",
"production"
],
"versionId": "<string>",
"updateNumber": 123,
"format": "flowdrop"
},
"description": "<string>",
"config": {}
},
"message": "<string>",
"error": "<string>"
}Authorizations
BearerAuthSessionAuth
JWT token for authentication
Body
application/json
- Option 1
- Option 2
Agent Spec Flow — a directed, potentially cyclic graph of nodes. Flows function as "subroutines" encapsulating repeatable processes. They separate control-flow (execution order) from data-flow (data routing).
Available options:
flow Flow name
Example:
"document_processing"
Reference to the StartNode name
Example:
"start"
All nodes in the flow
Union of all Agent Spec node types. Discriminated by component_type.
- Option 1
- Option 2
- Option 3
- Option 4
- Option 5
- Option 6
- Option 7
- Option 8
- Option 9
Show child attributes
Show child attributes
Execution order edges
Show child attributes
Show child attributes
Human-readable description
Data routing edges. When null, data flows by matching input/output property names across connected nodes.
Show child attributes
Show child attributes
Extension metadata
Was this page helpful?
⌘I