Prakhar Agrawal
12/10/2025, 7:00 PM// Using Squad ID directly - connects fine
await vapi.start(undefined, undefined, "my-squad-id");
What fails (all return 400 Bad Request):
Attempt 1 - Using membersOverrides:
const squadConfig = {
squad: {
members: [
{ assistantId: "assistant-id-1" },
{ assistantId: "assistant-id-2" }
],
membersOverrides: {
"assistant-id-1": {
model: {
messages: [{ role: "system", content: "My dynamic prompt" }]
}
}
}
}
};
await vapi.start(squadConfig); // 400 Bad Request
Attempt 2 - Using assistantOverrides per member:
const squadConfig = {
squad: {
members: [
{
assistantId: "assistant-id-1",
assistantOverrides: {
model: {
messages: [{ role: "system", content: "My dynamic prompt" }]
}
}
},
{
assistantId: "assistant-id-2",
assistantOverrides: {
model: {
messages: [{ role: "system", content: "Another dynamic prompt" }]
}
}
}
]
}
};
await vapi.start(squadConfig); // 400 Bad Request
Attempt 3 - Using memberOverrides (singular):
const squadConfig = {
squad: {
members: [
{ assistantId: "assistant-id-1" },
{ assistantId: "assistant-id-2" }
],
memberOverrides: {
model: {
messages: [{ role: "system", content: "Dynamic prompt" }]
}
}
}
};
await vapi.start(squadConfig); //400 Bad Request
What's the correct Web SDK payload structure for vapi.start() to inject dynamic prompts into squad members? Is there a difference between REST API and Web SDK formats?
Thanks!