Skip to main content
Simple end-to-end flow for testing the Interview API: create (or reuse) a job, create an interview for a candidate, then poll for the report. Base URLs Every endpoint expects Authorization: Bearer <api-key>. See API reference → Authentication.

0. (Optional) List current available jobs

Call GET /jobs. Query params: pageIndex (default 1), pageSize (default 20, max 100).
Use this to check if a job already exists before creating a new one — see the billing note below. Reuse an existing qodeJobId in step 2 if found.

1. Create a job → get qodeJobId

Call POST /jobs.
Required: title, description. Optional: language (default EN).
Send description as rich text — HTML markup (<p>, <ul>, <br>) or at least explicit \n line breaks, minimum 700 characters. The JD is stored and rendered as-is (JD PDF, interview context), so a single flattened plain-text line loses all formatting. It must state a workplace type (On-site/Remote/Hybrid) and a location — a description missing either returns 422 naming what to add.
Save data.qodeJobId — used in steps 2 and 3.
POST /jobs charges the same as creating a job via the Qode platform UI — each API job-create call consumes credit identically to a manual job create. Don’t spam test jobs on prod; use staging for repeated test runs.

2. Create an interview for a candidate

Call POST /interviews.
All 4 fields required.
Send interview_link to the candidate.

3. Get the list of meetings for a qodeJobId

Call GET /interviews?qodeJobId=<id>. Returns the list of interviews/meetings for that job, each with a meetingId. Needed for step 4. Status field: isCompleted (enum) per meeting: Only call step 4 for meetings where isCompleted is COMPLETED or PARTIALLY_COMPLETE.

4. Get details for a meetingId

Call GET /interviews/{meetingId}/report. Call this only for meetings with isCompleted = COMPLETED or PARTIALLY_COMPLETE (from step 3) — INCOMPLETED/null meetings have no report data. Response data fields of interest:
  • completedAt — set once the interview is finished
  • transcript — full scored report (overallScore, skillScore, feedbackSummary, hiringDecision, questionSummary, etc.)
Recommended polling (while isCompleted is null/INCOMPLETED in step 3): every 30–60s, timeout after ~15 min, retry on 5xx with backoff.

Error codes (all endpoints)

Quick curl sequence