Skip to main content
GET
Get interview result details with transcript

Authorizations

Authorization
string
header
required

Supabase JWT — Authorization: Bearer <token>.

Query Parameters

interview_result_id
string<uuid>
required

The interview result (interview_result.id) to fetch the transcript and details for.

Minimum string length: 1
Example:

"93c98d21-e04d-4a84-9afa-ed154cf73636"

get_signed_recordings
enum<string>
default:false

When true, includes short-lived signed recording URLs for the session, the video introduction, and each transcript answer.

Available options:
true,
false
Example:

"false"

Response

The interview result and transcript.

The interview result with its transcript, produced by the interview_transcript RPC and projected onto these fields.

id
string | null

The interview result (interview_result.id). Company staff and the service key only.

merchant_id
string | null

Owning company (merchant.id). Company staff and the service key only.

profile_interview_id
string | null

Candidate (profile_interview.id). Company staff and the service key only.

candidate_name
string | null

Candidate name. Company staff and the service key only.

question_set_id
string | null

The interview taken (interview_def_set.id). Company staff and the service key only.

position_id
string | null

The position (position_def_set.id) when the interview is a step of a multi-stage position. Company staff and the service key only.

position_result_step_id
string | null

The application step (position_result_step.id) of a multi-stage interview. Company staff and the service key only.

position_result_id
string | null

The application (position_result.id) of a multi-stage interview, when visible to you. Company staff and the service key only.

type
string | null

Product type (type_interview: interview, assessment, coaching, persona, persona_interview, public_avatar). Company staff and the service key only.

result_status
string | null

Status of the result row (type_status: active, draft, archived, deleted). The session status is status. Company staff and the service key only.

processing_status
string | null

Analysis status (type_processing_status: new, processing, completed, failed). Company staff and the service key only.

is_test
boolean | null

Whether a test result. Company staff and the service key only.

recruiter_shortlist
boolean | null

Whether a recruiter shortlisted the result. Company staff and the service key only.

recruiter_go_next_round
boolean | null

The recruiter's decision on this interview result: true accepted, false rejected, null not decided. Company staff and the service key only.

decision_status
enum<string> | null

Where the decision stands (type_position_decision): recruiter_accept / recruiter_reject (a recruiter decided), ai_accept / ai_reject (the AI decided), recruiter_action (waiting for a recruiter), candidate_action (waiting for the candidate), processing (being analysed). For an interview step of a multi-stage application, the application's. Company staff and the service key only.

Available options:
recruiter_accept,
recruiter_reject,
recruiter_action,
ai_accept,
ai_reject,
candidate_action,
processing
outcome
enum<string> | null

Final outcome (type_outcome). For a multi-stage interview, the application's. Company staff and the service key only.

Available options:
pending,
hired,
declined
outcome_at
string | null

When the outcome was set (ISO 8601). Company staff and the service key only.

hire_start_date
string | null

Start date of a hire (YYYY-MM-DD). Company staff and the service key only.

decision_reason_id
string | null

Decision reason (an id from merchant-reason-list). For a multi-stage interview, the application's. Company staff and the service key only.

decision_reason_label
string | null

The decision reason's label; present with decision_reason_id. Company staff and the service key only.

decision_reason_note
string | null

Free-text note given with the decision reason. Company staff and the service key only.

assigned_profile_id
string | null

Staff member assigned to the result or, for a multi-stage interview, to the application (profile.id). Company staff and the service key only.

withdrawn_at
string | null

Multi-stage interview: when the application was withdrawn (ISO 8601). Company staff and the service key only.

score
number | null

Overall interview score.

score_simulation
number | null

Overall simulated score.

score_text
string | null

Human-readable score summary.

score_sentiment
number | null

Sentiment sub-score.

score_words_per_minute
number | null

Speaking-pace (words per minute) sub-score.

score_pronunciation
number | null

Pronunciation sub-score.

score_answer
number | null

Aggregate answer sub-score.

status
string | null

Coach/interview status (coach_status), e.g. started, completed.

start
string | null

Interview start timestamp (training_start, ISO 8601).

end
string | null

Interview end timestamp (training_end, ISO 8601).

duration
number | null

Total duration in deciseconds (duration_ds).

ai_interview_coverage_percentage
number | null

Percentage of the intended interview the AI judged to be covered.

ai_completion_reason
string | null

Why the interview completed (ai_completed_reason).

ai_analysis
string | null

Candidate-facing AI analysis of the whole interview.

ai_analysis_recruiter
string | null

Recruiter-facing AI analysis of the whole interview.

ai_analysis_other
any | null

Session-level AI analyses keyed by analysis name (jsonb). strengths_concerns: { strengths: string[], concerns: string[] } (0-4 items each, recruiter-facing; called hiring_reasons with reasons_to_hire / reasons_not_to_hire inside before 2026-09-15, and rows written before then may still carry that shape). takeaways: { what_went_well: string[], next_steps: { text, priority: impact | quick | longterm, guidance: { kind: say | structure | length | exercise | perspective, text }, proof? }[], fixed?: string[] } (coaching / persona sessions, learner-facing; proof entries are { kind: quote | ai_summary | transcript_ref | document, text, ref?: { result_question_id } }; fixed lists the steps from the previous attempt that the learner did this time). multi_department: the multi-department-selection analysis. score_rationale: the rubric bracket of the session score and evidenced counts. key_statement: { quote, result_question_id }, the one verbatim quotation a recruiter would remember the candidate by (interview / persona_interview, absent when nothing distinctive was said). Further keys may be added.

ai_analysis_recruiter_why_hire
any | null
deprecated

Reasons to hire (list). Deprecated: a copy of ai_analysis_other.strengths_concerns.strengths, kept for existing integrations.

ai_analysis_recruiter_why_not_hire
any | null
deprecated

Reasons not to hire (list). Deprecated: a copy of ai_analysis_other.strengths_concerns.concerns, kept for existing integrations.

recruiter_risks
any | null

Detected recruiter risk flags (jsonb).

user_feedback_recruiter
string | null

Recruiter-entered feedback note.

recording_local_path
string | null

Storage path of the full session recording. When the candidate restarted, this is the latest session.

recording_local_path_history
string[] | null

Storage paths of the earlier sessions when the candidate restarted the interview, oldest first. Null when there is only one recording.

recording_is_video
boolean | null

Whether the session recording is video.

video_introduction_local_path
string | null

Storage path of the candidate video introduction.

recording_url
string | null

Signed session-recording URL; present only when get_signed_recordings=true.

recording_url_history
(string | null)[]

Signed URLs of the earlier sessions, in the same order as recording_local_path_history; null for a file that could not be signed. Present only when get_signed_recordings=true and the candidate restarted.

video_introduction_url
string | null

Signed video-introduction URL; present only when get_signed_recordings=true.

transcript
object[]

Ordered interactions (questions + answers) of the interview.