Configure your assistant
Set your assistant’svoice to Vapi’s custom-voice provider, pointed at the Kova Vapi endpoint with your chosen voice and API key.
url: the Kova Vapi endpoint. Set thevoicequery parameter to any speaker id from/v1/tts/speakers(for examplecal).headers.x-api-key: your Kova API key from platform.kova.ai. Vapi sends it on every request; Kova validates and bills it.
Each Vapi voice maps to one Kova speaker. To offer multiple voices, create one custom-voice config per speaker, changing the
voice query parameter.How it works
Vapi POSTs avoice-request for each utterance:
application/octet-stream — not JSON, and not base64.
sampleRate accepts any value from 8000 to 48000 Hz, which covers all of Vapi’s standard rates (8000, 16000, 22050, 24000). Omitting sampleRate is accepted and falls back to a default.
A sampleRate outside 8000–48000 returns 422 ("Input should be greater than or equal to 8000" / "less than or equal to 48000"), and an unknown voice returns 422 with an unknown_voice body listing every valid id.
Only
message.type == "voice-request" synthesizes. Other Vapi message types — status-update, end-of-call-report, transcript — are acknowledged with an empty 200 and no body, which is what Vapi expects.voice query parameter is required — omitting it returns 422 with {"detail":[{"loc":["query","voice"],"msg":"Field required"}]}.
Billing and errors
Usage is billed to the API key in thex-api-key header, the same as direct API calls. An invalid key returns 401; an account out of credits returns 402. Top up at platform.kova.ai/dashboard/billing.