Voiceflow bearer token
curl --request GET \
--url https://realtime-api.voiceflow.com/v1/stable/workflow/<workflowID> \
--header 'Authorization: Bearer <token>'const response = await fetch('https://realtime-api.voiceflow.com/v1/stable/workflow/<workflowID>?projectID=<projectID>&environmentAlias=<environmentAlias>&cursor=<cursor>', {
method: 'GET',
headers: {
Authorization: 'Bearer <token>',
},
});
const data = await response.json();import requests
response = requests.get(
'https://realtime-api.voiceflow.com/v1/stable/workflow/<workflowID>?projectID=<projectID>&environmentAlias=<environmentAlias>&cursor=<cursor>',
headers={'Authorization': 'Bearer <token>'},
)
data = response.json()vf workflow get --workflow-id <workflowID> --project-id <projectID> --environment-alias <environmentAlias> --cursor <cursor>{
"workflow": {
"id": "<string>",
"name": "<string>",
"description": "<string>",
"counts": {
"blocks": 0,
"steps": 0,
"unreachableBlocks": 0,
"danglingLinks": 0
}
},
"entry": {
"stepID": "<string>",
"name": "<string>",
"next": "<string>",
"actions": [
{
"id": "<string>",
"kind": "<StableWorkflowStepKind>",
"content": "<StableWorkflowStepContent>",
"warnings": [
"<StableWorkflowDiagnostic>"
]
}
]
},
"blocks": [
{
"id": "<string>",
"name": "<string>",
"inboundFrom": [
"<StableWorkflowInbound>"
],
"steps": [
"<StableWorkflowStep>"
]
}
],
"orphanSteps": [
{
"id": "<string>",
"kind": "message",
"exitClass": "sequential",
"content": "<StableWorkflowStepMessageContent>",
"fallsThroughTo": "<string>",
"suppressedPorts": [
"<string>"
],
"links": [
"<StableWorkflowLink>"
],
"reconciledPorts": "<StableWorkflowReconciledPorts>",
"warnings": [
"<StableWorkflowDiagnostic>"
]
}
],
"warnings": [
{
"code": "BRANCH_NOT_LAST",
"detail": "<string>"
}
],
"truncated": {
"blocks": 0,
"returned": 0,
"nextCursor": "<string>"
}
}Reads a workflow as blocks of steps, each with its kind, content and links. Messages and prompts appear as IDs, not their text. Read it before any edit to get the block and step IDs.
curl --request GET \
--url https://realtime-api.voiceflow.com/v1/stable/workflow/<workflowID> \
--header 'Authorization: Bearer <token>'const response = await fetch('https://realtime-api.voiceflow.com/v1/stable/workflow/<workflowID>?projectID=<projectID>&environmentAlias=<environmentAlias>&cursor=<cursor>', {
method: 'GET',
headers: {
Authorization: 'Bearer <token>',
},
});
const data = await response.json();import requests
response = requests.get(
'https://realtime-api.voiceflow.com/v1/stable/workflow/<workflowID>?projectID=<projectID>&environmentAlias=<environmentAlias>&cursor=<cursor>',
headers={'Authorization': 'Bearer <token>'},
)
data = response.json()vf workflow get --workflow-id <workflowID> --project-id <projectID> --environment-alias <environmentAlias> --cursor <cursor>{
"workflow": {
"id": "<string>",
"name": "<string>",
"description": "<string>",
"counts": {
"blocks": 0,
"steps": 0,
"unreachableBlocks": 0,
"danglingLinks": 0
}
},
"entry": {
"stepID": "<string>",
"name": "<string>",
"next": "<string>",
"actions": [
{
"id": "<string>",
"kind": "<StableWorkflowStepKind>",
"content": "<StableWorkflowStepContent>",
"warnings": [
"<StableWorkflowDiagnostic>"
]
}
]
},
"blocks": [
{
"id": "<string>",
"name": "<string>",
"inboundFrom": [
"<StableWorkflowInbound>"
],
"steps": [
"<StableWorkflowStep>"
]
}
],
"orphanSteps": [
{
"id": "<string>",
"kind": "message",
"exitClass": "sequential",
"content": "<StableWorkflowStepMessageContent>",
"fallsThroughTo": "<string>",
"suppressedPorts": [
"<string>"
],
"links": [
"<StableWorkflowLink>"
],
"reconciledPorts": "<StableWorkflowReconciledPorts>",
"warnings": [
"<StableWorkflowDiagnostic>"
]
}
],
"warnings": [
{
"code": "BRANCH_NOT_LAST",
"detail": "<string>"
}
],
"truncated": {
"blocks": 0,
"returned": 0,
"nextCursor": "<string>"
}
}Authorizations
Query Parameters
Response
200 - application/jsonReturns the workflow's name, description and counts, then a page of its blocks. When there are more blocks, truncated.nextCursor holds the value to send as cursor for the next page.
Show child attributes
The port actions the start runs before next, in run order. Absent when there are none.
Show child attributes
What the step does. api, function, integration and mcp are Tool steps. playbook and operator are Agent steps. goToBlock jumps to a block or a workflow start and ends the path. callForward transfers a phone call and ends the path. legacy is a step these operations show but cannot change.
message, end, set, workflow, listen, condition, buttons, card, carousel, code, api, function, integration, mcp, playbook, operator, crew, handoff, legacy, goToBlock, callForwardThe step's settings, shaped by its kind. A step these operations cannot show reads as readOnly.
Show child attributes
Show child attributes
responseType, messageID, waitForUserResponseresponseType, promptID, waitForUserResponseShow child attributes
responseType, messageID, responseEnabledresponseType, promptID, responseEnabledShow child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Plain text; markdown is not interpreted. {variable_name} inserts a variable or entity, {variable_name.path} a field of a variable. Escape a literal { or \ with a backslash. A name matching neither is stored as literal text and reported in unresolvedReferences; secrets are not available here.
At most 50 blocks: breadth-first from the start, then blocks nothing reaches.
Show child attributes
The steps in the order they run.
Show child attributes
What the step does. api, function, integration and mcp are Tool steps. playbook and operator are Agent steps. goToBlock jumps to a block or a workflow start and ends the path. callForward transfers a phone call and ends the path. legacy is a step these operations show but cannot change.
message, end, set, workflow, listen, condition, buttons, card, carousel, code, api, function, integration, mcp, playbook, operator, crew, handoff, legacy, goToBlock, callForwardHow the step leaves. sequential: it continues to the step below it, or through next when it is last. branch: it leaves through one of its links, so it must be last. async-branch: a Card or Carousel, whose linked buttons run from any position. terminal: it ends the path.
sequential, branch, async-branch, terminalThe step's settings, shaped by its kind. A step these operations cannot show reads as readOnly.
Show child attributes
The port actions this exit runs, in order, before it reaches to.
Steps that no block lists. They never run.
Was this page helpful?
Thanks for your feedback.