Το GET /api/v1/voice/calls/{id} επιστρέφει την κατάσταση της κλήσης, τη διάρκεια, τα credits που χρεώθηκαν, τη σύνοψη, την ανάλυση και την απομαγνητοφώνηση. Παραθέστε κλήσεις με GET /api/v1/voice/calls?agent_id=&status=&channel=&user_id=&page= (user_id: το δικό σας αναγνωριστικό για το άτομο, από ένα token web κλήσης). Τα turns της είναι το αρχείο αποσφαλμάτωσης της κλήσης, γύρο προς γύρο: πού πήγε ο χρόνος από τη στιγμή που ο καλών τελείωσε να μιλά μέχρι να ακούσει την απάντηση, σε χιλιοστά του δευτερολέπτου — waitMs (τέλος ομιλίας), sttMs (αναγνώριση), llmMs (πρώτη λέξη του μοντέλου, μία ακόμη για κάθε γύρο συναρτήσεων), ttsMs (πρώτος ήχος της φωνής), firstAudioMs (άκουσε την απάντηση) — με τις συναρτήσεις που κλήθηκαν, τις διακοπές και τα σφάλματα. Το εμφανίζει και η σελίδα της κλήσης.
Με το recording_enabled, κάθε κλήση ηχογραφείται ως WAV δύο καναλιών: ο καλών αριστερά, ο πράκτορας δεξιά, με τον ρυθμό δειγματοληψίας της κλήσης. Με recording_consent: "announce" ο πράκτορας λέει πρώτα ότι η κλήση ηχογραφείται· με "ask" ρωτά, και η ηχογράφηση διατηρείται μόνο αν συμφωνήσει ο καλών (η μη απάντηση μετράει ως όχι)· με "none" δεν λέγεται τίποτα. Ελέγξτε τι απαιτεί ο νόμος εκεί που βρίσκεστε εσείς και οι καλούντες σας.
Οι ηχογραφήσεις φυλάσσονται στον αποθηκευτικό χώρο της EvaSay ή στο δικό σας bucket συμβατό με S3 (AWS S3, Cloudflare R2, Google Cloud Storage, Supabase, MinIO) που ορίζεται στο Ενσωματώσεις → Webhooks και ειδοποιήσεις → Αποθήκευση ηχογραφήσεων. Ο worker που εκτελεί την κλήση ανεβάζει το αρχείο απευθείας στο bucket. Το GET /api/v1/voice/calls/{id} επιστρέφει ένα recordingUrl με ισχύ μίας ώρας μόλις αποθηκευτεί η ηχογράφηση, και το recording.status (recording, stored, declined ή failed).
Το DELETE /api/v1/voice/calls/{id} διαγράφει μια κλήση που έχει τελειώσει μαζί με την απομαγνητοφώνηση, την ηχογράφηση (στον αποθηκευτικό χώρο της EvaSay ή στο δικό σας bucket), την ανάλυση και τις αποστολές webhook. Τα Credits που χρησιμοποιήθηκαν μένουν στο ιστορικό μονάδων. Μια κλήση που δεν μπορεί ακόμη να διαγραφεί απαντά 409 με code call_not_deletable_yet: είναι σε εξέλιξη ή μόλις τελείωσε, χρεώνεται ακόμη, η ηχογράφηση ίσως μεταφορτώνεται ακόμη, ή οφείλει Credits που δεν κάλυψε το υπόλοιπο (προσθέστε πρώτα Credits).
Όταν κάποιος ζητά να διαγραφούν τα δεδομένα του, το POST /api/v1/voice/calls/delete-by-caller με { "phone_number": "+14155550123" } διαγράφει όλες τις κλήσεις με αυτόν τον αριθμό (του καλούντος στις εισερχόμενες, τον αριθμό που κλήθηκε στις εξερχόμενες), ή με { "user_id": "..." } όλες τις κλήσεις web με αυτό το user_id στο token τους. Απαντά { "deleted": 12, "kept_back": { "settling": 1 }, "more": false }: έως 200 κλήσεις ανά αίτημα, οπότε ζητήστε ξανά όσο το more είναι true, και αργότερα για τις κλήσεις στο kept_back. Αν ο αριθμός είναι στη λίστα «Μην καλείτε», παραμένει εκεί. Στον πίνακα ελέγχου το ίδιο γίνεται από Κλήσεις → Διαγραφή δεδομένων καλούντος.