# Interviews

Retrieve full interview results (scorecard, transcript, resume evaluation) and manage per-interview metadata.

## 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.

```json
{"openapi":"3.1.0","info":{"title":"HeyMilo Public API","version":"2.0.0"},"tags":[{"name":"Interviews","description":"Retrieve full interview results (scorecard, transcript, resume evaluation) and manage per-interview metadata."}],"servers":[{"url":"https://api.heymilo.ai","description":"Production"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-KEY","description":"API key for authentication. Pass your key in the X-API-KEY header."}},"schemas":{"SingleResponse_InterviewDataResponse_":{"properties":{"data":{"$ref":"#/components/schemas/InterviewDataResponse"},"meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta","description":"Optional metadata. Shape varies by endpoint."}},"type":"object","required":["data"],"title":"SingleResponse[InterviewDataResponse]"},"InterviewDataResponse":{"properties":{"object":{"type":"string","const":"interview_data","title":"Object","description":"Object type identifier.","default":"interview_data"},"interview_id":{"type":"string","title":"Interview Id","description":"Unique interview identifier."},"candidate_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Candidate Id","description":"Candidate identifier (shared across postings)."},"posting_id":{"type":"string","title":"Posting Id","description":"Posting this interview belongs to."},"name":{"type":"string","title":"Name","description":"Candidate's full name."},"email":{"type":"string","title":"Email","description":"Candidate's email."},"score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Score","description":"Overall match score (0-100)."},"status":{"type":"string","title":"Status","description":"Current candidate status: 'pending', 'in_progress', 'evaluating', 'completed', 'shortlisted', 'dismissed', 'knocked_out'. 'evaluating' means all workflow steps are done but the final score is still being computed."},"workflow":{"anyOf":[{"$ref":"#/components/schemas/CandidateWorkflow"},{"type":"null"}],"description":"Step-by-step workflow progress."},"web_interview":{"anyOf":[{"$ref":"#/components/schemas/WebInterviewResult"},{"type":"null"}],"description":"Voice/video interview results (null if not in workflow)."},"resume":{"anyOf":[{"$ref":"#/components/schemas/ResumeResult"},{"type":"null"}],"description":"Resume screening results (null if not in workflow)."},"sms":{"anyOf":[{"$ref":"#/components/schemas/SMSResult"},{"type":"null"}],"description":"SMS screening results (null if not in workflow)."},"form":{"anyOf":[{"$ref":"#/components/schemas/FormResult"},{"type":"null"}],"description":"Form screening results (null if not in workflow)."},"metadata":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Metadata","description":"Set of key-value pairs for storing additional information. Up to 50 keys, each key max 40 chars, each value max 500 chars."},"data":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Data","description":"Additional candidate data supplied at ingestion time."}},"type":"object","required":["interview_id","posting_id","name","email","status"],"title":"InterviewDataResponse","description":"Full interview results across all workflow steps.\n\nContains the candidate details plus per-agent results. Fields for\nagents not in the posting's workflow will be null."},"CandidateWorkflow":{"properties":{"steps":{"items":{"$ref":"#/components/schemas/WorkflowStepStatus"},"type":"array","title":"Steps","description":"Ordered list of workflow step statuses."},"all_complete":{"type":"boolean","title":"All Complete","description":"True when every step has been completed."},"last_activity_at":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Last Activity At","description":"Unix timestamp of the candidate's most recent interaction with any step."}},"type":"object","required":["steps","all_complete"],"title":"CandidateWorkflow","description":"Overall workflow progress for a candidate."},"WorkflowStepStatus":{"properties":{"step_id":{"type":"string","title":"Step Id","description":"Workflow step identifier."},"order":{"type":"integer","title":"Order","description":"Position in the workflow (1-based)."},"status":{"type":"string","title":"Status","description":"Step status: 'not_started', 'in_progress', 'completed', 'knocked_out'."},"started":{"type":"boolean","title":"Started","description":"Whether the candidate has started this step."},"completed":{"type":"boolean","title":"Completed","description":"Whether the candidate has completed this step."},"knocked_out":{"type":"boolean","title":"Knocked Out","description":"Whether the candidate was disqualified at this step.","default":false},"last_updated_at":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Last Updated At","description":"Unix timestamp of the last status change."}},"type":"object","required":["step_id","order","status","started","completed"],"title":"WorkflowStepStatus","description":"Status of a single workflow step for a candidate."},"WebInterviewResult":{"properties":{"object":{"type":"string","const":"web_interview_result","title":"Object","description":"Object type identifier.","default":"web_interview_result"},"interview_id":{"type":"string","title":"Interview Id","description":"Interview this result belongs to."},"match_score":{"type":"integer","title":"Match Score","description":"Overall match score (0-100)."},"highlights":{"items":{"type":"string"},"type":"array","title":"Highlights","description":"Candidate strengths identified by AI."},"lowlights":{"items":{"type":"string"},"type":"array","title":"Lowlights","description":"Areas for improvement."},"scorecard":{"items":{"$ref":"#/components/schemas/ScorecardQuestion"},"type":"array","title":"Scorecard","description":"Question-by-question evaluation."},"speech_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Speech Score","description":"Communication/speech score (0.0-5.0)."},"transcript":{"items":{"$ref":"#/components/schemas/TranscriptEntry"},"type":"array","title":"Transcript","description":"Full chronological interview transcript."},"audio_recording_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audio Recording Url","description":"Signed URL to audio recording."},"video_recording_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Video Recording Url","description":"Signed URL to video recording (if enabled)."},"tags":{"items":{"type":"string"},"type":"array","title":"Tags","description":"Tags extracted from the interview."}},"type":"object","required":["interview_id","match_score"],"title":"WebInterviewResult","description":"Complete results for the web interview (voice/video) step."},"ScorecardQuestion":{"properties":{"question_id":{"type":"string","title":"Question Id","description":"Unique question identifier."},"question_text":{"type":"string","title":"Question Text","description":"The question as asked to the candidate."},"score":{"type":"integer","title":"Score","description":"Score (1-10). 1 = weak, 10 = exceptional."},"score_weight":{"type":"integer","title":"Score Weight","description":"Importance weight (1-10). Higher = more important.","default":5},"evaluation_summary":{"type":"string","title":"Evaluation Summary","description":"AI-generated summary of the candidate's response."},"evaluation_criteria":{"type":"string","title":"Evaluation Criteria","description":"Criteria used to evaluate this question."},"score_1_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Score 1 Description","description":"What constitutes a score of 1."},"score_5_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Score 5 Description","description":"What constitutes a score of 5 (midpoint anchor on 1-10 scale)."},"not_scored":{"type":"boolean","title":"Not Scored","description":"If true, this question was informational only.","default":false},"rank":{"type":"integer","title":"Rank","description":"Order in which this question was asked (1-based)."},"transcript":{"items":{"$ref":"#/components/schemas/TranscriptEntry"},"type":"array","title":"Transcript","description":"Dialogue for this specific question."}},"type":"object","required":["question_id","question_text","score","evaluation_summary","evaluation_criteria","rank"],"title":"ScorecardQuestion","description":"Evaluation result for a single scored question."},"TranscriptEntry":{"properties":{"speaker":{"type":"string","title":"Speaker","description":"Who spoke: 'Interviewer', 'Candidate', or 'System'."},"text":{"type":"string","title":"Text","description":"The spoken or written text."},"timestamp":{"type":"number","title":"Timestamp","description":"Seconds from the start of the interview."},"timestamp_str":{"type":"string","title":"Timestamp Str","description":"Human-readable timestamp (MM:SS)."}},"type":"object","required":["speaker","text","timestamp","timestamp_str"],"title":"TranscriptEntry","description":"A single turn in an interview conversation."},"ResumeResult":{"properties":{"object":{"type":"string","const":"resume_result","title":"Object","description":"Object type identifier.","default":"resume_result"},"interview_id":{"type":"string","title":"Interview Id","description":"Interview this result belongs to."},"overall_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Overall Score","description":"Weighted score across all criteria (0.0-100.0)."},"is_eligible":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Eligible","description":"Whether the candidate meets all eligibility criteria."},"score_criteria":{"items":{"$ref":"#/components/schemas/ResumeScoreCriterion"},"type":"array","title":"Score Criteria","description":"Individual scoring criterion results."},"eligibility_criteria":{"items":{"$ref":"#/components/schemas/ResumeEligibilityCriterion"},"type":"array","title":"Eligibility Criteria","description":"Individual eligibility criterion results."},"resume_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resume Url","description":"URL to the uploaded resume."}},"type":"object","required":["interview_id"],"title":"ResumeResult","description":"Complete results for the resume screening step."},"ResumeScoreCriterion":{"properties":{"criteria_id":{"type":"string","title":"Criteria Id","description":"Unique criterion identifier."},"criteria_text":{"type":"string","title":"Criteria Text","description":"The criterion as defined by the recruiter."},"score":{"type":"number","title":"Score","description":"Score (0.0-10.0)."},"confidence":{"type":"number","title":"Confidence","description":"AI confidence (0.0-1.0)."},"reasons":{"items":{"type":"string"},"type":"array","title":"Reasons","description":"AI reasoning for the score."}},"type":"object","required":["criteria_id","criteria_text","score","confidence"],"title":"ResumeScoreCriterion","description":"Evaluation of a single resume scoring criterion."},"ResumeEligibilityCriterion":{"properties":{"criteria_id":{"type":"string","title":"Criteria Id","description":"Unique criterion identifier."},"criteria_text":{"type":"string","title":"Criteria Text","description":"The criterion description."},"passed":{"type":"boolean","title":"Passed","description":"Whether the candidate meets this criterion."},"confidence":{"type":"number","title":"Confidence","description":"AI confidence (0.0-1.0)."},"reasons":{"items":{"type":"string"},"type":"array","title":"Reasons","description":"AI reasoning for the pass/fail."}},"type":"object","required":["criteria_id","criteria_text","passed","confidence"],"title":"ResumeEligibilityCriterion","description":"Evaluation of a single resume eligibility (pass/fail) criterion."},"SMSResult":{"properties":{"object":{"type":"string","const":"sms_result","title":"Object","description":"Object type identifier.","default":"sms_result"},"interview_id":{"type":"string","title":"Interview Id","description":"Interview this result belongs to."},"is_eligible":{"type":"boolean","title":"Is Eligible","description":"Overall eligibility verdict."},"confidence":{"type":"number","title":"Confidence","description":"Overall AI confidence (0.0-1.0)."},"criteria":{"items":{"$ref":"#/components/schemas/SMSCriterionResult"},"type":"array","title":"Criteria","description":"Individual criterion results."},"transcript":{"items":{"$ref":"#/components/schemas/SMSMessage"},"type":"array","title":"Transcript","description":"Full SMS conversation."},"messages_sent":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Messages Sent","description":"Total messages sent by the agent."},"messages_received":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Messages Received","description":"Total messages received from the candidate."}},"type":"object","required":["interview_id","is_eligible","confidence"],"title":"SMSResult","description":"Complete results for the SMS screening step."},"SMSCriterionResult":{"properties":{"criteria_id":{"type":"string","title":"Criteria Id","description":"Unique criterion identifier."},"criteria_text":{"type":"string","title":"Criteria Text","description":"The question asked via SMS."},"passed":{"type":"boolean","title":"Passed","description":"Whether the candidate passed this criterion."},"confidence":{"type":"number","title":"Confidence","description":"AI confidence (0.0-1.0)."},"is_dealbreaker":{"type":"boolean","title":"Is Dealbreaker","description":"Whether failing this criterion disqualifies the candidate.","default":false},"reasons":{"items":{"type":"string"},"type":"array","title":"Reasons","description":"AI reasoning."}},"type":"object","required":["criteria_id","criteria_text","passed","confidence"],"title":"SMSCriterionResult","description":"Evaluation of a single SMS screening criterion."},"SMSMessage":{"properties":{"role":{"type":"string","title":"Role","description":"Message sender: 'agent' or 'candidate'."},"text":{"type":"string","title":"Text","description":"Message content."},"timestamp":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Timestamp","description":"Unix timestamp when the message was sent."}},"type":"object","required":["role","text"],"title":"SMSMessage","description":"A single message in an SMS screening conversation."},"FormResult":{"properties":{"object":{"type":"string","const":"form_result","title":"Object","description":"Object type identifier.","default":"form_result"},"interview_id":{"type":"string","title":"Interview Id","description":"Interview this result belongs to."},"overall_status":{"type":"string","title":"Overall Status","description":"Overall form status: 'passed', 'failed', 'pending'."},"questions":{"items":{"$ref":"#/components/schemas/FormQuestionResult"},"type":"array","title":"Questions","description":"Individual question results."}},"type":"object","required":["interview_id","overall_status"],"title":"FormResult","description":"Complete results for the form screening step."},"FormQuestionResult":{"properties":{"question_id":{"type":"string","title":"Question Id","description":"Unique question identifier."},"question_text":{"type":"string","title":"Question Text","description":"The question displayed on the form."},"question_type":{"type":"string","title":"Question Type","description":"Form field type: textarea, number, multiple-choice, file-upload, slider, date."},"is_knockout":{"type":"boolean","title":"Is Knockout","description":"Whether this is a knockout (pass/fail) question."},"passed":{"type":"boolean","title":"Passed","description":"Whether the candidate's answer passed validation."},"candidate_answer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Candidate Answer","description":"The candidate's submitted answer."},"expected_answer":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expected Answer","description":"The expected correct answer (for knockout questions)."}},"type":"object","required":["question_id","question_text","question_type","is_knockout","passed"],"title":"FormQuestionResult","description":"Result of a single form screening question."},"APIErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/APIError"}},"type":"object","required":["error"],"title":"APIErrorResponse"},"APIError":{"properties":{"type":{"type":"string","title":"Type","description":"Error category"},"code":{"type":"string","title":"Code","description":"Machine-readable error code"},"message":{"type":"string","title":"Message","description":"Human-readable summary"},"param":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Param","description":"Top-level parameter that caused the error"},"doc_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Doc Url","description":"Link to relevant documentation"},"errors":{"items":{"$ref":"#/components/schemas/APIErrorDetail"},"type":"array","title":"Errors","description":"Detailed per-field validation errors"}},"type":"object","required":["type","code","message"],"title":"APIError"},"APIErrorDetail":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code"},"message":{"type":"string","title":"Message","description":"Human-readable explanation"},"param":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Param","description":"Parameter that caused the error"}},"type":"object","required":["code","message"],"title":"APIErrorDetail"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/api/v2/interviews/{interview_id}/data":{"get":{"tags":["Interviews"],"summary":"Get full interview data","description":"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.","operationId":"getInterviewData","parameters":[{"name":"interview_id","in":"path","required":true,"schema":{"type":"string","title":"Interview Id"}},{"name":"X-API-KEY","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SingleResponse_InterviewDataResponse_"}}}},"401":{"description":"Invalid or missing API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}},"404":{"description":"Resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}}}}}}}
```

## Get interview metadata

> Retrieve the key-value metadata attached to a specific interview.

```json
{"openapi":"3.1.0","info":{"title":"HeyMilo Public API","version":"2.0.0"},"tags":[{"name":"Interviews","description":"Retrieve full interview results (scorecard, transcript, resume evaluation) and manage per-interview metadata."}],"servers":[{"url":"https://api.heymilo.ai","description":"Production"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-KEY","description":"API key for authentication. Pass your key in the X-API-KEY header."}},"schemas":{"SingleResponse_MetadataResponse_":{"properties":{"data":{"$ref":"#/components/schemas/MetadataResponse"},"meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta","description":"Optional metadata. Shape varies by endpoint."}},"type":"object","required":["data"],"title":"SingleResponse[MetadataResponse]"},"MetadataResponse":{"properties":{"object":{"type":"string","title":"Object","description":"Object type identifier."},"metadata":{"additionalProperties":{"type":"string"},"type":"object","title":"Metadata","description":"Key-value metadata pairs."}},"type":"object","required":["object"],"title":"MetadataResponse","description":"Response containing metadata for a resource."},"APIErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/APIError"}},"type":"object","required":["error"],"title":"APIErrorResponse"},"APIError":{"properties":{"type":{"type":"string","title":"Type","description":"Error category"},"code":{"type":"string","title":"Code","description":"Machine-readable error code"},"message":{"type":"string","title":"Message","description":"Human-readable summary"},"param":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Param","description":"Top-level parameter that caused the error"},"doc_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Doc Url","description":"Link to relevant documentation"},"errors":{"items":{"$ref":"#/components/schemas/APIErrorDetail"},"type":"array","title":"Errors","description":"Detailed per-field validation errors"}},"type":"object","required":["type","code","message"],"title":"APIError"},"APIErrorDetail":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code"},"message":{"type":"string","title":"Message","description":"Human-readable explanation"},"param":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Param","description":"Parameter that caused the error"}},"type":"object","required":["code","message"],"title":"APIErrorDetail"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/api/v2/interviews/{interview_id}/metadata":{"get":{"tags":["Interviews"],"summary":"Get interview metadata","description":"Retrieve the key-value metadata attached to a specific interview.","operationId":"getInterviewMetadata","parameters":[{"name":"interview_id","in":"path","required":true,"schema":{"type":"string","title":"Interview Id"}},{"name":"X-API-KEY","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SingleResponse_MetadataResponse_"}}}},"401":{"description":"Invalid or missing API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}},"404":{"description":"Resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}}}}}}}
```

## Set interview metadata

> Set or update metadata for a specific interview. Up to 50 keys, each key max 40 chars, each value max 500 chars. All values must be strings.

```json
{"openapi":"3.1.0","info":{"title":"HeyMilo Public API","version":"2.0.0"},"tags":[{"name":"Interviews","description":"Retrieve full interview results (scorecard, transcript, resume evaluation) and manage per-interview metadata."}],"servers":[{"url":"https://api.heymilo.ai","description":"Production"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-KEY","description":"API key for authentication. Pass your key in the X-API-KEY header."}},"schemas":{"MetadataRequest":{"properties":{"metadata":{"additionalProperties":{"type":"string"},"type":"object","title":"Metadata","description":"Key-value pairs to set. Up to 50 keys, each key max 40 chars, each value max 500 chars. All values must be strings."}},"type":"object","required":["metadata"],"title":"MetadataRequest","description":"Request body for setting metadata on a resource."},"SingleResponse_MetadataResponse_":{"properties":{"data":{"$ref":"#/components/schemas/MetadataResponse"},"meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta","description":"Optional metadata. Shape varies by endpoint."}},"type":"object","required":["data"],"title":"SingleResponse[MetadataResponse]"},"MetadataResponse":{"properties":{"object":{"type":"string","title":"Object","description":"Object type identifier."},"metadata":{"additionalProperties":{"type":"string"},"type":"object","title":"Metadata","description":"Key-value metadata pairs."}},"type":"object","required":["object"],"title":"MetadataResponse","description":"Response containing metadata for a resource."},"APIErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/APIError"}},"type":"object","required":["error"],"title":"APIErrorResponse"},"APIError":{"properties":{"type":{"type":"string","title":"Type","description":"Error category"},"code":{"type":"string","title":"Code","description":"Machine-readable error code"},"message":{"type":"string","title":"Message","description":"Human-readable summary"},"param":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Param","description":"Top-level parameter that caused the error"},"doc_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Doc Url","description":"Link to relevant documentation"},"errors":{"items":{"$ref":"#/components/schemas/APIErrorDetail"},"type":"array","title":"Errors","description":"Detailed per-field validation errors"}},"type":"object","required":["type","code","message"],"title":"APIError"},"APIErrorDetail":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code"},"message":{"type":"string","title":"Message","description":"Human-readable explanation"},"param":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Param","description":"Parameter that caused the error"}},"type":"object","required":["code","message"],"title":"APIErrorDetail"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/api/v2/interviews/{interview_id}/metadata":{"post":{"tags":["Interviews"],"summary":"Set interview metadata","description":"Set or update metadata for a specific interview. Up to 50 keys, each key max 40 chars, each value max 500 chars. All values must be strings.","operationId":"setInterviewMetadata","parameters":[{"name":"interview_id","in":"path","required":true,"schema":{"type":"string","title":"Interview Id"}},{"name":"X-API-KEY","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetadataRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SingleResponse_MetadataResponse_"}}}},"401":{"description":"Invalid or missing API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}},"404":{"description":"Resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}}}}}}}
```

## Delete interview metadata

> Remove all metadata from a specific interview.

```json
{"openapi":"3.1.0","info":{"title":"HeyMilo Public API","version":"2.0.0"},"tags":[{"name":"Interviews","description":"Retrieve full interview results (scorecard, transcript, resume evaluation) and manage per-interview metadata."}],"servers":[{"url":"https://api.heymilo.ai","description":"Production"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-KEY","description":"API key for authentication. Pass your key in the X-API-KEY header."}},"schemas":{"SingleResponse_MetadataResponse_":{"properties":{"data":{"$ref":"#/components/schemas/MetadataResponse"},"meta":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Meta","description":"Optional metadata. Shape varies by endpoint."}},"type":"object","required":["data"],"title":"SingleResponse[MetadataResponse]"},"MetadataResponse":{"properties":{"object":{"type":"string","title":"Object","description":"Object type identifier."},"metadata":{"additionalProperties":{"type":"string"},"type":"object","title":"Metadata","description":"Key-value metadata pairs."}},"type":"object","required":["object"],"title":"MetadataResponse","description":"Response containing metadata for a resource."},"APIErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/APIError"}},"type":"object","required":["error"],"title":"APIErrorResponse"},"APIError":{"properties":{"type":{"type":"string","title":"Type","description":"Error category"},"code":{"type":"string","title":"Code","description":"Machine-readable error code"},"message":{"type":"string","title":"Message","description":"Human-readable summary"},"param":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Param","description":"Top-level parameter that caused the error"},"doc_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Doc Url","description":"Link to relevant documentation"},"errors":{"items":{"$ref":"#/components/schemas/APIErrorDetail"},"type":"array","title":"Errors","description":"Detailed per-field validation errors"}},"type":"object","required":["type","code","message"],"title":"APIError"},"APIErrorDetail":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code"},"message":{"type":"string","title":"Message","description":"Human-readable explanation"},"param":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Param","description":"Parameter that caused the error"}},"type":"object","required":["code","message"],"title":"APIErrorDetail"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/api/v2/interviews/{interview_id}/metadata":{"delete":{"tags":["Interviews"],"summary":"Delete interview metadata","description":"Remove all metadata from a specific interview.","operationId":"deleteInterviewMetadata","parameters":[{"name":"interview_id","in":"path","required":true,"schema":{"type":"string","title":"Interview Id"}},{"name":"X-API-KEY","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"Authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"X-Workspace-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Workspace-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SingleResponse_MetadataResponse_"}}}},"401":{"description":"Invalid or missing API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}},"404":{"description":"Resource not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIErrorResponse"}}}}}}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.admin.heymilo.ai/api-next-gen/reference/interviews.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
