Get full interview data
curl --request GET \
--url https://api.heymilo.ai/api/v2/interviews/{interview_id}/data \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.heymilo.ai/api/v2/interviews/{interview_id}/data"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://api.heymilo.ai/api/v2/interviews/{interview_id}/data', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.heymilo.ai/api/v2/interviews/{interview_id}/data",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.heymilo.ai/api/v2/interviews/{interview_id}/data"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.heymilo.ai/api/v2/interviews/{interview_id}/data")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.heymilo.ai/api/v2/interviews/{interview_id}/data")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": {
"interview_id": "D536A69A4090E13F",
"posting_id": "13D77095",
"name": "Jane Smith",
"email": "jane.smith@example.com",
"status": "completed",
"object": "interview_data",
"candidate_id": "cand_def456",
"score": 78.5,
"report_url": "https://admin.heymilo.ai/report/electrical-image-1855",
"workflow": {
"steps": [
{
"step_id": "agent_vi_001",
"order": 1,
"status": "completed",
"started": true,
"completed": true,
"knocked_out": false,
"last_updated_at": 1739713800
}
],
"all_complete": false,
"last_activity_at": 1739715600
},
"web_interview": {
"interview_id": "D536A69A4090E13F",
"match_score": 82,
"object": "web_interview_result",
"highlights": [
"Strong system design skills"
],
"lowlights": [
"Limited frontend experience"
],
"scorecard": [
{
"question_id": "vq_abc123",
"question_text": "Walk me through how you would design a URL shortener.",
"score": 7,
"evaluation_summary": "Strong system design thinking with clear trade-offs...",
"evaluation_criteria": "Evaluate system design, scalability, and trade-offs.",
"rank": 1,
"score_weight": 8,
"score_1_description": "Cannot articulate a basic design.",
"score_5_description": "Comprehensive design with trade-off analysis.",
"not_scored": false,
"transcript": [
{
"speaker": "Candidate",
"text": "I have 5 years of experience building distributed systems.",
"timestamp": 42.5,
"timestamp_str": "00:42"
}
]
}
],
"speech_score": 3.5,
"transcript": [
{
"speaker": "Candidate",
"text": "I have 5 years of experience building distributed systems.",
"timestamp": 42.5,
"timestamp_str": "00:42"
}
],
"audio_recording_url": "https://cdn.heymilo.io/recordings/abc123.mp3",
"video_recording_url": "https://cdn.heymilo.io/recordings/abc123.mp4",
"tags": [
"<string>"
]
},
"resume": {
"interview_id": "D536A69A4090E13F",
"object": "resume_result",
"overall_score": 78.5,
"is_eligible": true,
"score_criteria": [
{
"criteria_id": "rsc_abc123",
"criteria_text": "Experience with distributed systems",
"score": 8.5,
"confidence": 0.89,
"reasons": [
"<string>"
]
}
],
"eligibility_criteria": [
{
"criteria_id": "rec_abc123",
"criteria_text": "Must have a Bachelor's degree in CS",
"passed": true,
"confidence": 0.92,
"reasons": [
"<string>"
]
}
],
"resume_url": "https://cdn.heymilo.io/resumes/abc123.pdf"
},
"sms": {
"interview_id": "D536A69A4090E13F",
"is_eligible": true,
"confidence": 0.88,
"object": "sms_result",
"criteria": [
{
"criteria_id": "sms_abc123",
"criteria_text": "Are you available to start within 2 weeks?",
"passed": true,
"confidence": 0.85,
"is_dealbreaker": false,
"reasons": [
"<string>"
]
}
],
"transcript": [
{
"role": "candidate",
"text": "Yes, I can start within 2 weeks.",
"timestamp": 1708012800
}
],
"messages_sent": 8,
"messages_received": 6
},
"form": {
"interview_id": "D536A69A4090E13F",
"overall_status": "passed",
"object": "form_result",
"questions": [
{
"question_id": "fq_abc123",
"question_text": "Are you authorized to work in the US?",
"question_type": "multiple-choice",
"is_knockout": true,
"passed": true,
"candidate_answer": "yes",
"expected_answer": "yes"
}
]
},
"cheat_detection": {
"object": "cheat_detection",
"overall_confidence": 0.64,
"overall_ranking": 2,
"enabled": true,
"threshold": 70,
"types": [
"tab_switching",
"ai_scripted_answer"
],
"web_interview": {
"cheat_detection_result": {
"cheating_detected": true,
"cheating_confidence": 0.82,
"cheating_instances": [
{
"reasoning": "Answer matches AI-generated phrasing patterns.",
"transcript_references": [
{
"user_friendly_timestamp": "02:14",
"text": "As an AI language model, I would approach this by...",
"actual_timestamp": 134
}
]
}
]
},
"llm_detection_result": {
"llm_generated_detected": true,
"detection_confidence": 0.71,
"llm_detected_segments": [
{
"segment_text": "In conclusion, the optimal strategy would be...",
"segment_confidence": 0.77,
"reasoning": "Highly formulaic structure uncommon in speech."
}
],
"gptzero_metrics": {
"completely_generated_probability": 0.65,
"overall_ai_score": 0.7,
"average_generated_probability": 0.6
}
},
"unusual_delay_detection": {
"delay_detected": true,
"delay_confidence": 0.58,
"overall_score": 0.5,
"confidence_level": 0.6,
"unusual_delay_instances": [
{}
]
},
"tab_switch_detection": {
"first_switch_timestamp": 42,
"total_count": 3
},
"interview_integrity": {
"job_id": "<string>",
"status": "completed",
"filename": "<string>",
"file_type": "video/mp4",
"created_at": "<string>",
"updated_at": "<string>",
"result": {},
"error": "<string>",
"comprehensive": {},
"aggregated": {
"movements": [
{
"type": "Eye Movement",
"confidence": 0.8,
"image": "<string>",
"timestamp": 91
}
]
}
},
"integrity_analysis_v2": {}
},
"resume": {
"gpt_detection": {
"version": "<string>",
"scanId": "<string>",
"documents": [
{}
],
"neatVersion": "<string>",
"editorDocumentId": "<string>"
}
}
},
"metadata": {
"external_id": "interview_abc"
},
"data": {}
},
"meta": {}
}{
"error": {
"type": "invalid_request_error",
"code": "validation_error",
"message": "The request body failed validation",
"param": "<string>",
"doc_url": "<string>",
"errors": [
{
"code": "invalid_param",
"message": "title must be between 3 and 200 characters",
"param": "title"
}
]
}
}{
"error": {
"type": "invalid_request_error",
"code": "validation_error",
"message": "The request body failed validation",
"param": "<string>",
"doc_url": "<string>",
"errors": [
{
"code": "invalid_param",
"message": "title must be between 3 and 200 characters",
"param": "title"
}
]
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"error": {
"type": "invalid_request_error",
"code": "validation_error",
"message": "The request body failed validation",
"param": "<string>",
"doc_url": "<string>",
"errors": [
{
"code": "invalid_param",
"message": "title must be between 3 and 200 characters",
"param": "title"
}
]
}
}Get full interview data
Retrieve the full interview results across all workflow steps. Includes per-agent results (scorecard, transcript, resume evaluation, SMS screening, form results). Returns status ‘not_ready’ if the candidate has not finished.
GET
/
api
/
v2
/
interviews
/
{interview_id}
/
data
Get full interview data
curl --request GET \
--url https://api.heymilo.ai/api/v2/interviews/{interview_id}/data \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.heymilo.ai/api/v2/interviews/{interview_id}/data"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://api.heymilo.ai/api/v2/interviews/{interview_id}/data', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.heymilo.ai/api/v2/interviews/{interview_id}/data",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.heymilo.ai/api/v2/interviews/{interview_id}/data"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.heymilo.ai/api/v2/interviews/{interview_id}/data")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.heymilo.ai/api/v2/interviews/{interview_id}/data")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": {
"interview_id": "D536A69A4090E13F",
"posting_id": "13D77095",
"name": "Jane Smith",
"email": "jane.smith@example.com",
"status": "completed",
"object": "interview_data",
"candidate_id": "cand_def456",
"score": 78.5,
"report_url": "https://admin.heymilo.ai/report/electrical-image-1855",
"workflow": {
"steps": [
{
"step_id": "agent_vi_001",
"order": 1,
"status": "completed",
"started": true,
"completed": true,
"knocked_out": false,
"last_updated_at": 1739713800
}
],
"all_complete": false,
"last_activity_at": 1739715600
},
"web_interview": {
"interview_id": "D536A69A4090E13F",
"match_score": 82,
"object": "web_interview_result",
"highlights": [
"Strong system design skills"
],
"lowlights": [
"Limited frontend experience"
],
"scorecard": [
{
"question_id": "vq_abc123",
"question_text": "Walk me through how you would design a URL shortener.",
"score": 7,
"evaluation_summary": "Strong system design thinking with clear trade-offs...",
"evaluation_criteria": "Evaluate system design, scalability, and trade-offs.",
"rank": 1,
"score_weight": 8,
"score_1_description": "Cannot articulate a basic design.",
"score_5_description": "Comprehensive design with trade-off analysis.",
"not_scored": false,
"transcript": [
{
"speaker": "Candidate",
"text": "I have 5 years of experience building distributed systems.",
"timestamp": 42.5,
"timestamp_str": "00:42"
}
]
}
],
"speech_score": 3.5,
"transcript": [
{
"speaker": "Candidate",
"text": "I have 5 years of experience building distributed systems.",
"timestamp": 42.5,
"timestamp_str": "00:42"
}
],
"audio_recording_url": "https://cdn.heymilo.io/recordings/abc123.mp3",
"video_recording_url": "https://cdn.heymilo.io/recordings/abc123.mp4",
"tags": [
"<string>"
]
},
"resume": {
"interview_id": "D536A69A4090E13F",
"object": "resume_result",
"overall_score": 78.5,
"is_eligible": true,
"score_criteria": [
{
"criteria_id": "rsc_abc123",
"criteria_text": "Experience with distributed systems",
"score": 8.5,
"confidence": 0.89,
"reasons": [
"<string>"
]
}
],
"eligibility_criteria": [
{
"criteria_id": "rec_abc123",
"criteria_text": "Must have a Bachelor's degree in CS",
"passed": true,
"confidence": 0.92,
"reasons": [
"<string>"
]
}
],
"resume_url": "https://cdn.heymilo.io/resumes/abc123.pdf"
},
"sms": {
"interview_id": "D536A69A4090E13F",
"is_eligible": true,
"confidence": 0.88,
"object": "sms_result",
"criteria": [
{
"criteria_id": "sms_abc123",
"criteria_text": "Are you available to start within 2 weeks?",
"passed": true,
"confidence": 0.85,
"is_dealbreaker": false,
"reasons": [
"<string>"
]
}
],
"transcript": [
{
"role": "candidate",
"text": "Yes, I can start within 2 weeks.",
"timestamp": 1708012800
}
],
"messages_sent": 8,
"messages_received": 6
},
"form": {
"interview_id": "D536A69A4090E13F",
"overall_status": "passed",
"object": "form_result",
"questions": [
{
"question_id": "fq_abc123",
"question_text": "Are you authorized to work in the US?",
"question_type": "multiple-choice",
"is_knockout": true,
"passed": true,
"candidate_answer": "yes",
"expected_answer": "yes"
}
]
},
"cheat_detection": {
"object": "cheat_detection",
"overall_confidence": 0.64,
"overall_ranking": 2,
"enabled": true,
"threshold": 70,
"types": [
"tab_switching",
"ai_scripted_answer"
],
"web_interview": {
"cheat_detection_result": {
"cheating_detected": true,
"cheating_confidence": 0.82,
"cheating_instances": [
{
"reasoning": "Answer matches AI-generated phrasing patterns.",
"transcript_references": [
{
"user_friendly_timestamp": "02:14",
"text": "As an AI language model, I would approach this by...",
"actual_timestamp": 134
}
]
}
]
},
"llm_detection_result": {
"llm_generated_detected": true,
"detection_confidence": 0.71,
"llm_detected_segments": [
{
"segment_text": "In conclusion, the optimal strategy would be...",
"segment_confidence": 0.77,
"reasoning": "Highly formulaic structure uncommon in speech."
}
],
"gptzero_metrics": {
"completely_generated_probability": 0.65,
"overall_ai_score": 0.7,
"average_generated_probability": 0.6
}
},
"unusual_delay_detection": {
"delay_detected": true,
"delay_confidence": 0.58,
"overall_score": 0.5,
"confidence_level": 0.6,
"unusual_delay_instances": [
{}
]
},
"tab_switch_detection": {
"first_switch_timestamp": 42,
"total_count": 3
},
"interview_integrity": {
"job_id": "<string>",
"status": "completed",
"filename": "<string>",
"file_type": "video/mp4",
"created_at": "<string>",
"updated_at": "<string>",
"result": {},
"error": "<string>",
"comprehensive": {},
"aggregated": {
"movements": [
{
"type": "Eye Movement",
"confidence": 0.8,
"image": "<string>",
"timestamp": 91
}
]
}
},
"integrity_analysis_v2": {}
},
"resume": {
"gpt_detection": {
"version": "<string>",
"scanId": "<string>",
"documents": [
{}
],
"neatVersion": "<string>",
"editorDocumentId": "<string>"
}
}
},
"metadata": {
"external_id": "interview_abc"
},
"data": {}
},
"meta": {}
}{
"error": {
"type": "invalid_request_error",
"code": "validation_error",
"message": "The request body failed validation",
"param": "<string>",
"doc_url": "<string>",
"errors": [
{
"code": "invalid_param",
"message": "title must be between 3 and 200 characters",
"param": "title"
}
]
}
}{
"error": {
"type": "invalid_request_error",
"code": "validation_error",
"message": "The request body failed validation",
"param": "<string>",
"doc_url": "<string>",
"errors": [
{
"code": "invalid_param",
"message": "title must be between 3 and 200 characters",
"param": "title"
}
]
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"error": {
"type": "invalid_request_error",
"code": "validation_error",
"message": "The request body failed validation",
"param": "<string>",
"doc_url": "<string>",
"errors": [
{
"code": "invalid_param",
"message": "title must be between 3 and 200 characters",
"param": "title"
}
]
}
}Authorizations
API key for authentication. Pass your key in the X-API-KEY header.
Path Parameters
Response
Successful Response
Was this page helpful?
⌘I