Skip to main content
The Assessments API lets you create voice-based interviews, add or generate questions, invite candidates individually or in bulk, and retrieve submission results, result report PDFs, and shareable result links. All requests use the base path /v1/partner/assessment. When candidates take assessments, you can receive webhooks for interview lifecycle events (start, scoring completed, end, and errors)—see Assessment and interview events in Webhooks.

List Assessments

Get a paginated list of AI interview assessments (voice and video) for your company.

GET /assessment

Authentication

Requires API key via Authorization: Bearer YOUR_API_KEY header.

Query Parameters

Example Request

Example Response

Error Responses

Invalid perPage (400):

Create Assessment (Voice Interview)

Create a new voice-based interview assessment. You can optionally link it to a job. Your account must have sufficient credits to create an assessment.

POST /assessment/audio-interviews

Request Body

Request Body Example

Example Request

Example Response

Returns 201 Created on success.

Error Responses

  • 404 – Company or job (if provided) not found. code: NOT_FOUND.
  • 402 – Insufficient credits. code: INSUFFICIENT_CREDITS, errorMessage: “Insufficient credits to create assessment”.
  • 400 – Validation error (e.g. maxResumeCount missing when resumeAllowed is true). code: INVALID_REQUEST.

Get Assessment

Retrieve a single assessment and its user-added questions. The response includes full assessment metadata (resumeAllowed, maxResumeCount, buckets, and other settings) plus question objects as stored in the system. assessmentType is returned as AI_AUDIO_INTERVIEW for voice interviews or AI_VIDEO_INTERVIEW for video interviews.

GET /assessment/:assessmentId

Path Parameters

Example Request

Example Response

Question objects use contextForAI for the evaluation instructions you pass as systemInstruction when adding or updating a question.

Error Responses

  • 404 – Assessment not found. code: NOT_FOUND.
  • 403 – Not allowed to access this assessment. code: ACCESS_DENIED.

Update Assessment

Update an assessment’s title, duration, language, skills, or purpose. At least one field must be provided.

PUT /assessment/:assessmentId

Path Parameters

Request Body (all optional; at least one required)

Example Request

Example Response

Error Responses

  • 400 – No fields provided or validation error. code: INVALID_REQUEST.
  • 404 – Assessment not found. code: NOT_FOUND.
  • 403 – Not allowed to modify this assessment. code: ACCESS_DENIED.

Add Question

Add a single question to an assessment.

POST /assessment/:assessmentId/questions

Path Parameters

Request Body

Request Body Example

Example Request

Example Response

Error Responses

  • 400 – Validation error (e.g. question too short). code: INVALID_REQUEST.
  • 404 – Assessment not found. code: NOT_FOUND.
  • 403 – Not allowed to modify this assessment. code: ACCESS_DENIED.

Update Question

Update an existing question on an assessment.

PUT /assessment/:assessmentId/questions/:questionId

Path Parameters

Request Body

Example Request

Example Response

Error Responses

  • 404 – Assessment or question not found, or question not in this assessment. code: NOT_FOUND.
  • 403 – Not allowed to modify this assessment. code: ACCESS_DENIED.

Delete Question

Remove a question from an assessment.

DELETE /assessment/:assessmentId/questions/:questionId

Path Parameters

Example Request

Example Response

Error Responses

  • 404 – Question not found in this assessment. code: NOT_FOUND.
  • 403 – Not allowed to modify this assessment. code: ACCESS_DENIED.

Auto-Generate Assessment

Create an AI interview assessment and generate its setup and questions automatically from a job or from role/purpose text. How it works
  1. TapTalent uses AI to generate the assessment setup (title, duration, language, skills, evaluation buckets, and CEFR settings) from the role, purpose, and optional job details.
  2. The assessment is created immediately and returned with questionCount: 0.
  3. Question generation runs in the background. The number of questions is derived from the interview duration and inferred seniority level:
    • JUNIOR_MID roles (entry through mid-level IC): about 3 minutes per question
    • SENIOR_LEADERSHIP roles (senior, lead, manager, director, executive): about 5 minutes per question
  4. A webhook is sent when questions are ready (see Assessment events).
Your account must have sufficient credits. Creating the assessment consumes 1 credit; background question generation consumes 1 additional credit.

POST /assessment/auto-generate

Request Body

Provide at least one of jobId or purpose. When jobId is supplied, role and purpose can be taken from the job if omitted. *At least one of jobId or purpose is required.

AI-generated setup

The following fields are determined automatically and included in the response. You do not send them in the request. Question count (background step) is computed as round(duration ÷ minutesPerQuestion) with a minimum of 1, using the seniority level inferred during setup.

Request Body Example (from job)

Request Body Example (from role and purpose)

Example Request (from job)

Example Request (from role and purpose)

Example Response

Returns 201 Created immediately. Questions are still being generated in the background.
After background generation completes, poll GET /assessment/:assessmentId or wait for the assessment.ready webhook. For a 30-minute junior/mid-level role, expect about 10 questions; for the same duration at senior/leadership level, expect about 6 questions.

Error Responses

  • 400 – Neither jobId nor purpose provided, or validation error (e.g. duration outside 5–60). code: INVALID_REQUEST.
  • 404 – Job not found or not owned by your company (when jobId is provided). code: NOT_FOUND.
  • 402 – Insufficient credits. code: INSUFFICIENT_CREDITS, errorMessage: “Insufficient credits”.
  • 500 – AI setup or question generation failed. code: AI_GENERATION_FAILED (when applicable).

Generate Questions for an Assessment

Generate questions for an existing assessment based on job description and skills. Your account must have sufficient credits. A webhook is sent when generation completes (see Assessment events).

POST /assessment/:assessmentId/generate-questions

Path Parameters

Request Body

Request Body Example

Example Request

Example Response

Error Responses

  • 402 – Insufficient credits. code: INSUFFICIENT_CREDITS, errorMessage: “Insufficient credits to generate questions”.
  • 403 – Assessment not found or access denied. code: ACCESS_DENIED.
  • 500 – Question generation failed or returned no questions. code: AI_GENERATION_FAILED or AI_GENERATION_EMPTY.

Invite Candidate to Assessment

Send an assessment invitation to a candidate by email. You can provide candidate details directly or reference an existing job candidate by jobCandidateId; if you use jobCandidateId, name and email can be filled from the candidate record.

POST /assessment/:assessmentId/invite

Path Parameters

Request Body

*If jobCandidateId is omitted, firstName, lastName, and emailAddress are all required.

Request Body Example (by email and name)

Request Body Example (by job candidate)

Example Request (by email and name)

Example Request (by job candidate)

Example Response

Error Responses

  • 400 – Missing email/name (when not using jobCandidateId), or invalid/dummy email. code: INVALID_REQUEST.
  • 400 – Candidate or reviewer already invited. code: DUPLICATE_INVITE, errorMessage: “Candidate is already invited!” or “Reviewer is already invited!”.
  • 404 – Assessment or candidate (when jobCandidateId used) not found. code: NOT_FOUND.
  • 403 – Not allowed to invite for this assessment. code: ACCESS_DENIED.

Bulk Invite Candidates

Invite up to 5,000 candidates to an assessment in a single request. The request is validated and accepted synchronously; invitation emails are then sent in the background. Use the returned batchId with Get Bulk Invite Status to fetch per-candidate outcomes, or listen for the assessment.bulk_invite.completed webhook. Each entry accepts the same fields as Invite Candidate to Assessment, plus an optional externalRef for correlating results with records in your ATS or HRIS—see External reference correlation. To attach an externalRef to a single candidate, send a batch with one entry.

POST /assessment/:assessmentId/invite/bulk

Path Parameters

Request Body

*If jobCandidateId is omitted, firstName, lastName, and emailAddress are all required for that entry.

Request Body Example

Example Request

Example Response

Returns 202 Accepted. Invitation emails are sent in the background.
totalCount is the number of accepted entries; it matches totalCount in Get Bulk Invite Status and the assessment.bulk_invite.completed webhook payload.

Processing semantics

  • The request is accepted if the payload is well-formed; individual entries succeed or fail independently (partial success is normal).
  • Entries whose candidate is already invited are skipped with DUPLICATE_INVITE—they do not fail the batch, and no second email is sent. The same applies when the same email appears twice within one request (the first entry wins).
  • Interview links are emailed to candidates; they are never returned by the API (same as single invite).
  • Fetch per-entry outcomes from Get Bulk Invite Status, or wait for the assessment.bulk_invite.completed webhook.

Error Responses

  • 400candidates missing, empty, more than 5,000 entries, or an entry is structurally invalid (e.g. no jobCandidateId and missing name/email). code: INVALID_REQUEST. No invites are queued.
  • 404 – Assessment not found. code: NOT_FOUND.
  • 403 – Not allowed to invite for this assessment. code: ACCESS_DENIED.

Get Bulk Invite Status

Retrieve the processing status and per-candidate results for a bulk invite batch.

GET /assessment/:assessmentId/invite/bulk/:batchId

Path Parameters

Query Parameters

Example Request

Example Response

Entries are returned in request order.

Error Responses

  • 404 – Assessment or batch not found, or batch belongs to another assessment. code: NOT_FOUND.
  • 403 – Not allowed to access this assessment. code: ACCESS_DENIED.

List Assessment Candidates

Get a paginated list of candidates who have taken the assessment (submitted or timed out), with scores and response details.

GET /assessment/:assessmentId/candidates

Path Parameters

Query Parameters

Example Request

Example Response

externalRef echoes the reference supplied when the candidate was invited via Bulk Invite Candidates; it is null when none was provided. See External reference correlation.

Error Responses

  • 403 – Assessment not found or access denied. code: ACCESS_DENIED.

Get Result Report (PDF)

Retrieve a download URL for the PDF result report of a completed submission. The report becomes available once scoring has finished for the submission. Recommended flow: listen for the interview.scoring_completed webhook (it carries the submissionId and your externalRef), then call this endpoint and download the PDF from reportUrl.

GET /assessment/:assessmentId/submissions/:submissionId/report

Path Parameters

Example Request

Example Response

Error Responses

  • 409 – Scoring has not completed for this submission yet. code: REPORT_NOT_READY. Retry after receiving interview.scoring_completed.
  • 404 – Assessment or submission not found. code: NOT_FOUND.
  • 403 – Not allowed to access this assessment. code: ACCESS_DENIED.

Retrieve the shareable, public URL for a submission’s result page. Anyone with the link can open it without a TapTalent account. Which sections the page shows (candidate details, AI analysis, interview recording, screening Q&A, proctoring data) is controlled by the assessment’s share configuration, managed in the TapTalent dashboard. Share configuration is not available through this API.

Path Parameters

Example Request

Example Response

Results appear on the page as scoring completes; for a finalized view, fetch the link after interview.scoring_completed.
The link is public: anyone who has it can view the sections permitted by the share configuration. Share it only through channels you trust.
If no share configuration has been saved for the assessment, the public page shows all sections. Review the assessment’s share configuration in the dashboard before distributing links.

Error Responses

  • 404 – Assessment or submission not found. code: NOT_FOUND.
  • 403 – Not allowed to access this assessment. code: ACCESS_DENIED.

Notes

Interview resume behavior

Configure interview resume with resumeAllowed and maxResumeCount when creating or updating an assessment, or when using auto-generate.

Interview closure due to network issues, tab closure, or accidental navigation

  • If interview resume is enabled (resumeAllowed: true), the candidate can resume the interview from the point where they left off.
  • A candidate can resume only up to the maximum resume count configured in the assessment settings (maxResumeCount, 1–5 attempts).
  • If interview resume is disabled (resumeAllowed: false), scoring is processed immediately once the interview is closed, regardless of the reason.
  • If interview resume is enabled and the candidate loses network connectivity or closes the tab, scoring is not processed until the candidate either resumes and submits the interview or exhausts the allowed resume attempts.
When resume is enabled, interview.scoring_completed and interview.ended webhooks are deferred until scoring runs (after the candidate finishes or uses all resume attempts).

External reference correlation

externalRef is an opaque string (max 255 characters) you can attach to each entry when inviting candidates via Bulk Invite Candidates. TapTalent stores it with the invite and echoes it, unmodified, in: Use it to correlate TapTalent submissions with records in your ATS or HRIS (e.g. a requisition or application ID) without maintaining a lookup table keyed on email. It is never shown to the candidate and never interpreted by TapTalent. To attach an externalRef to a single candidate, send a bulk invite with one entry.

Webhooks

To receive real-time notifications for assessments, configure a webhook URL in your partner settings. Once configured, TapTalent will send POST requests to your endpoint for the following events: Each webhook payload includes event, timestamp, companyId, and a data object with event-specific fields (e.g. assessmentId, submissionId, interviewStatus). Respond with a 2xx status so TapTalent does not retry the delivery. For payload details, headers, and retry behavior, see Webhook events.