Spent a while chasing this one and it seems worth sharing, because the failure mode is completely invisible.
Setup: voice agent embedded on a site via the Vapi web SDK. Button on the page, user clicks, agent picks up. I had analytics on the button so I could see how many people were engaging.
Analytics showed 81 clicks on the button. Vapi showed zero calls. Not failed calls. Zero calls, as if nobody had ever pressed anything.
The cause: if the browser blocks or denies microphone permission, vapiSDK.start() still resolves successfully. It does not throw, it does not reject, and it does not emit an error event. It returns as though everything worked, and no call is ever created. If yo

