Skip to main content
POST
/
workflows
/
validate
Validate workflow
curl --request POST \
  --url http://localhost:5173/api/flowdrop/workflows/validate \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --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",
          "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>",
        "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": {}
}
'
{
  "success": true,
  "data": {
    "valid": true,
    "errors": [
      "<string>"
    ],
    "warnings": [
      "<string>"
    ],
    "suggestions": [
      "<string>"
    ]
  },
  "message": "<string>",
  "error": "<string>"
}

Authorizations

Authorization
string
header
required

JWT token for authentication

Body

application/json
id
string<uuid>
required

Workflow UUID

name
string
required

Workflow name

Maximum string length: 200
Example:

"My AI Workflow"

nodes
object[]
required

Workflow nodes

edges
object[]
required

Workflow edges

metadata
object
required
description
string

Workflow description

Maximum string length: 1000
config
object

Custom workflow-level configuration values. Populated when a workflowSettingsSchema is provided to the editor.

Response

Validation results

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)