Summary
When using the @vapi-ai/web, the vapi.start() method does not seem to follow the workflow passed as the 4th argument when an assistant ID (string) is used as the first argument.
Instead of executing the workflow logic, the assistant behaves as if no workflow is attached — responding with its own LLM behavior or first message.
where as vapi.start shows
(method) Vapi.start(assistant?: CreateAssistantDTO | string, assistantOverrides?: AssistantOverrides, squad?: CreateSquadDTO | string, workflow?: CreateWorkflowDTO | string): Promise<Call | null>
Expected Behavior
Sdk setup
import Vapi from "@vapi-ai/web";
export const vapi = new Vapi(VAPI_WEB_TOKEN);
When calling:
await vapi.start(
"my-assistant-id",
{
variableValues: {
username: "Test",
userid: "123"
}
},
undefined,
"my-assistant-id"
);
The assistant should follow the nodes, edges, and prompts defined in workflow
Actual Behavior
The assistant starts the call but ignores the workflow and instead responds as if no workflow was provided — defaulting to the assistant’s model or firstMessage behavior from the dashboard config.
Environment
- @vapi-ai/web version: 2.3.1 (latest)
- Framework: Next.js 14 (app router)
- Browser: Chrome
- SDK Usage: Client-side in React component
Summary
When using the
@vapi-ai/web, thevapi.start()method does not seem to follow theworkflowpassed as the 4th argument when an assistant ID (string) is used as the first argument.Instead of executing the workflow logic, the assistant behaves as if no workflow is attached — responding with its own LLM behavior or first message.
where as vapi.start shows
Expected Behavior
Sdk setup
When calling:
The assistant should follow the nodes, edges, and prompts defined in workflow
Actual Behavior
The assistant starts the call but ignores the workflow and instead responds as if no workflow was provided — defaulting to the assistant’s model or firstMessage behavior from the dashboard config.
Environment