๐Ÿ“ง sales@zvmsindustries.com

๐Ÿ“ž 833.208.0002

API Docs / Endpoints / Call Analysis

Call Analysis

Retrieves the AI-generated summary and speaker-separated transcript for a specific call. The response includes the transcription and summary status, when the transcription record was created, the full summary, and each utterance in the conversation.

GEThttps://admin.zvmstelecom.net/api/v1/domains/{DOMAIN_UUID}/cdrs/{XML_CDR_UUID}/analysis
๐Ÿ”‘

Permissions. Authenticate as described in Authentication. Your API user must have access to the requested domain and the xml_cdr_view permission.

Path Parameters

DOMAIN_UUIDstring (UUID)Required

Your domain's UUID, provided with your API credentials.

XML_CDR_UUIDstring (UUID)Required

The ID of the call you want analysis for, taken from the xml_cdr_uuid field of a List Call History result.

This endpoint takes no query parameters or request body.

Example Request

cURL
XML_CDR_UUID="YOUR_XML_CDR_UUID"

curl -s "https://admin.zvmstelecom.net/api/v1/domains/${DOMAIN_UUID}/cdrs/${XML_CDR_UUID}/analysis" \
  -H "Authorization: Bearer ${TOKEN}" \
  -H "Accept: application/json" |
  python3 -m json.tool

Response

A 200 response returns the newest transcription record for the call. If a call has more than one transcription record, you get the most recently created one, even if it is still processing.

FieldTypeDescription
xml_cdr_uuidstring (UUID)Unique ID of the call.
statusstringTranscription processing status.
summary_statusstring or nullSummary processing status.
created_atstring or nullWhen the transcription record was created. This is not the call's start time.
summary_payloadobject or nullThe full stored summary, including any analysis fields produced by the configured summarization process.
utterancesarray or nullSpeaker-separated transcript segments. Other transcription result fields are left out.

created_at is returned as stored, typically in YYYY-MM-DD HH:MM:SS format with no time zone offset. Confirm the time zone with us before converting it.

The structure of summary_payload depends on the configured analysis format. Build your integration to tolerate added or missing summary properties.

Utterance fields

In the current transcription format, each utterance contains:

FieldTypeDescription
startnumberSegment start time, in milliseconds from the beginning of the recording.
endnumberSegment end time, in milliseconds from the beginning of the recording.
textstringTranscribed speech for the segment.
speakerstringSpeaker label within the recording, such as A, B, or C.
confidencenumberTranscription confidence reported by the provider, generally between 0 and 1.
๐Ÿ—ฃ๏ธ

Speaker labels are not identities. Labels tell voices apart within one recording. They don't identify an employee, customer, extension, or named person. Utterances are returned as stored, so their fields may vary by transcription provider.

Example response

This example is illustrative. Status values and summary properties depend on your processing configuration and stored data.

JSON
{
  "xml_cdr_uuid": "c0ec8113-aa15-40ac-8437-47185dd9dcf4",
  "status": "completed",
  "summary_status": "completed",
  "created_at": "2026-10-19 20:15:30",
  "summary_payload": {
    "summary": "The caller asked about vehicle body repairs and was referred to a collision repair center.",
    "sentiment": "neutral",
    "action_items": [
      "Contact the recommended collision repair center."
    ]
  },
  "utterances": [
    {
      "end": 110830,
      "text": "Sorry, you said Sterling Collision Center?",
      "start": 107710,
      "speaker": "B",
      "confidence": 0.8814426
    },
    {
      "end": 112990,
      "text": "Correct.",
      "start": 112350,
      "speaker": "C",
      "confidence": 0.9996745
    }
  ]
}

Processing Behavior

Transcription and summarization run separately. A successful response means a transcription record was found, not that both stages have finished.

โณ

Polling. If you're waiting on processing, retry with a reasonable delay and backoff. Avoid rapid continuous polling, and stop retrying once processing reports a terminal failure.

Errors

HTTP statusMeaning
400An identifier failed UUID validation (after authorization checks).
401Authentication is missing or invalid.
403The API user lacks access to the domain or the required permission.
404The call wasn't found in the requested domain, or it has no transcription record.
429The API rate limit was exceeded.
500An unexpected server error occurred.

A call with no transcription record returns the error code transcription_not_found. That doesn't necessarily mean processing failed: the record may not have been created yet, or transcription may not have been requested for the call.

Authorization checks run before identifier validation, so a request for a domain you can't access may return 403 before its UUIDs are checked.

Integration notes

๐Ÿ”’

Treat transcripts as private customer data. Responses include Cache-Control: private, no-store. Restrict access to transcripts and summaries within your application, and never expose your API token in public website code.