| You provide | Use | MCP tool |
|---|---|---|
| A job description → AI generates questions | POST /job-interview-create | create_interview |
| Your own list of questions | POST /job-interview-create-from-array | create_interview_from_questions |
| A candidate + position, get a ready link back | POST /job-interview-create-for-candidate-with-token | create_interview_for_candidate |
You’ll need an
interview_template_id. List your available templates with GET /merchant-avatar-list (MCP tool list_avatars) and pick one.The template picks the interview modality
Theinterview_template_id is not just cosmetic — the template’s type decides whether the candidate gets a voice-only or an avatar experience. Choose it deliberately; there is no separate “voice or avatar” flag on the create call.
Template type (from list_avatars) | Candidate experience |
|---|---|
interactive_elevenlabs | Voice-only — realtime conversation, no video avatar. |
interactive_heygen | Realtime interactive avatar — a talking video avatar. |
offline_heygen | Non-interactive avatar — pre-recorded avatar video (no live back-and-forth). |
offline_elai and offline_synthesia are legacy integrations. They may still appear in list_avatars for older accounts, but they cannot be used to create new interviews — only offline_heygen is supported for the pre-recorded modality.get_interview_definition (POST /job-interview-get) — the response includes interview_template_type and a convenience is_voice_only boolean.
Option A — from a job position (AI-generated questions)
JobMojito writes the description, questions, and candidate expectations for you.Create the interview
Send the position details. The required fields are
name, location, interview_template_id, mojito_language_code, status, type, and visibility.Personalize the candidate experience & scoring (optional but recommended)
The defaults are generic. In the same create call, set these fields to tailor the interview — they are easy to forget:
welcome_message— the custom message shown to the candidate before they start. Set it to greet the candidate and set expectations.thank_you_message— the custom message shown after they finish.custom_scoring— an object of result-scoring overrides (your custom rubric). It is merged over the platform defaults and any template overrides, so you only need to include what you want to change. Omit it to use the template/default scoring.
custom_scoring is a free-form overrides object — its exact shape follows your account’s scoring model. Fetch an existing interview with get_interview_definition to see the current scoring structure before overriding it.Capture the interview id
The response returns
interview_def_set_id — keep it; you’ll use it to invite candidates and review results. Note it is passed back to other endpoints under different field names (position_id, interview_id) — see Identifiers & admin links.Key fields
| Field | Required | Notes |
|---|---|---|
name, location | ✓ | Position title and location. |
interview_template_id | ✓ | Template id from list_avatars. Its type sets the modality (voice-only vs avatar) — see The template picks the interview modality. |
mojito_language_code | ✓ | Platform language code (e.g. en). |
status | ✓ | draft, active, archived, or deleted. |
type | ✓ | Product type, e.g. interview. |
visibility | ✓ | Who can access it, e.g. merchant_invite, merchant_public. |
description, candidate_expectations | – | Fed into AI question generation. |
interview_length | – | Number of questions to generate (max 40). |
welcome_message, thank_you_message | – | Custom candidate-facing messages — set these; the defaults are generic. |
custom_scoring | – | Custom scoring-rubric overrides (object), merged over defaults. |
knowledge_base_store_id | – | Ground questions in a knowledge base. |
Option B — from your own questions
Supply an orderedquestions array. Same required interview fields as Option A, plus a description.
questions item requires question (the text). Useful per-question flags: duration (seconds), is_without_scoring, is_multiple_choice, question_alternatives, is_conditional + conditional_question_main_id (for follow-ups), and knowledge_base_id (ask grounded questions — see Manage a knowledge base).
The personalization fields from Option A — welcome_message, thank_you_message, and custom_scoring — apply here too. Set them in the same call so the candidate experience and rubric aren’t left on the generic defaults.
Returns interview_def_set_id.
Option C — one call per candidate (returns a link)
Create the position (or reuse one), enrol a candidate, run pre-screening, and get a tokenised interview URL back — all in one request.position_def_set_id instead of the position_* fields. The response includes status (e.g. ai_accept, recruiter_action, ai_reject), interview_url, and the created interview_def_set_id / position_def_set_id.
Next steps
Invite candidates
Turn your new interview into links or email invitations.
Review results
Read transcripts, scores, and export reports once candidates finish.