GET /api/v1/voice/calls/{id} liefert Status, Dauer, berechnete Credits, Zusammenfassung, Analyse und Transkript des Anrufs. Anrufe listen Sie mit GET /api/v1/voice/calls?agent_id=&status=&channel=&user_id=&page= (user_id: Ihre eigene ID für die Person, aus einem Web-Anruf-Token). Seine turns sind das Debug-Protokoll des Anrufs pro Wechsel: wohin die Zeit ging, vom Ende des Anrufers bis zum Hören der Antwort, in Millisekunden — waitMs (Sprechende), sttMs (Erkennung), llmMs (erstes Wort des Modells, eins mehr pro Runde mit Funktionen), ttsMs (erster Ton der Stimme), firstAudioMs (Antwort gehört) — mit den aufgerufenen Funktionen, Unterbrechungen und Fehlern. Die Anrufseite zeigt es ebenfalls.
Mit recording_enabled wird jeder Anruf als zweikanalige WAV aufgenommen: der Anrufer links, der Agent rechts, mit der Abtastrate des Anrufs. Mit recording_consent: "announce" sagt der Agent zuerst, dass der Anruf aufgenommen wird; mit "ask" fragt er, und die Aufnahme wird nur behalten, wenn der Anrufer zustimmt (keine Antwort zählt als Nein); mit "none" wird nichts gesagt. Prüfen Sie, was das Recht dort verlangt, wo Sie und Ihre Anrufer sind.
Aufnahmen werden im Speicher von EvaSay gehalten oder in Ihrem eigenen S3-kompatiblen Bucket (AWS S3, Cloudflare R2, Google Cloud Storage, Supabase, MinIO), festgelegt unter Integrationen → Webhooks & Benachrichtigungen → Speicher für Aufnahmen. Der Worker, der den Anruf ausführt, lädt die Datei direkt in den Bucket. GET /api/v1/voice/calls/{id} liefert eine eine Stunde gültige recordingUrl, sobald die Aufnahme gespeichert ist, und recording.status (recording, stored, declined oder failed).
DELETE /api/v1/voice/calls/{id} löscht einen beendeten Anruf mit Transkript, Aufnahme (im Speicher von EvaSay oder in Ihrem eigenen Bucket), Analyse und Webhook-Zustellungen. Die verbrauchten Credits bleiben im Credit-Verlauf. Ein Anruf, der noch nicht gelöscht werden kann, antwortet mit 409 und code call_not_deletable_yet: Er läuft noch oder ist gerade erst beendet, wird noch abgerechnet, seine Aufnahme wird möglicherweise noch hochgeladen, oder er hat offene Credits, die Ihr Guthaben nicht gedeckt hat (laden Sie zuerst Credits auf).
Verlangt eine Person die Löschung ihrer Daten, löscht POST /api/v1/voice/calls/delete-by-caller mit { "phone_number": "+14155550123" } alle Anrufe mit dieser Nummer (bei eingehenden Anrufen die des Anrufers, bei ausgehenden die angerufene Nummer) oder mit { "user_id": "..." } alle Web-Anrufe, deren Token diese user_id enthielt. Die Antwort ist { "deleted": 12, "kept_back": { "settling": 1 }, "more": false }: höchstens 200 Anrufe pro Anfrage, fragen Sie also erneut, solange more true ist, und später noch einmal für die Anrufe in kept_back. Steht die Nummer auf Ihrer Sperrliste, bleibt sie dort. Im Dashboard geht dasselbe unter Anrufe → Daten eines Anrufers löschen.