Skip to main content
GET
Get interview definition

Authorizations

Authorization
string
header
required

Supabase JWT — Authorization: Bearer <token>.

Query Parameters

position_id
string<uuid>
required

Identifier of either an interview definition (single-stage) or a position definition (multi-stage). The function resolves whichever matches.

Minimum string length: 1
Example:

"00000000-0000-0000-0000-000000000000"

include
string

Optional extra sections of a multi-stage position, comma separated: process, slots, team, lifecycle, publishing. Leave it out and the answer is the same size as before. process = the ordered steps with their typed settings (process); slots = also each meeting step's upcoming slots (implies process); team = the hiring team (team); lifecycle = the vacancy lifecycle and openings (lifecycle, openings); publishing = the publishing window (publishing). Ignored for a single-stage interview. A section the company has switched off, or that your account may not read, is left out of the answer.

Example:

"process,team"

Response

The resolved interview definition.

name
string | null
required

Interview or position name.

created_at
string | null
required
Example:

"2026-01-15T09:30:00.000Z"

updated_at
string | null
required
Example:

"2026-01-20T14:05:00.000Z"

questions
object[] | null
required

The interview questions, in the order they are asked, in the same format job-interview-create-from-array accepts — so this array can be edited and sent straight back to job-interview-update, or used to create a copy of this interview. Each id is the question's real identifier: send it back unchanged and the question keeps its existing record (and with it its answer rules and any rendered avatar video). The welcome, thank-you and instructional-video steps are NOT included — they are not questions in this format, and job-interview-update leaves them untouched. Null for multi-stage positions, whose questions live on the individual interview stages.

is_multistage
boolean
required

True when the id resolved to a multi-stage position rather than a single interview.

status
enum<string>
required

Publication status of the interview/position. The vacancy lifecycle of a position (open, on hold, filled...) is lifecycle (include=lifecycle).

Available options:
draft,
active,
archived,
deleted,
preparing,
completed
visibility
enum<string>
required

Who can see and access the interview/position.

Available options:
public,
merchant_public,
merchant_invite,
merchant_unlisted,
sub_item
stage
enum<string> | null
required

Hiring-pipeline stage. Null for multi-stage positions.

Available options:
Interest,
Application submitted,
Interview 1st planned,
Interview 1st completed,
Interview 2nd planned,
Interview 2nd completed,
Interview 3rd planned,
Interview 3rd completed,
Offer negotiations,
Hired,
Rejected,
Offer declined,
Other
type
enum<string> | null
required

Interview type. Null for multi-stage positions.

Available options:
coaching,
interview,
persona,
persona_interview,
public_avatar,
assessment
environment
enum<string> | null
required

Which webhook environment this interview's results are delivered to. Null for multi-stage positions, whose stages each carry their own.

Available options:
production,
uat,
development,
demo
Example:

"production"

code
string | null
required

Caller-supplied external code/reference.

interview_location
string | null
required

Location (create field location).

cover_image_url
string | null
required

Cover image URL.

merchant_id
string | null
required

Owning merchant id.

interview_template_id
string | null
required

Interview template id. For multi-stage positions this is the first interview step's template.

interview_template_type
enum<string> | null
required

Type of the linked interview template. interactive_elevenlabs is voice-only; the others (interactive_spatius, interactive_heygen, offline_heygen, offline_elai, offline_synthesia) are avatar-based. Null when the template could not be resolved.

Available options:
offline_elai,
offline_synthesia,
interactive_heygen,
offline_heygen,
interactive_elevenlabs,
interactive_spatius
is_voice_only
boolean | null
required

Convenience flag derived from interview_template_type: true when voice-only (interactive_elevenlabs), false when avatar-based, null when the template type could not be resolved.

knowledge_base_store_id
string | null
required

Linked knowledge base store id. Null for multi-stage positions.

mojito_language_code
string | null
required

Platform (mojito) language code.

Example:

"en"

speech_language_code
string | null
required

Azure speech language code. Null for multi-stage positions.

speech_language_name
string | null
required

Azure speech language display name. Null for multi-stage positions.

recording
enum<string> | null
required

Per-answer recording mode. Null for multi-stage positions.

Available options:
audio_first_5_answers,
audio_all,
video_all,
video_first_5_answers
recording_full_session
enum<string> | null
required

Full-session recording mode. Null for multi-stage positions.

Available options:
audio_first_5_answers,
audio_all,
video_all,
video_first_5_answers
type_credit
enum<string> | null
required

Credit bucket the interview draws from. Null for multi-stage positions.

Available options:
resume_check,
interview_coach_starter,
interview_coach_contributor,
interview_coach_manager,
cover_letter
result_view
enum<string> | null
required

Result view level. Null for multi-stage positions.

Available options:
minimal,
advanced,
full,
full_expand_scores,
minimal_with_score,
none
candidate_video_introduction
enum<string> | null
required

Whether a candidate video introduction is hidden/optional/required. Null for multi-stage positions.

Available options:
hidden,
optional,
required
description
string | null
required

Short description.

interview_description_long
string | null
required

Long description (create/update field description_long). Rendered as Markdown on the candidate-facing position page — formatting guide: https://developer.jobmojito.com/cookbooks/format-content-with-markdown

candidate_expectations
string | null
required

Free-text candidate expectations. Null for multi-stage positions.

interview_department
string | null
required

Department the position belongs to.

Example:

"Engineering"

interview_salary
string | null
required

Salary range shown for the position.

Example:

"$80k - $100k"

interview_available_till
string | null
required

ISO date/time after which the interview is no longer available to candidates. Null means always available.

candidate_notification_channel
enum<string> | null
required

SMS / WhatsApp candidate notifications: null = off, reminders = with both e-mail reminders, last_reminder = only with the final reminder, all = invitation + reminders + pre-screening accepted.

Available options:
reminders,
last_reminder,
all
recruiter_profile_id
string | null
required

Profile id of the recruiter owning this interview/position.

slug
string | null
required

URL slug of the public listing, when one was generated.

tags
string[] | null
required

Free-form tags (interview_def_set.tags, or position_def_set.tags for a multi-stage position). Also the coaching-catalogue mapping key: a catalogue directory lists this session when its tags_interview_set_filter is a subset of these tags. Null when none are set.

Example:
coach_plan
enum<string> | null
required

Coaching-plan stage this session belongs to. Null for multi-stage positions and for sessions outside any plan.

Available options:
demo,
screening,
2nd,
3rd,
closing,
job-specific,
other
interview_conversation_speed
string | null
required

Conversation pace of the AI avatar (slower/normal/faster/fluent). Null keeps the template default. Null for multi-stage positions.

max_followups
number | null
required

Maximum number of AI follow-up questions; null uses the template default. Null for multi-stage positions.

max_duration
number | null
required

Live session limit in seconds. Null for multi-stage positions.

questions_random_subset
number | null
required

Fraction of the questions actually asked (0.01-0.9); null asks all of them. Null for multi-stage positions.

required_pronunciation
boolean | null
required

Whether a pronunciation assessment is required. Null for multi-stage positions.

result_enable_edit_transcript
boolean | null
required

Whether the candidate may edit the transcript on the result view. Null for multi-stage positions.

interview_category
string | null
required

Job category shown on public listings above the department (free text), e.g. "Ashore".

Example:

"Ashore"

emoji
string | null
required

Emoji marker used in the admin lists.

is_ats
boolean
required

True when the definition is linked to a job in a connected ATS (Kombo).

collect_resume_cover_letter
enum<string> | null
required

Whether a resume / cover letter is asked for: hidden, optional or required. Null for multi-stage positions.

Available options:
hidden,
optional,
required
allow_human_interview
boolean | null
required

A recruiter may hold the interview instead of the AI. Null for multi-stage positions (each interview step carries its own, see include=process).

target_days_to_fill
number | null
required

Target days to fill the position. Null for single-stage interviews.

access_scope
enum<string> | null
required

Position access: company (every recruiter) or confidential (its team and owners only). Null for single-stage interviews.

Available options:
company,
confidential
calc_definition_json
any | null

The compiled interview definition JSON (structure varies by interview type).

candidate_expectations_json
any | null

Structured candidate expectations JSON — the scoring rubric. Null for multi-stage positions.

result_scoring
any | null

Resolved result-scoring config (update field custom_scoring; its max_retries is the update field interview_attempts). Null means the platform defaults apply. Null for multi-stage positions.

creation_parameters
any | null

The creation parameters recorded at build time (interview_type, interview_tone, interview_length, additional_context, include_rapport_question, include_closing_prompt, knowledge_base_store_id, seniority_level, hiring_for_company).

country_availability
any | null

Portal availability by the candidate's country: {countries_allowed?: string[], countries_allowed_eu?: boolean, countries_blocked?: string[], countries_blocked_eu?: boolean} (ISO 3166-1 alpha-2, EU = EU + EEA + Switzerland; blocked wins), judged by the candidate's IP on the portal; invited candidates keep access. Null = not used, every country. Set it with job-interview-update.

pdf_export_auto_config
any | null

Auto-PDF-report options applied when the interview completes; null when auto-export is off. Null for multi-stage positions.

reminder_schedule
any | null

Candidate reminder schedule override (JSON); null uses the company default.

process
object

include=process (multi-stage positions): the ordered steps with typed settings.

team
object

include=team (multi-stage positions): the hiring team.

lifecycle
object

include=lifecycle (multi-stage positions, the position_lifecycle feature): the vacancy lifecycle.

openings
object

include=lifecycle (multi-stage positions, the position_bulk_create feature): openings and how many are filled.

publishing
object

include=publishing (multi-stage positions, the position_audience feature): the publishing window.

custom_fields
object

Company-defined fields (key: value) of a multi-stage position, when custom fields are enabled for the company (multi-stage positions only: absent for an interview). Keys are the field keys of the company's custom field definitions; values are text, numbers, YYYY-MM-DD dates, option values (a list for multiple choice), {min, max, currency} ranges or user profile ids.

Example: