Flows
A flow represents the structured path a conversation follows to fulfill a user's intent, whether that's answering FAQs, completing a task, or guiding a user toward an action. Each flow combines logic, prompts, and responses into a graph of connected nodes. Once attached to an application and deployed, the application can execute the flow and automate the corresponding task. A single flow can be shared across multiple applications in your workspace.
ListFlows
Lists all flows in the workspace. Returns summary information without node details.
Input
| Parameter | Type | Required |
|---|---|---|
nextToken |
string | No |
maxResults |
integer | No |
Sample Request
await client.send(new ListFlowsCommand({}));
Output
{ "items": [ { "flowId": "MainFlow", "description": "Handles customer support inquiries", "mainLanguageCode": "en-US", "languageCodes": ["en-US", "es-ES"], "slotTypes": [], "contextVariables": [], "metadata": { "path": "/support", "tags": ["production"] }, "saveId": "save-abc123", "createdAt": "2026-08-01T12:00:00.000Z", "updatedAt": "2026-08-01T14:00:00.000Z", "updatedBy": "ci-deploy-bot" } ], "nextToken": null }
Errors
-
ValidationException(400) -
InternalServerException(500) -
ThrottlingException(429)
CreateFlow
Creates a new flow with nodes (conversation logic), and optional slot types and context variables.
Input
| Parameter | Type | Required |
|---|---|---|
flowId |
string | Yes |
description |
string | No |
nodes |
object | Yes |
aiDescription |
string | No |
untrained |
boolean | No |
mainLanguageCode |
string | No |
languageCode |
enum | No |
languageCodes |
array | No |
slotTypes |
array | No |
contextVariables |
array | No |
mcp |
object | No |
metadata |
object | No |
Sample Request
const created = await client.send(new CreateFlowCommand({ flowId: "MainFlow", description: "Handles customer support inquiries", mainLanguageCode: "en-US", languageCodes: ["en-US"], slotTypes: [], contextVariables: [], nodes: { "a0000000-0000-4000-8000-000000000001": { nodeId: "a0000000-0000-4000-8000-000000000001", type: "start", childNodes: [{ nodeId: "a0000000-0000-4000-8000-000000000002" }], }, "a0000000-0000-4000-8000-000000000002": { nodeId: "a0000000-0000-4000-8000-000000000002", type: "basic", messages: [{ body: "Hello! How can I help you today?", type: "text" }], childNodes: [{ nodeId: "a0000000-0000-4000-8000-000000000003" }], }, "a0000000-0000-4000-8000-000000000003": { nodeId: "a0000000-0000-4000-8000-000000000003", type: "end", }, }, metadata: { path: "/support", tags: ["production"] }, }));
Output
{ "flowId": "MainFlow", "description": "Handles customer support inquiries", "mainLanguageCode": "en-US", "languageCodes": ["en-US"], "slotTypes": [], "contextVariables": [], "nodes": { "a0000000-0000-4000-8000-000000000001": { "nodeId": "a0000000-0000-4000-8000-000000000001", "type": "start", "childNodes": [ { "nodeId": "a0000000-0000-4000-8000-000000000002" } ] }, "a0000000-0000-4000-8000-000000000002": { "nodeId": "a0000000-0000-4000-8000-000000000002", "type": "basic", "messages": [ { "type": "text", "body": "Hello! How can I help you today?", "messageId": "12a13e04-0bc1-4361-9505-8e9c7a2aeb7b" } ] }, "a0000000-0000-4000-8000-000000000003": { "nodeId": "a0000000-0000-4000-8000-000000000003", "type": "end", "messages": [] } }, "metadata": { "path": "/support", "tags": ["production"] }, "saveId": "save-abc123", "createdAt": "2026-08-01T12:00:00.000Z", "updatedAt": "2026-08-01T12:00:00.000Z", "updatedBy": "ci-deploy-bot" }
Errors
-
ValidationException(400) -
ConflictException(409) -
InternalServerException(500) -
ThrottlingException(429)
GetFlow
Gets the full flow definition including all nodes, attached slots, and context variables.
Input
| Parameter | Type | Required |
|---|---|---|
flowIdentifier |
string | Yes |
languageCode |
string | No |
Sample Request
const fetched = await client.send(new GetFlowCommand({ flowIdentifier: "MainFlow", }));
Output
{ "flowId": "MainFlow", "description": "Handles customer support inquiries", "mainLanguageCode": "en-US", "languageCodes": ["en-US"], "slotTypes": [], "contextVariables": [], "nodes": { "a0000000-0000-4000-8000-000000000001": { "nodeId": "a0000000-0000-4000-8000-000000000001", "type": "start", "childNodes": [ { "nodeId": "a0000000-0000-4000-8000-000000000002" } ] }, "a0000000-0000-4000-8000-000000000002": { "nodeId": "a0000000-0000-4000-8000-000000000002", "type": "basic", "messages": [ { "type": "text", "body": "Hello! How can I help you today?", "messageId": "12a13e04-0bc1-4361-9505-8e9c7a2aeb7b" } ] }, "a0000000-0000-4000-8000-000000000003": { "nodeId": "a0000000-0000-4000-8000-000000000003", "type": "end", "messages": [] } }, "metadata": { "path": "/support", "tags": ["production"] }, "saveId": "save-abc123", "createdAt": "2026-08-01T12:00:00.000Z", "updatedAt": "2026-08-01T12:00:00.000Z", "updatedBy": "ci-deploy-bot" }
Errors
-
ValidationException(400) -
ResourceNotFoundException(404) -
InternalServerException(500) -
ThrottlingException(429)
UpdateFlow
Updates an existing flow. Only include fields you want to change. Changes do not affect deployed applications until a new build is created.
Input
| Parameter | Type | Required |
|---|---|---|
flowIdentifier |
string | Yes |
nodes |
object | No |
description |
string | No |
aiDescription |
string | No |
untrained |
boolean | No |
mainLanguageCode |
string | No |
languageCode |
enum | No |
languageCodes |
array | No |
slotTypes |
array | No |
contextVariables |
array | No |
mcp |
object | No |
metadata |
object | No |
Sample Request
await client.send(new UpdateFlowCommand({ flowIdentifier: "MainFlow", description: "Updated Primary support flow", mainLanguageCode: "en-US", languageCodes: ["en-US"], slotTypes: [], contextVariables: [], nodes: { "a0000000-0000-4000-8000-000000000001": { nodeId: "a0000000-0000-4000-8000-000000000001", type: "start", childNodes: [{ nodeId: "a0000000-0000-4000-8000-000000000002" }], }, "a0000000-0000-4000-8000-000000000002": { nodeId: "a0000000-0000-4000-8000-000000000002", type: "basic", messages: [{ body: "Hello! How can I help you today?", type: "text" }], childNodes: [{ nodeId: "a0000000-0000-4000-8000-000000000003" }], }, "a0000000-0000-4000-8000-000000000003": { nodeId: "a0000000-0000-4000-8000-000000000003", type: "end", }, }, metadata: { path: "/support", tags: ["production"] }, }));
Output
{ "flowId": "MainFlow", "description": "Updated Primary support flow", "mainLanguageCode": "en-US", "languageCodes": ["en-US"], "slotTypes": [], "contextVariables": [], "nodes": { "a0000000-0000-4000-8000-000000000001": { "nodeId": "a0000000-0000-4000-8000-000000000001", "type": "start", "childNodes": [ { "nodeId": "a0000000-0000-4000-8000-000000000002" } ] }, "a0000000-0000-4000-8000-000000000002": { "nodeId": "a0000000-0000-4000-8000-000000000002", "type": "basic", "messages": [ { "type": "text", "body": "Hello! How can I help you today?", "messageId": "12a13e04-0bc1-4361-9505-8e9c7a2aeb7b" } ] }, "a0000000-0000-4000-8000-000000000003": { "nodeId": "a0000000-0000-4000-8000-000000000003", "type": "end", "messages": [] } }, "metadata": { "path": "/support", "tags": ["production"] }, "saveId": "save-abc123", "createdAt": "2026-08-01T12:00:00.000Z", "updatedAt": "2026-08-01T12:00:00.000Z", "updatedBy": "ci-deploy-bot" }
Errors
-
ValidationException(400) -
ResourceNotFoundException(404) -
ConflictException(409) -
InternalServerException(500) -
ThrottlingException(429)
DeleteFlow
Deletes a flow. If the flow is attached to applications, detach it first.
Input
| Parameter | Type | Required |
|---|---|---|
flowIdentifier |
string | Yes |
Sample Request
await client.send(new DeleteFlowCommand({ flowIdentifier: "TestFlowSDKClient", }));
Output
No response body.
Errors
-
ValidationException(400) -
ResourceNotFoundException(404) -
InternalServerException(500) -
ThrottlingException(429)
Request Parameters
flowId
Type: String
The flow identifier. Alphanumeric characters, 3–64 characters.
flowIdentifier
Type: String
The flow ID used in Get, Update, and Delete operations.
description
Type: String
Flow description. Max 200 characters.
aiDescription
Type: String
AI-readable description of what this flow does. Max 1000 characters. Used by generative features to understand flow purpose.
untrained
Type: Boolean
Whether to skip NLP training for this flow.
mainLanguageCode
Type: String
Primary language. See Common Types.
languageCode
Type: String
Language code. See Common Types.
languageCodes
Type: Array
Supported languages. See Common Types.
nodes
Type: Object
The flow node graph. A map of node IDs to node objects. See Flow Node.
slotTypes
Type: Array
Slot types attached to this flow. See Attached Slot.
contextVariables
Type: Array
Flow-scoped context variables. Each entry: { "name": "varName", "type": "text|number|boolean" }.
mcp
Type: Object
MCP endpoint configuration: { "input": { "name": "...", "schema": {...} }, "output": { "name": "...", "schema": {...} } }.
metadata
Type: Object
Organizational metadata. See Common Types.
magicLayout
Type: Boolean
Whether to apply automatic layout during validation.
saveId
Type: String
Internal save identifier (read-only).
createdAt
Type: String
When the flow was created (ISO 8601).
updatedAt
Type: String
When the flow was last modified (ISO 8601).
updatedBy
Type: String
The identity of who last modified the flow.
nextToken
Type: String
Pagination token. See Common Types.
maxResults
Type: Integer
Max items per page (1–500). See Common Types.
Attached Slot
| Field | Type | Required |
|---|---|---|
name |
string | Yes |
type |
string | Yes |
sensitive |
boolean | No |
examples |
array | No |
aiDescription |
string | No |
regex |
string | No |
name
Type: String
Slot name. Alphabetic characters only, 3–30 characters.
type
Type: String
The slot type reference.
sensitive
Type: Boolean
Whether this slot captures sensitive data.
examples
Type: Array
Example values for this slot (array of strings).
aiDescription
Type: String
AI-readable description of what this slot captures. Max 1000 characters.
regex
Type: String
Optional regex pattern for validation. Max 300 characters.
Flow Node
| Field | Type | Required |
|---|---|---|
nodeId |
string | Yes |
type |
enum | Yes |
childNodes |
array | No |
dataRequests |
array | No |
messages |
array | No |
modalities |
object | No |
canvasMetadata |
object | No |
metadata |
object | No |
nodeId
Type: String
Unique node identifier.
type
Type: String
The node type. One of: basic, start, end,
user_input, user_choice, choice,
data_request, redirect, escalate, split,
loop, define, wait, transform,
note, knowledge_base, generative_text,
generative_task, generative_journey, multimodal,
intent_capture, application_handoff.
childNodes
Type: Array
Connected child nodes. Each entry: { "nodeId": "...", "name": "...", "conditions": [...] }.
dataRequests
Type: Array
Data requests triggered by this node.
messages
Type: Array
Messages displayed at this node.
modalities
Type: Object
Modality-specific content (free-form).
canvasMetadata
Type: Object
Visual editor position and display settings: { "x": 100, "y": 200, "width": 300, "height": 150, "color": "#fff", "pageId": "..." }.
metadata
Type: Object
Node-type-specific configuration. The fields available depend on the node type.
Contains configuration like generativeText, choice,
redirect, knowledgeBase, loop, multimodal,
stateModifications, tags, name, timeout,
etc.