Concepts

Concepts

Interviewers, candidates, invitations, sessions and results, and how they relate.

The objects

ObjectId prefixWhat it is
Interviewerint_An interview you designed: role, questions, rubric, duration.
Candidatecand_A person, keyed by email within your organisation.
Invitationinv_One candidate invited to one interviewer. Carries the link.
Sessionses_The interview itself: timing, recording, transcript.
Resultres_Scores and evidence for a completed session.
Importimp_A spreadsheet of candidates invited in one go.
Exportexp_A CSV or Excel file of sessions or results.
Eventevt_Something that happened, delivered to your webhooks.

An invitation and its session share the same underlying record, so invitation.session_id and session.invitation_id always point at each other. A session has at most one result.

Invitation and session status

The invitation status answers "where is this candidate?". The session status is finer grained and follows the interview itself.

Session statusInvitation statusMeaning
pendingpendingInvited, not started. The link works.
in_progressstartedThe candidate is in the interview.
processingstartedFinished; Heizen is scoring it.
completedcompletedScored. The result is ready.
abortedabandonedThe candidate left and did not come back.
expiredexpiredThe link ran out before the candidate started.
cancelledcanceledYou cancelled the invitation before it started.

Invitations spell it canceled and sessions cancelled. Filter each list with its own spelling.

A link lasts 14 days by default. Set expires_at when you create an invitation to choose a different time, up to 90 days out. Extend a pending or expired invitation to push the expiry out, resend to issue a fresh link (the old one stops working), or cancel to close it.

Results are evidence, not verdicts

A result holds an overall score, dimension scores, a summary, the strengths and gaps the interviewer observed, per-question scores and an integrity summary. It never contains a hire or reject recommendation. low_confidence is true when the interview was too short or too disrupted to score well; read low_confidence_reason before relying on the numbers.

Test mode and live mode

Every API key belongs to one mode. Everything it creates carries livemode: false or true, and each mode sees only its own data: a test key cannot read live invitations, and webhook endpoints only receive events from their own mode.

TestLive
Key prefixhz_test_hz_live_
Interviews run for realYesYes
Emails sent (unless send_email: false)YesYes
Credits usedNeverOne when the candidate starts

A candidate's email belongs to one mode. Inviting an email that already exists in the other mode fails with candidate_exists_in_other_mode, so use different addresses for testing.

Credits

A live invitation uses one credit the first time its session starts. Creating, resending or cancelling an invitation costs nothing. When credits run out, live invitation requests fail with credits_exhausted. Check your balance with GET /v1/usage or on Developers → Usage.