Export Workflow
Export a workflow as a portable JSON envelope that POST /api/v1/workflows/import accepts verbatim. Credential and password field values stored on blocks are redacted from the payload, while {{ENV_VAR}} references and block positions are preserved. Workflow variables are returned as stored — they are plaintext configuration readable by anyone with workspace read, and secrets belong in environment variables, which travel as unresolved references. Requires read permission on the workflow's workspace. Returns 404 when the workflow does not exist or you do not have access to it. Workspace-scoped bindings (knowledge bases, workspace files, channels, projects, folders, MCP servers) are cleared, since those ids do not resolve in another workspace — an imported copy needs them re-selected.
Path parameters
The unique workflow identifier.
Response
The workflow export envelope.
Example response
{
"data": {
"version": "1.0",
"exportedAt": "2026-06-20T14:15:22Z",
"workflow": {
"id": "3b1f7c92-8d4e-4a6b-9c0d-5e2f8a714b36",
"name": "Customer Support Agent",
"description": "Routes incoming support tickets",
"workspaceId": "a91c4b2e-6d3f-4e8a-b5c7-0d9e2f1a8c64"
},
"state": {
"blocks": {},
"edges": [],
"loops": {},
"parallels": {},
"metadata": {
"name": "Customer Support Agent",
"description": "Routes incoming support tickets",
"exportedAt": "2026-06-20T14:15:22Z"
},
"variables": {}
}
},
"limits": {
"workflowExecutionRateLimit": {
"sync": {
"requestsPerMinute": 60,
"maxBurst": 10,
"remaining": 59,
"resetAt": "2025-06-20T14:16:00Z"
},
"async": {
"requestsPerMinute": 60,
"maxBurst": 10,
"remaining": 59,
"resetAt": "2025-06-20T14:16:00Z"
}
},
"usage": {
"currentPeriodCost": 1.25,
"limit": 50,
"plan": "pro"
}
}
}