Audit voice agents built with Vapi
Evidova sits outside Vapi and scores the calls your agent already made.
What it catches
Vapi tells you the call happened. It does not tell you whether the agent did its job. Evidova reads the transcript Vapi already produces and scores it against the checks you approved: whether the agent answered the question asked, whether it admitted it was not a person when asked, whether it invented a price, and where the caller gave up.
Connect Vapi
- In Evidova, open Setup, choose Vapi, and paste your signing secret.
- Copy the URL we generate.
- In Vapi, set that as your server URL.
https://app.evidova.com/ingest/webhooks/vapi/<your-token>What we read from Vapi
| call.id | The conversation's identity. Required |
|---|---|
| call.customer.number | Groups repeat calls from one caller. Falls back to call.id |
| call.startedAt, call.endedAt | When it happened, to the millisecond |
| artifact.recordingUrl | Audio, for the latency and dead-air checks |
| artifact.messages[] | The turns. Roles user, bot, assistant and system |
What we ignore, and why
Vapi sends 17 other server-message types. We accept only end-of-call-report, because every one of the others repeats state that the end-of-call report already carries in full. Turning them all on costs you nothing and changes nothing. A message type outside both lists is not discarded: it is rejected with the type in the note and lands in the dead-letter ledger, so a change on Vapi's side becomes something you can query instead of missing coverage nobody noticed.
One trap worth knowing
Vapi's message.time is absolute Unix seconds on real calls, but its own documentation examples show seconds from the start of the call. We treat anything below 1 000 000 000 as seconds-from-start, and fall back to secondsFromStart. So timings from a doc-shaped payload and a live call both land in the right place.
What Vapi gives us
| Channel | voice |
|---|---|
| Audio | Yes |
| Timestamps | Milliseconds, on Vapi's clock |
| Delivery | Webhook, push |
| Retries | Vapi retries |
Read next
- Quickstart: connect a platform · Ten minutes, one path, from a webhook to your first score.
- Webhook reference · The URL, the signature, and what we answer a delivery with.
- All twelve platforms · Every voice and chat stack Evidova reads, side by side.