Skip to main content

How to Get Video Grader Data

This document explains how to fetch the video grader results for the inspections on an order. The video grader scores each technician video on the inspection (introduction, vehicle checks, value building and overall delivery). To use this endpoint, you first need your credentials. If you don't already have them, head over to the Authentication and Authorization page to see how to request credentials from us.

Request​

HTTP Request​

GET https://api.mykaarma.com/scprocessor/mpi/aggregator/v1/dealer-departments/{dealer-department-uuid}/orders/{order-uuid}/video-grader

Parameters​

Required path parameters:

Parameter NameValueDescription
dealer-department-uuidstringUUID of the dealer department the order belongs to
order-uuidstringUUID of the order whose inspections you want video grader data for

Authorization​

This request requires the following authorization scope:

ScopeLevelDescription
inspection.video.grader.readDealerDepartmentAuthorizes the client to read video grader data for inspections in the department

Example​

curl -X GET "https://api.mykaarma.com/scprocessor/mpi/aggregator/v1/dealer-departments/dept-uuid-123/orders/order-uuid-456/video-grader" \
-H "accept: application/json" \
-u "{{username}}:{{password}}"

Response​

Success Response (200 OK)​

{
"statusCode": 200,
"errors": null,
"warnings": null,
"inspectionToVideoGraderDetailsDTOMap": {
"mpi-uuid-789": {
"videoAnalysisList": [
{
"uuid": "analysis-uuid-1",
"videoGraderUuid": "video-grader-uuid-1",
"attachmentUrl": "https://example.com/video.mp4",
"mpiUuid": "mpi-uuid-789",
"dealerDepartmentUUID": "dept-uuid-123",
"technicianIdentifiers": {
"dealerAssociateUUID": "da-uuid-1",
"dealerAssociateName": "Technician Name"
},
"serviceAdvisorIdentifiers": {
"dealerAssociateUUID": "da-uuid-2",
"dealerAssociateName": "Advisor Name"
},
"assessmentsByCategory": {
"Vehicle Checks": [
{
"assessment": {
"assessmentId": 9,
"name": "WIPER",
"label": "Wiper",
"assessmentType": "visual",
"category": "Vehicle Checks",
"isAssessmentVisible": true
},
"detections": [
{
"timestamp": 12.5,
"frameNumber": 375,
"label": "Wiper",
"confidence": 0.91,
"bbox": [0.12, 0.34, 0.56, 0.78]
}
],
"status": "Showed",
"videoGraderLiteFeedbackDTOList": [],
"score": 1.0,
"isCheckDisabled": false
}
]
},
"dealerIdentifiers": {
"dealerUUID": "dealer-uuid-1",
"dealerName": "Dealer Name"
},
"orderIdentifiers": {
"orderUUID": "order-uuid-456",
"orderNumber": "123456"
},
"inspectionTypeIdentifiersDTO": {
"inspectionTypeUuid": "inspection-type-uuid-1",
"inspectionTypeName": "Multi Point Inspection"
},
"videoSentStatus": "SENT",
"videoViewedStatus": true,
"mileage": 25000,
"createdOn": 1760000000000,
"duration": 120,
"gradingDurationMillis": 45000,
"hasProfanity": false,
"audioQuality": 4,
"wordCount": 310,
"wordsPerMinute": 155,
"detectedKeywords": 8,
"shownObjects": 5,
"score": 82,
"tvgSettings": null,
"tvgSettingLevel": "DEALER",
"isValid": true,
"videoGradingDisabled": false,
"videoGradingUnavailableReason": null,
"excludedOpcode": null
}
]
}
}
}

Response Fields​

Root Level​

FieldTypeDescription
statusCodeIntegerHTTP status code
errorsArrayList of error objects. Empty or null on success
warningsArrayList of warning objects
inspectionToVideoGraderDetailsDTOMapObjectVideo grader details keyed by MPI UUID. Only inspections in the requested department are returned. Absent when no inspection on the order has a graded video

Video Analysis Object (videoAnalysisList[])​

FieldTypeDescription
uuidStringUUID of the analysis
videoGraderUuidStringUUID of the video grader record
attachmentUrlStringURL of the graded video
mpiUuidStringUUID of the inspection the video belongs to
dealerDepartmentUUIDStringUUID of the dealer department
technicianIdentifiersObjectTechnician who recorded the video
serviceAdvisorIdentifiersObjectService advisor on the order
assessmentsByCategoryObjectAssessment results keyed by category (see below)
dealerIdentifiersObjectDealer details
orderIdentifiersObjectOrder details
inspectionTypeIdentifiersDTOObjectInspection type of the MPI
videoSentStatusStringWhether the video was sent to the customer
videoViewedStatusBooleanWhether the customer viewed the video
mileageIntegerVehicle mileage on the inspection
createdOnLongCreation time, epoch milliseconds
durationIntegerLength of the video
gradingDurationMillisLongTime grading took from upload to results, in milliseconds
hasProfanityBooleanWhether profanity was detected
audioQualityIntegerAudio quality rating
wordCountIntegerNumber of words spoken
wordsPerMinuteIntegerSpeaking pace
detectedKeywordsIntegerNumber of keywords detected
shownObjectsIntegerNumber of vehicle components shown
scoreIntegerOverall video score
tvgSettingsObjectGrading settings applied to this video
tvgSettingLevelStringLevel the grading settings were taken from
isValidBooleanWhether the analysis is valid
videoGradingDisabledBooleantrue when all grading checks are turned off for this setting level
videoGradingUnavailableReasonStringWhy grading results are unavailable; null for a completed analysis (see below)
excludedOpcodeStringThe excluded opcode when grading was skipped for that reason

Assessment Item Object (assessmentsByCategory.<category>[])​

FieldTypeDescription
assessmentObjectThe assessment: assessmentId, name, label, assessmentType (visual, boolean or sentiment; it does not determine the status values, see below), category and isAssessmentVisible
detectionsArrayObjects detected in the video for this assessment, with frame, timestamp, confidence and bounding box
statusStringResult of the assessment (see below)
videoGraderLiteFeedbackDTOListArrayFeedback recorded on this assessment
scoreDoubleScore for this assessment
isCheckDisabledBooleanWhether this check is turned off in the grading settings

Possible Values​

Categories (keys of assessmentsByCategory): Introduction, Vehicle Checks, Value Building, General/Overall

Assessment status: which values status can take is decided by the assessment (assessment.name), not by assessmentType:

assessment.nameassessmentTypePossible status values
PRIMARY_CONCERN, BATTERY_TEST, AIR_FILTER, CABIN_AIR_FILTER, WIPER, HEADLIGHTS, BRAKES, TIRES, SUSPENSION, DRIVE_TRAIN, LEAKSvisualShowed, Mentioned, Not Covered, N/A
INTRODUCTION, GREETING, WELCOMED, LICENSE_PLATE, TIRE_GAUGE, BRAKE_GAUGE, COMPLIMENT, GREEN_CHECKS_MENTIONED, EASY_LANGUAGEbooleanYes, No
PROFANITYbooleanYes, No (Yes means profanity was detected, so No is the good result)
PACEbooleanToo Slow, Slightly Slow, Good, Slightly Fast, Too Fast
VIDEO_LENGTH, VIDEO_PAUSEbooleanGreen, Yellow, Red, N/A

If a single check could not be graded, its status is Green, whatever the assessment.

videoGradingUnavailableReason:

  • IN_PROGRESS - Grading has started but results are not ready yet
  • SKIPPED_OPCODE - Grading was skipped because the order has an excluded opcode (see excludedOpcode)
  • TURNED_OFF - Grading is turned off for the inspection type
  • NO_AUDIO - The video has no spoken audio
  • AUDIO_NOT_CAPTURED - The video was recorded without audio

Response Status Codes​

Status CodeDescription
200Success - video grader data retrieved
400Bad Request - missing or invalid path parameters (INVALID_REQUEST)
401Unauthorized - missing or invalid credentials
403Forbidden - inspection.video.grader.read is not granted for this department
404Not Found - the order has no inspection in this department (ORDER_NOT_FOUND)
500Internal Server Error (INTERNAL_ERROR)

Important Notes​

Key Points
  • Only inspections that belong to the department in the path are returned, even if the order has inspections in other departments.
  • An inspection appears only once a video has been uploaded for it. A video still being graded is returned with videoGradingUnavailableReason set to IN_PROGRESS.
  • New fields, categories, assessments and status values may be added over time. Clients must ignore fields and values they don't recognize.