Get Evaluation Results
Retrieve scorecard evaluation results for a specific call. Returns all evaluations performed on the call, or filter by specific scorecard.
Request
# Get all evaluations for a call
curl -X GET "https://api.chanl.ai/api/v1/scorecard-results/by-call/695d6957e21c0ceb325c394d" \
-H "Authorization: Bearer <access_token>"
# Filter by specific scorecard
curl -X GET "https://api.chanl.ai/api/v1/scorecard-results/by-call/695d6957e21c0ceb325c394d?scorecardId=scorecard_abc123" \
-H "Authorization: Bearer <access_token>"// Get all evaluations
const response = await fetch(
`https://api.chanl.ai/api/v1/scorecard-results/by-call/${callId}`,
{
headers: {
'Authorization': 'Bearer ' + accessToken
}
}
);
const { data } = await response.json();
console.log('Results:', data.results);
// Filter by scorecard
const filtered = await fetch(
`https://api.chanl.ai/api/v1/scorecard-results/by-call/${callId}?scorecardId=${scorecardId}`,
{
headers: {
'Authorization': 'Bearer ' + accessToken
}
}
);import requests
# Get all evaluations
response = requests.get(
f'https://api.chanl.ai/api/v1/scorecard-results/by-call/{call_id}',
headers={'Authorization': f'Bearer {access_token}'}
)
results = response.json()['data']['results']
# Filter by scorecard
response = requests.get(
f'https://api.chanl.ai/api/v1/scorecard-results/by-call/{call_id}',
headers={'Authorization': f'Bearer {access_token}'},
params={'scorecardId': scorecard_id}
)Response
{
"success": true,
"data": {
"results": [
{
"id": "result_xyz789",
"callId": "695d6957e21c0ceb325c394d",
"scorecardId": "scorecard_abc123",
"scorecardName": "Quality Scorecard",
"score": 85,
"status": "completed",
"passed": true,
"categoryScores": {
"Communication": {
"score": 90,
"weight": 40
},
"Resolution": {
"score": 80,
"weight": 35
},
"Compliance": {
"score": 85,
"weight": 25
}
},
"criteriaResults": [
{
"criterionId": "crit_greeting",
"key": "proper_greeting",
"name": "Proper Greeting",
"categoryId": "cat_comm",
"categoryName": "Communication",
"type": "prompt",
"passed": true,
"score": 100,
"evidence": "Agent said: 'Thank you for calling Acme Corp, this is Sarah speaking. How may I help you today?'",
"llmAnalysis": {
"summary": "The agent provided a professional greeting with company name and personal introduction.",
"improvementSuggestions": []
}
},
{
"criterionId": "crit_solution",
"key": "solution_provided",
"name": "Solution Provided",
"categoryId": "cat_resolution",
"categoryName": "Resolution",
"type": "prompt",
"passed": true,
"score": 80,
"evidence": "Agent explained the refund process and provided a timeline of 3-5 business days.",
"llmAnalysis": {
"summary": "Agent provided a clear solution with timeline.",
"improvementSuggestions": ["Could have offered expedited processing as an option"]
}
},
{
"criterionId": "crit_disclosure",
"key": "disclosure_given",
"name": "Disclosure Given",
"categoryId": "cat_compliance",
"categoryName": "Compliance",
"type": "keyword",
"passed": true,
"score": 100,
"evidence": "Found keyword match: 'this call may be recorded'",
"matchedKeywords": ["this call may be recorded"]
}
],
"evaluatedAt": "2026-01-06T12:00:00Z",
"version": 1
}
],
"pagination": {
"total": 1,
"page": 1,
"limit": 20,
"totalPages": 1
}
}
}{
"success": true,
"data": {
"results": [],
"pagination": {
"total": 0,
"page": 1,
"limit": 20,
"totalPages": 0
}
}
}Path Parameters
callIdstringrequiredThe unique identifier of the call.
Query Parameters
scorecardIdstringFilter results to a specific scorecard.
pageintegerdefault: 1Page number (1-indexed).
limitintegerdefault: 20Items per page (max 100).
Result Structure
Overall Result
| Field | Type | Description |
|---|---|---|
id | string | Unique result identifier |
score | number | Overall score (0-100) |
status | string | completed, failed, pending |
passed | boolean | Whether score meets passing threshold |
categoryScores | object | Scores by category |
criteriaResults | array | Individual criterion results |
evaluatedAt | string | Evaluation timestamp |
version | number | Scorecard version used |
Category Score
| Field | Type | Description |
|---|---|---|
score | number | Category score (0-100) |
weight | number | Category weight percentage |
Criterion Result
| Field | Type | Description |
|---|---|---|
criterionId | string | Criterion identifier |
key | string | Criterion key |
name | string | Display name |
type | string | Criterion type |
passed | boolean | Whether criterion passed |
score | number | Criterion score (0-100) |
evidence | string | Supporting evidence from transcript |
llmAnalysis | object | LLM analysis details (prompt type) |
matchedKeywords | array | Matched keywords (keyword type) |
LLM Analysis Object
For prompt type criteria:
{
"llmAnalysis": {
"summary": "Brief explanation of the evaluation",
"improvementSuggestions": [
"Suggestion for improvement",
"Another suggestion"
]
}
}Multiple Evaluations
A call can be evaluated by multiple scorecards. Each evaluation creates a separate result:
{
"results": [
{ "scorecardName": "Quality Scorecard", "score": 85 },
{ "scorecardName": "Compliance Scorecard", "score": 92 },
{ "scorecardName": "Sales Scorecard", "score": 78 }
]
}Alternative Endpoints
Get Results by Scorecard
GET /api/v1/scorecard-results/by-scorecard/{scorecardId}Get Single Result
GET /api/v1/scorecard-results/{resultId}Use the externalReferenceIds on the call to correlate evaluation results with your internal systems. For example, link scores to specific orders or customer records.