Docs

Invite and follow an interview

Create an invitation, track independent states, and retrieve the candidate evaluation.

Use this workflow after a report has a usable completed analysis. Your backend needs interviews:write for invitation actions and interviews:read to track state and retrieve results.

Quote and invite

With interviews:write, POST this body to /api/v1/interview-quotes:

{ "reportId": "REPORT_ID", "candidateEmail": "candidate@example.test", "sendEmail": true }

POST the same fields plus quoteFingerprint from the quote to /api/v1/interviews, with a stable Idempotency-Key. A 202 returns interviewId, statusUrl, and delivery status. With sendEmail: true, invitationToken is null. Set sendEmail: false only when your own system will deliver the candidate link /interview/{invitationToken}; the response then includes the private invitation credential. Replay only recovers a credential for an eligible current invitation; old links cannot enter a replacement attempt.

Poll /api/v1/interviews/{id}/status using interviews:read, or subscribe to the interview events. Interpret the four axes independently:

FieldStates
lifecycleinvited, in_progress, completed, expired, superseded
preparationqueued, processing, ready, failed
evaluationnot_started, processing, ready, failed
emailDeliverynot_requested, queued, sent, failed

completed means candidate completion; evaluation: ready means the report can be read at /api/v1/interviews/{id}/result?schemaVersion=1. This response includes strengths, concerns, evidence, requirement confidence/coverage where supported, integrity indicators, and review limitations. Skill scores use 0–10 and readiness uses 0–100; missing measurements are null. It excludes raw transcripts and audio.

POST /api/v1/interviews/{id}/resend with a new idempotency key to queue another email for an eligible pending attempt. Resend preserves the current credential and does not charge for a new interview. Provider acknowledgements can be lost, so email may be duplicated. sent means provider acceptance, not inbox delivery.

For another interview, obtain a fresh quote and POST the invitation body to /api/v1/interviews/{id}/reinterview with a new key. This creates a new logical attempt and preserves the old public result. An in-progress interview cannot be replaced. Versions are captured at admission; a platform reassignment does not rewrite an existing attempt.

Complete request sequence

Supply PROBB_URL, PROBB_API_KEY, and REPORT_ID from your environment and prior analysis. Use a new INVITE_KEY for this intentional invitation; retain it for retries.

jq -n --arg report "$REPORT_ID" \
  '{reportId:$report,candidateEmail:"candidate@example.test",sendEmail:true}' > interview-quote-input.json
curl --fail-with-body "$PROBB_URL/api/v1/interview-quotes" \
  -H "Authorization: Bearer $PROBB_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @interview-quote-input.json > interview-quote.json
jq --arg fp "$(jq -r '.data.fingerprint' interview-quote.json)" \
  '. + {quoteFingerprint:$fp}' interview-quote-input.json > interview-input.json
curl --fail-with-body "$PROBB_URL/api/v1/interviews" \
  -H "Authorization: Bearer $PROBB_API_KEY" -H 'Content-Type: application/json' \
  -H "Idempotency-Key: $INVITE_KEY" --data-binary @interview-input.json > invitation.json
INTERVIEW_ID=$(jq -r '.data.interviewId' invitation.json)
curl --fail-with-body "$PROBB_URL/api/v1/interviews/$INTERVIEW_ID/status" \
  -H "Authorization: Bearer $PROBB_API_KEY"

Do not send example invitations to real recipients while testing; use the isolated sandbox. For self-delivery, change sendEmail before quoting, securely construct the candidate link on the application origin, and deliver it only to the intended candidate.

Choose the right follow-up

SituationAction
Invitation request timed outRetry the identical request/key
Candidate needs the same invitation email againResend with a new intentional resend key
Candidate finished but result is nullInspect evaluation; wait for ready or handle its failure
Another session is requiredReview a new quote and create a reinterview
Invitation expired or was supersededDo not reuse its credential; review the current attempt

Interview events can replace routine polling. The candidate guide explains microphone, consent, and recovery instructions for recipients.

On this page