Testen Sie Ihren Sprachagenten in einer Codezeile
Ein HTTP-Aufruf mit Inline-Persona, Szenario und Endpunkt genügt. Sie erhalten ein Transkript, Evaluierungsscores, ein Ergebnis mit bestanden oder nicht bestanden und die URL zur Aufzeichnung. Unterstützt werden Telefon, LiveKit und weitere Endpunkte. Keine vorherige Registrierung erforderlich.
import os
import time
import requests
base_url = "https://api.noveum.ai/api"
headers = {"Authorization": f"Bearer {os.environ['NOVEUM_API_KEY']}"}
config = {
"endpoint": {"type": "phone", "phoneNumber": "+14155551234", "phoneCountryCode": "+1"},
"persona": {"name": "Frustrated customer", "goal": "Cancel subscription"},
"scenario": {"name": "Cancellation", "description": "Caller insists on canceling"},
"mode": "voice",
"eval": True,
}
response = requests.post(f"{base_url}/v1/developer/calls", json=config, headers=headers, timeout=30)
response.raise_for_status()
call_id = response.json()["callId"]
while True:
result = requests.get(f"{base_url}/v1/developer/calls/{call_id}", headers=headers, timeout=30).json()
if result["status"] in ("completed", "failed", "cancelled"):
break
time.sleep(3)
print(result["status"], result.get("eval"))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
}'# 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.Endpunkttypen
- Telefon (jedes Land)Verfügbar
- LiveKitVerfügbar
- Retell / Vapi / Pipecat / ElevenLabsKommt bald
- WebSocketKommt bald
Preise
100 Credits / Minute × bis zu 10 Minuten = 1.000 Credits pro Anruf
Abgerechnet wird die Gesprächsdauer bis zum konfigurierten Höchstwert. Bei Batch-Ausführungen wird dieser Betrag mit der Anzahl der Anrufe multipliziert.
Wie es funktioniert
- 1Beschreiben Sie den Anruf
Übergeben Sie einen Endpunkt, eine Persona mit Identität und Ziel sowie ein Szenario.
- 2NovaSynth ruft Ihren Agenten an
Ein synthetischer Anrufer führt ein realistisches Gespräch mit Ihrem Live-Agenten.
- 3Erhalten Sie bewertete Ergebnisse
Rufen Sie das Ergebnis regelmäßig ab oder warten Sie darauf. Sie erhalten ein Transkript, einen Evaluierungsscore, ein Ergebnis mit bestanden oder nicht bestanden und die URL zur Aufzeichnung.
FAQ
- Welche Arten von Endpunkten werden unterstützt?
- Für derzeit ausführbare Anrufe verwenden Sie Phone oder LiveKit. Die API-Spezifikation kann Nutzdaten für Retell, Vapi, Pipecat, ElevenLabs Conversational und reine WebSockets akzeptieren, sie sind jedoch erst ausführbar, wenn die entsprechende Worker-Unterstützung veröffentlicht wurde.
- Wie werden die Evals erstellt?
- Wenn die Evaluierung aktiviert ist, kann ein abgeschlossener Anruf den Evaluierungsstatus, einen verfügbaren Score und ein Bestanden-/Nicht-bestanden-Ergebnis, eine Zusammenfassung, Ergebnisse pro Scorer und eine ablaufende Aufzeichnungs-URL zurückgeben. Welche Prüfungen ausgeführt werden, hängt von den konfigurierten Scorern und ihrer Kompatibilität ab.
- Kann ich das in CI/CD verwenden?
- Ja. Rufen Sie aus einem CI-Runner die Developer Calls API mit einem HTTP-Client auf, fragen Sie den Anruf bis zu einem Endstatus ab und wenden Sie auf das zurückgegebene Bestanden-/Nicht-bestanden-Ergebnis Ihre eigene Prüf- oder Freigaberichtlinie an. Versehen Sie Anrufe mit serviceVersion, um Releases zu vergleichen. Das Python-Tracing-SDK enthält kein pytest-Plugin.