Skip to content

[docs]: Can we attach Workflows to Assistants? #438

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
100stacks opened this issue May 27, 2025 · 5 comments
Closed

[docs]: Can we attach Workflows to Assistants? #438

100stacks opened this issue May 27, 2025 · 5 comments
Assignees

Comments

@100stacks
Copy link

Hello!

Can we attach Workflows from the Vapi Dashboard to an Assistant for a web application? The documentation is now missing although it was available as of changelog 2025-5-15.

NOTE: This might be related to commit 0989755.

Workflow Dev Docs Page Missing

When I navigate to https://docs.vapi.ai/workflows, I get this...

dev docs

Workflow API Docs still present

The Workflow endpoints are available when I ping them.

api docs

Can we Attach Workflow?

Is there a way to attach a workflow to an assistant? I've tried this programmatically though the Assistant is not "aware of the workflow" when asked.

attach workflow

Luckily, I found a workaround yet wondering if we should continue to use Workflows moving forward?

Btw I'm really enjoying Vapi...thank you!

@goosewin goosewin self-assigned this Jun 1, 2025
@goosewin
Copy link
Collaborator

goosewin commented Jun 1, 2025

Hey @100stacks!

Thank you for documenting the issue clearly!

You’re absolutely right that this was previously possible, but Vapi recently made a deliberate change: Workflows and Assistants are now separate, same-level primitives. This means you can no longer "attach" a Workflow to an Assistant directly.

The old documentation was removed to reflect this shift in the product. It’s not a bug, but rather an intentional design decision to keep the two concepts distinct, as they’re designed to solve different kinds of problems.

Thanks for raising the issue! And let me know if you have any follow-up questions or need help with the new approach. Otherwise, I’ll go ahead and close this issue in a bit.

@100stacks
Copy link
Author

Hey thank you @goosewin!

Appreciate the explanation. So should we think of Workflows as for phone conversation workflows and Assistants for web/application agent workflows?

@goosewin
Copy link
Collaborator

goosewin commented Jun 2, 2025

Hey thank you @goosewin!

Appreciate the explanation. So should we think of Workflows as for phone conversation workflows and Assistants for web/application agent workflows?

Not necessarily. Assistants are a simpler way to get started with voice agents (you control all assistant behavior with system prompt), while Workflows allow for more complicated processes requiring a lot of conditions, branching logic, etc.

Check out our new Workflow docs to learn more!

@100stacks
Copy link
Author

100stacks commented Jun 2, 2025

Workflow docs

Ok the new Workflow docs helps me see Workflows as conversational workflows. It's a conceptual shift in my understanding of Vapi though makes perfect sense.

A Web SDK example using Workflows in a web application would be useful for new users. I see where I can invoke Workflows via the type definitions though that's not intuitive.

Type definition

export default class Vapi extends VapiEventEmitter {
    private started;
    private call;
    private speakingTimeout;
    private dailyCallConfig;
    private dailyCallObject;
    private hasEmittedCallEndedStatus;
    constructor(apiToken: string, apiBaseUrl?: string, dailyCallConfig?: Pick<DailyAdvancedConfig, 'avoidEval' | 'alwaysIncludeMicInPermissionPrompt'>, dailyCallObject?: Pick<DailyFactoryOptions, 'audioSource' | 'startAudioOff'>);
    private cleanup;
    private isMobileDevice;
    private sleep;
    start(assistant?: CreateAssistantDTO | string, assistantOverrides?: AssistantOverrides, squad?: CreateSquadDTO | string, workflow?: CreateWorkflowDTO | string): Promise<Call | null>;
    private onAppMessage;
    private handleRemoteParticipantsAudioLevel;
    stop(): void;
    send(message: VapiClientToServerMessage): void;
    setMuted(mute: boolean): void;
    isMuted(): boolean;
    say(message: string, endCallAfterSpoken?: boolean, interruptionsEnabled?: boolean): void;
    setInputDevicesAsync(options: Parameters<DailyCall['setInputDevicesAsync']>[0]): void;
    increaseMicLevel(gain: number): Promise<void>;
    setOutputDeviceAsync(options: Parameters<DailyCall['setOutputDeviceAsync']>[0]): void;
    getDailyCallObject(): DailyCall | null;
    startScreenSharing(displayMediaOptions?: DisplayMediaStreamOptions, screenVideoSendSettings?: DailyVideoSendSettings): void;
    stopScreenSharing(): void;
}

Valid invoke options

start(assistant?: CreateAssistantDTO | string, assistantOverrides?: AssistantOverrides, squad?: CreateSquadDTO | string, workflow?: CreateWorkflowDTO | string): Promise<Call | null>;

Thanks @goosewin this has been super helpful!

@goosewin
Copy link
Collaborator

goosewin commented Jun 2, 2025

Thanks @100stacks, this is super helpful feedback. I'll make sure Vapi team prioritizes this in documentation!

I'll go ahead and close the issue, but if any other issues arise - feel free to open another one 👍

@goosewin goosewin closed this as completed Jun 2, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants