Skip to main content
There are four ways to create an interview, depending on how much you want JobMojito to generate for you:
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

The interview_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.
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.
Filter directly to the modality you want: GET /merchant-avatar-list?type=interactive_elevenlabs for voice-only, or ?type=interactive_heygen for a realtime avatar. The item’s id is the interview_template_id you pass below.
Some options only work on avatar templates. On a voice-only (interactive_elevenlabs) template, early_stop scoring and instructional_video are unsupported and the create call returns 422. Pick an interactive_heygen template if you need those.
To confirm the modality of an interview you’ve already created, read it back with get_interview_definition (POST /job-interview-get) — the response includes interview_template_type and a convenience is_voice_only boolean.

From your own questions

Supply an ordered questions array. Same required interview fields as generating from a job position, plus a description.
Each 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 — welcome_message, thank_you_message, and custom_scoring — plus everything in Additional configuration apply here too. Set them in the same call so the candidate experience and rubric aren’t left on the generic defaults. You may also pass candidate_expectations_json — a structured expectations object bucketed by requirement level ({ "weak": [...], "moderate": [...], "strong": [...] }). Omit it and JobMojito auto-generates one for type: "interview". Returns interview_def_set_id.
This same questions format comes back from GET /job-interview-get and is accepted by POST /job-interview-update, so you can change the questions of an interview later without recreating it — see Edit interview questions.

One call per candidate

Create the position (or reuse one), enrol a candidate, run pre-screening, and get a tokenised interview URL back — all in one request.
If you already have a position, pass 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.
Need to publish, archive, or unpublish later? Use POST /job-interview-set-state (set_interview_state) with the position_id and a status of active, draft, archived, or deleted. Retrieve a definition — questions included — with POST /job-interview-get (get_interview_definition), and change its settings or questions with POST /job-interview-update (update_interview).
The additional configuration fields are honoured here too.

Next steps

Invite candidates

Turn your new interview into links or email invitations.

Review results

Read transcripts, scores, and export reports once candidates finish.