{
"id": "evt_3f2a9c1e5b7d4e8a9c217d4e5f6a8b90",
"type": "voice.test.completed",
"api_version": "2026-10-01",
"created_at": "2023-11-07T05:31:56Z",
"data": {
"test_id": "vqt_3f2a9c1e5b7d4e8a9c217d4e5f6a8b90",
"source_number": "+12792043120",
"test_destination": "+12792044328",
"profile": "passive",
"verdict": "PASS",
"verdict_reason": null,
"headline": "PASS — Good voice quality",
"quality_class": "Excellent",
"mos_cqe": 4.4,
"score": 93,
"confidence": "high",
"started_at": "2023-11-07T05:31:56Z",
"report": {
"identity": {
"test_id": "vqt_3f2a9c1e5b7d4e8a9c217d4e5f6a8b90",
"source_number": {
"phone_number": "+12792043120"
},
"test_destination": {
"phone_number": "+12792044328"
},
"started_at": "2023-11-07T05:31:56Z"
},
"call": {
"answered": true,
"started_at": "2023-11-07T05:31:56Z",
"ended_at": "2023-11-07T05:31:56Z",
"duration_ms": 23245,
"talk_time_ms": 22000,
"hangup_cause": 16,
"hangup_cause_text": "Normal Clearing"
},
"timing": {
"signalingRingingMs": 123,
"answerDelayMs": 123,
"bridgeDelayMs": 123
},
"audio": [
{}
],
"transport": {},
"quality": [
{
"path": "node_to_caller",
"packetLossPercent": 0,
"packetsLost": 0,
"jitterMsMax": 0,
"jitterMsMean": 0,
"rttMsMean": 44.22,
"reportCount": 4,
"rating": {
"rFactor": 92.67,
"mosCqe": 4.4,
"category": "best",
"delayMs": 22.1,
"method": "ITU-T G.107 E-model (MOS-CQE), one-way delay estimated as RTT/2"
}
}
],
"findings": [
{
"code": "HIGH_JITTER",
"message": "High jitter detected"
}
],
"result": {},
"measurement": {
"observationPoint": "asterisk_boundary",
"limits": [
"<string>"
]
}
}
}
}Voice Quality
Voicetestcompleted
Sent to every active voice quality webhook on your account when a line on your account finishes a call to a Spenza test number.
Headers: X-Spenza-Event, X-Spenza-Delivery, X-Spenza-Timestamp, and X-Spenza-Signature: t=<timestamp>,v1=<hex> — HMAC-SHA256 of <timestamp>.<raw body> keyed with your signingSecret. Reject timestamps older than 5 minutes.
Success is any 2xx within 10 seconds. Failed deliveries are retried after 30 seconds, 2 minutes and 10 minutes (4 attempts in total); 410 Gone stops retries. Delivery is at least once — dedupe on id.
WEBHOOK
voice.test.completed
{
"id": "evt_3f2a9c1e5b7d4e8a9c217d4e5f6a8b90",
"type": "voice.test.completed",
"api_version": "2026-10-01",
"created_at": "2023-11-07T05:31:56Z",
"data": {
"test_id": "vqt_3f2a9c1e5b7d4e8a9c217d4e5f6a8b90",
"source_number": "+12792043120",
"test_destination": "+12792044328",
"profile": "passive",
"verdict": "PASS",
"verdict_reason": null,
"headline": "PASS — Good voice quality",
"quality_class": "Excellent",
"mos_cqe": 4.4,
"score": 93,
"confidence": "high",
"started_at": "2023-11-07T05:31:56Z",
"report": {
"identity": {
"test_id": "vqt_3f2a9c1e5b7d4e8a9c217d4e5f6a8b90",
"source_number": {
"phone_number": "+12792043120"
},
"test_destination": {
"phone_number": "+12792044328"
},
"started_at": "2023-11-07T05:31:56Z"
},
"call": {
"answered": true,
"started_at": "2023-11-07T05:31:56Z",
"ended_at": "2023-11-07T05:31:56Z",
"duration_ms": 23245,
"talk_time_ms": 22000,
"hangup_cause": 16,
"hangup_cause_text": "Normal Clearing"
},
"timing": {
"signalingRingingMs": 123,
"answerDelayMs": 123,
"bridgeDelayMs": 123
},
"audio": [
{}
],
"transport": {},
"quality": [
{
"path": "node_to_caller",
"packetLossPercent": 0,
"packetsLost": 0,
"jitterMsMax": 0,
"jitterMsMean": 0,
"rttMsMean": 44.22,
"reportCount": 4,
"rating": {
"rFactor": 92.67,
"mosCqe": 4.4,
"category": "best",
"delayMs": 22.1,
"method": "ITU-T G.107 E-model (MOS-CQE), one-way delay estimated as RTT/2"
}
}
],
"findings": [
{
"code": "HIGH_JITTER",
"message": "High jitter detected"
}
],
"result": {},
"measurement": {
"observationPoint": "asterisk_boundary",
"limits": [
"<string>"
]
}
}
}
}Authorizations
Bearer token obtained from POST /api/v1.1/auth/token.
Body
application/json
Response
Return any 2xx within 10 seconds to acknowledge.

