Skip to main content
Workflows

Workflow State

Shared, mutable state available to every step in a workflow run. Use it for cross-step context without mutating the main data flow.

Initialize State​

Provide an initial state when you run the workflow:

const result = await workflow.run(
{ userId: "user-123" },
{
workflowState: {
plan: "pro",
},
}
);

Read and Update​

workflowState is available on every step context, and setWorkflowState lets you update it:

createWorkflowChain({
id: "state-demo",
input: z.object({ userId: z.string() }),
})
.andThen({
id: "cache-user",
execute: async ({ data, setWorkflowState }) => {
setWorkflowState((previous) => ({
...previous,
userId: data.userId,
}));
return data;
},
})
.andThen({
id: "use-cache",
execute: async ({ workflowState }) => {
return { cachedUserId: workflowState.userId };
},
});

Suspend and Resume​

Workflow state is stored in suspension checkpoints and restored on resume. You do not need to rehydrate it manually.

REST API​

You can pass workflow state via the REST execute or stream endpoints:

curl -X POST http://localhost:3141/workflows/state-demo/execute \
-H "Content-Type: application/json" \
-d '{
"input": { "userId": "user-123" },
"options": { "workflowState": { "plan": "pro" } }
}'

Table of Contents