POST /v1/workflows/validate
Validate a workflow definition without saving
POST
/v1/workflows/validate
Validate a workflow definition without saving
Request Body required
Workflow definition and name to validate
application/jsonOne of:
Option 1
Option 2
definition
object
REQUIRED
Definition is the full workflow graph to execute. Must contain a
"root" node with type "manual". All action nodes referenced in
children arrays must be present.
blockExpansions
object
Set on run snapshots only (not workflow DB)
inputSchema
object[]
Array of:
description
string
key
string
required
boolean
type
string
"string", "number", "boolean", "object", "array"
nodes
object
REQUIRED
sensitivePropKeys
string[]
Legacy: kept for old runs; no longer populated for new workflows
Array of:
name
string
Responses
200
OK
application/jsoncode
integer
data
object
errors
object[]
Array of:
field
string
Optional field name
message
string
Human readable error message
nodeId
string
Optional node ID
nodeName
string
Optional node display name
type
string
name, nodes, root, connectivity, pattern, variable
valid
boolean
message
string
requestId
string
400
Bad Request
curl -X POST 'https://api.example.com/v1/workflows/validate' \ -H 'Authorization: Bearer YOUR_API_TOKEN' \ -H 'Content-Type: application/json' \ -d '{}'
const response = await fetch('https://api.example.com/v1/workflows/validate', { method: 'POST', headers: { "Authorization": "Bearer YOUR_API_TOKEN", "Content-Type": "application/json" }, body: JSON.stringify({})});const data = await response.json();console.log(data);
import requestsheaders = { 'Authorization': 'Bearer YOUR_API_TOKEN'}response = requests.post('https://api.example.com/v1/workflows/validate', headers=headers, json={})print(response.json())
package mainimport ( "fmt" "io" "net/http" "strings")func main() { body := strings.NewReader(`{}`) req, _ := http.NewRequest("POST", "https://api.example.com/v1/workflows/validate", body) req.Header.Set("Authorization", "Bearer YOUR_API_TOKEN") req.Header.Set("Content-Type", "application/json") resp, _ := http.DefaultClient.Do(req) defer resp.Body.Close() result, _ := io.ReadAll(resp.Body) fmt.Println(string(result))}
200
Response
{ "code": 200, "data": { "errors": [ { "field": "<string>", "message": "<string>", "nodeId": "<string>", "nodeName": "<string>", "type": "<string>" } ], "valid": true }, "message": "success", "requestId": "abc-123"}
API Playground
Try this endpoint
POST
/v1/workflows/validate
