Test your voice agent in one line of code
One HTTP call with an inline persona, scenario, and endpoint. Get back a transcript, eval scores, a pass/fail verdict, and a recording URL. Phone, LiveKit, and more. No pre-registration required.
Python / pytest
from noveum_trace.testing import VoiceTester
tester = VoiceTester(api_key="...")
def test_cancellation_flow():
result = tester.call(
endpoint={"type": "phone", "phoneNumber": "+14155551234", "phoneCountryCode": "+1"},
persona={"name": "Frustrated customer", "goal": "Cancel subscription"},
scenario={"name": "Cancellation", "description": "Caller insists on canceling"},
).wait()
assert result.passed, result.eval.summary
print("Recording:", result.recording_url)curl
curl -sS -X POST https://api.noveum.ai/api/v1/developer/calls \
-H "Authorization: Bearer $NOVEUM_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"endpoint": {"type":"livekit","livekitUrl":"...","livekitApiKey":"...",
"livekitApiSecret":"...","livekitAgentName":"booking-agent"},
"persona": {"name":"New customer","goal":"Book a table for 4"},
"scenario": {"name":"Booking","description":"Restaurant reservation"},
"eval": true
}'MCP (Claude / Cursor)
# In Claude / Cursor with the Noveum MCP server configured:
> Test my voice agent at +14155551234 - try to cancel a subscription.
# Claude reads noveum://developer-calls-playbook, runs the call,
# polls for results, and shows the transcript + eval score.Endpoint types
- Phone (any country)Available
- LiveKitAvailable
- Retell / Vapi / Pipecat / ElevenLabsComing soon
- WebSocketComing soon
Pricing
25 credits / minute × up to 10 minutes = 250 credits per call
You are charged for the call duration up to your configured maximum. Batch runs multiply by the number of calls.
How it works
- 1Describe the call
Pass an endpoint, a persona (who is calling and their goal), and a scenario.
- 2NovaSynth calls your agent
A synthetic caller runs a realistic conversation against your live agent.
- 3Get scored results
Get a transcript, eval score, pass/fail result, and recording URL by polling or awaiting the result.
FAQ
- What types of endpoints are supported?
- Phone and LiveKit run today. Retell, Vapi, Pipecat, ElevenLabs Conversational, and raw WebSocket endpoints are accepted by the API and will execute as worker support lands.
- How are evals generated?
- Each call is scored by Noveum's panel of LLM judges against your scenario, returning a 0 to 10 score, a pass/fail verdict, a summary, per-scorer results, and a recording URL.
- Can I use this in CI/CD?
- Yes. The Python SDK ships a pytest plugin. Assert on result.passed in your test suite, gate deploys on agent quality, and tag calls with serviceVersion to compare across releases.
