Skip to main content
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

Authorization
string
header
required

JWT token for authentication

Body

application/json

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).

component_type
enum<string>
required
Available options:
flow
name
string
required

Flow name

Example:

"document_processing"

start_node
string
required

Reference to the StartNode name

Example:

"start"

nodes
object[]
required

All nodes in the flow

Union of all Agent Spec node types. Discriminated by component_type.

control_flow_connections
object[]
required

Execution order edges

description
string

Human-readable description

data_flow_connections
object[] | null

Data routing edges. When null, data flows by matching input/output property names across connected nodes.

metadata
object

Extension metadata

Response

Workflow imported successfully

success
boolean

Whether the request was successful

data
object

Response data (type varies by endpoint)

message
string

Response message

error
string

Error message (if any)