curl --request GET \
--url https://api.voice.mergenlab.ai/v1/calls/{id}/analysis \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.voice.mergenlab.ai/v1/calls/{id}/analysis', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.voice.mergenlab.ai/v1/calls/{id}/analysis"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"call_id": "call_5b8e1d2c3a4f4b6e9d7c8a1b2c3d4e5f",
"attempt_id": "att_1c3e5a7b9d2f4e6a8c0b2d4f6a8c0e2b",
"status": "completed",
"language": "hi-IN",
"summary": "The borrower confirmed the EMI is due and promised to pay 4,500 rupees on 28 October after salary.",
"disposition": "promise_to_pay",
"promise": {
"amount": 4500,
"date": "2026-10-28",
"time": null
},
"callback": null,
"customer_sentiment": "neutral",
"key_points": [
"EMI of 4,500 rupees overdue by 12 days",
"Salary expected on the 27th"
],
"next_action": "Send a payment link on 28 October",
"speakers_from": "channels",
"quality": {
"score": 86,
"verdict": "pass"
},
"transcript": [
{
"role": "agent",
"text": "नमस्ते, क्या मेरी बात राहुल जी से हो रही है?",
"start": 0.4,
"end": 2.9,
"language": "hi-IN"
},
{
"role": "customer",
"text": "हाँ, बोलिए।",
"start": 3.3,
"end": 4.1,
"language": "hi-IN"
}
],
"analyzed_at": "2026-10-12T06:06:21.400Z"
}Get a human call's analysis
Made from the recording a minute or so after a human call: a summary, the disposition, any promise to pay
or callback, the customer’s sentiment, a QA review of the agent (score, criteria, compliance) and the
transcript (agent / customer, with times). The same fields arrive in the call.analyzed webhook.
curl --request GET \
--url https://api.voice.mergenlab.ai/v1/calls/{id}/analysis \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.voice.mergenlab.ai/v1/calls/{id}/analysis', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.voice.mergenlab.ai/v1/calls/{id}/analysis"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"call_id": "call_5b8e1d2c3a4f4b6e9d7c8a1b2c3d4e5f",
"attempt_id": "att_1c3e5a7b9d2f4e6a8c0b2d4f6a8c0e2b",
"status": "completed",
"language": "hi-IN",
"summary": "The borrower confirmed the EMI is due and promised to pay 4,500 rupees on 28 October after salary.",
"disposition": "promise_to_pay",
"promise": {
"amount": 4500,
"date": "2026-10-28",
"time": null
},
"callback": null,
"customer_sentiment": "neutral",
"key_points": [
"EMI of 4,500 rupees overdue by 12 days",
"Salary expected on the 27th"
],
"next_action": "Send a payment link on 28 October",
"speakers_from": "channels",
"quality": {
"score": 86,
"verdict": "pass"
},
"transcript": [
{
"role": "agent",
"text": "नमस्ते, क्या मेरी बात राहुल जी से हो रही है?",
"start": 0.4,
"end": 2.9,
"language": "hi-IN"
},
{
"role": "customer",
"text": "हाँ, बोलिए।",
"start": 3.3,
"end": 4.1,
"language": "hi-IN"
}
],
"analyzed_at": "2026-10-12T06:06:21.400Z"
}Authorizations
Authorization: Bearer vg_live_<32 hex characters>. Keys are issued by Mergen admins and shown once.
Missing or invalid key: 401 unauthorized. Suspended account: 403 tenant_suspended.
Path Parameters
Call id (call_ + 32 hex characters).
Response
The analysis.
The analysis of a human call, made from its recording.
completed, failed "promise_to_pay"
Show child attributes
Show child attributes
Show child attributes
Show child attributes
positive, neutral, negative, angry, null channels: agent and customer told apart by the stereo recording; model: by the transcription.
channels, model, null The QA review of the agent: score (0-100), verdict, criteria, judges.
Show child attributes
Show child attributes