JobMojito · Schema
JobInterviewCreateForCandidateWithTokenRequest
Artificial IntelligenceInterviewRecruitingSoftware-as-a-ServiceHiring
Properties
| Name | Type | Description |
|---|---|---|
| position_def_set_id | stringnull | Existing position_def_set id. When provided, the position is looked up instead of created, and position_name/position_location/position_country_code/mojito_language_code become optional. |
| position_external_id | stringnull | External position code used to look up an existing position. |
| interview_template_id | stringnull | Interview template id to base the interview on. Defaults to the platform template when omitted. |
| merchant_id | stringnull | Merchant id. Only honoured for admin / sub-merchant tokens; otherwise the token merchant is used. |
| position_name | stringnull | Position / job title. Required when position_def_set_id is not provided. |
| position_location | stringnull | Position location. Required when position_def_set_id is not provided. |
| position_country_code | stringnull | ISO country code of the position. Required when position_def_set_id is not provided. |
| mojito_language_code | stringnull | Interview language code (one of the listed codes). Required when position_def_set_id is not provided. |
| position_description | stringnull | Short, two-sentence position description shown to the candidate. Provide it to use it as-is; leave it null/blank and it is AI-generated from the position name and any other context. |
| position_description_long | stringnull | Full position description in Markdown (Job Purpose, Responsibilities, Required & Preferred Qualifications). Provide it to use it as-is; leave it null/blank and it is AI-generated. Rendered as Markdown |
| candidate_name | string | Candidate full name. |
| candidate_email | string | Candidate email (used as auth identity). |
| candidate_country_code | string | ISO country code of the candidate. |
| candidate_resume | string | Candidate resume parsed text. |
| candidate_external_id | stringnull | External candidate id stored on the profile. |
| candidate_linkedin_url | stringnull | Candidate LinkedIn URL. |
| candidate_video_introduction | stringnull | Whether a candidate video introduction is optional or required. |
| interview_attempts | numbernull | Number of allowed interview attempts (1-20). |
| seniority_level | stringnull | Seniority level of the position. Auto-detected when omitted. |
| result_view | stringnull | How interview results are shown to the candidate. Defaults to minimal. |
| custom_scoring | objectnull | Optional custom scoring overrides merged with platform defaults. |
| use_enhanced_expectations | booleannull | Reserved flag for enhanced candidate expectations generation. |
| include_rapport_question | booleannull | Include an opening rapport question. Defaults to false. |
| include_closing_prompt | booleannull | Include a closing prompt. Defaults to true. |
| instructional_video | booleannull | Show an instructional video before the interview. Defaults to false. |
| instructional_video_custom_text | stringnull | Custom text shown with the instructional video. |
| welcome_message | stringnull | Custom welcome message for the interview. |
| thank_you_message | stringnull | Custom thank-you message shown after the interview. |
| microphone_test_message | stringnull | Custom microphone-test instruction for a recorded (offline avatar) interview, spoken by the avatar and shown on screen before the first question. Omitted uses the default prompt in the interview langu |
| microphone_test_no_speech_message | stringnull | Custom text shown when the microphone test hears nothing. Omitted uses the default text in the candidate's language. |
| max_duration | numbernull | Maximum interview duration in seconds. Scopes how many questions are generated and is stored on the interview as the live session limit and the basis for the credit multiplier. Defaults to 1200 (20 mi |
| is_embedded | booleannull | Set true when the interview will be embedded as an iframe on an external page. Ensures an embed key exists and returns embed_id/embed_signing_key, used to authenticate/sign the iframe embed. |
| interview_department | stringnull | Department the position belongs to. |
| interview_salary | stringnull | Salary range shown for the position. |
| interview_available_till | stringnull | ISO date/time after which the interview is no longer available to candidates. null keeps it always available. |
| interview_conversation_speed | stringnull | Conversation pace of the AI avatar. Omit/null keeps the template default pace. Options — `slower`: The avatar speaks more slowly — easier to follow for non-native speakers. | `normal`: Default speakin |
| environment | string | Which of your webhook environments results from this interview are delivered to. Defaults to production. Options — `production`: Live hiring. Results reach the webhooks configured as production. This |
| max_followups | integernull | Maximum number of AI follow-up questions. 0 disables follow-ups; presets are 0-3 (none/low/normal/high) and custom values start at 4; null uses the template default (Normal). |
| questions_random_subset | numbernull | Ask only a random subset of the questions, expressed as a fraction between 0.01 and 0.9 (e.g. 0.5 = 50%). null asks all questions. |
| required_pronunciation | booleannull | Require pronunciation assessment (restricts to pronunciation-capable languages). Defaults to false. |
| result_enable_edit_transcript | booleannull | Allow editing the transcript on the result view. Defaults to true. |
| tags | arraynull | Free-form tags stored on the interview. |
| recruiter_profile_id | stringnull | Profile id of the recruiter owning this interview. A user of the company who is not read only: an owner, recruiter or admin from merchant-user-list. |
| hiring_for_company | objectnull | Who the position is really for. Omit/null (or an object with name null/blank) when hiring for yourself; { name: 'undisclosed' } for an unnamed external client; or { name: ' |
| pdf_export_auto_config | objectnull | Auto-generate a candidate PDF report with these options once the interview completes. null disables auto-export. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/jobmojito-com/json-schema/jobmojito-com-job-interview-create-for-candidate-with-token-request-schema.json",
"title": "JobInterviewCreateForCandidateWithTokenRequest",
"x-generated": "2026-11-13",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/jobmojito-com-openapi.json#/components/schemas/JobInterviewCreateForCandidateWithTokenRequest",
"type": "object",
"properties": {
"position_def_set_id": {
"type": [
"string",
"null"
],
"description": "Existing position_def_set id. When provided, the position is looked up instead of created, and position_name/position_location/position_country_code/mojito_language_code become optional."
},
"position_external_id": {
"type": [
"string",
"null"
],
"description": "External position code used to look up an existing position."
},
"interview_template_id": {
"type": [
"string",
"null"
],
"description": "Interview template id to base the interview on. Defaults to the platform template when omitted."
},
"merchant_id": {
"type": [
"string",
"null"
],
"description": "Merchant id. Only honoured for admin / sub-merchant tokens; otherwise the token merchant is used."
},
"position_name": {
"type": [
"string",
"null"
],
"description": "Position / job title. Required when position_def_set_id is not provided."
},
"position_location": {
"type": [
"string",
"null"
],
"description": "Position location. Required when position_def_set_id is not provided."
},
"position_country_code": {
"type": [
"string",
"null"
],
"description": "ISO country code of the position. Required when position_def_set_id is not provided."
},
"mojito_language_code": {
"type": [
"string",
"null"
],
"enum": [
"ar",
"bg",
"zh",
"hr",
"cs",
"da",
"nl",
"en",
"fil",
"fi",
"fr",
"de",
"el",
"hi",
"hu",
"id",
"it",
"ja",
"ko",
"ms",
"no",
"pl",
"pt",
"br",
"ro",
"ru",
"sk",
"es",
"sv",
"ta",
"th",
"tr",
"uk",
"vi"
],
"description": "Interview language code (one of the listed codes). Required when position_def_set_id is not provided."
},
"position_description": {
"type": [
"string",
"null"
],
"description": "Short, two-sentence position description shown to the candidate. Provide it to use it as-is; leave it null/blank and it is AI-generated from the position name and any other context."
},
"position_description_long": {
"type": [
"string",
"null"
],
"description": "Full position description in Markdown (Job Purpose, Responsibilities, Required & Preferred Qualifications). Provide it to use it as-is; leave it null/blank and it is AI-generated. Rendered as Markdown on the candidate-facing position page, including chips, callouts, cards, columns and buttons — formatting guide: https://developer.jobmojito.com/cookbooks/format-content-with-markdown"
},
"candidate_name": {
"type": "string",
"minLength": 1,
"description": "Candidate full name."
},
"candidate_email": {
"type": "string",
"minLength": 1,
"description": "Candidate email (used as auth identity)."
},
"candidate_country_code": {
"type": "string",
"minLength": 1,
"description": "ISO country code of the candidate."
},
"candidate_resume": {
"type": "string",
"minLength": 1,
"description": "Candidate resume parsed text."
},
"candidate_external_id": {
"type": [
"string",
"null"
],
"description": "External candidate id stored on the profile."
},
"candidate_linkedin_url": {
"type": [
"string",
"null"
],
"description": "Candidate LinkedIn URL."
},
"candidate_video_introduction": {
"type": [
"string",
"null"
],
"enum": [
"optional",
"required"
],
"description": "Whether a candidate video introduction is optional or required."
},
"interview_attempts": {
"type": [
"number",
"null"
],
"minimum": 1,
"maximum": 20,
"description": "Number of allowed interview attempts (1-20)."
},
"seniority_level": {
"type": [
"string",
"null"
],
"enum": [
"entry-level",
"intermediate",
"senior",
"managerial",
"director",
"executive"
],
"description": "Seniority level of the position. Auto-detected when omitted."
},
"result_view": {
"type": [
"string",
"null"
],
"enum": [
"none",
"minimal",
"minimal_with_score",
"advanced",
"full",
"full_expand_scores"
],
"description": "How interview results are shown to the candidate. Defaults to minimal."
},
"custom_scoring": {
"type": [
"object",
"null"
],
"additionalProperties": {
"nullable": true
},
"description": "Optional custom scoring overrides merged with platform defaults."
},
"use_enhanced_expectations": {
"type": [
"boolean",
"null"
],
"description": "Reserved flag for enhanced candidate expectations generation."
},
"include_rapport_question": {
"type": [
"boolean",
"null"
],
"description": "Include an opening rapport question. Defaults to false."
},
"include_closing_prompt": {
"type": [
"boolean",
"null"
],
"description": "Include a closing prompt. Defaults to true."
},
"instructional_video": {
"type": [
"boolean",
"null"
],
"description": "Show an instructional video before the interview. Defaults to false."
},
"instructional_video_custom_text": {
"type": [
"string",
"null"
],
"description": "Custom text shown with the instructional video."
},
"welcome_message": {
"type": [
"string",
"null"
],
"description": "Custom welcome message for the interview."
},
"thank_you_message": {
"type": [
"string",
"null"
],
"description": "Custom thank-you message shown after the interview."
},
"microphone_test_message": {
"type": [
"string",
"null"
],
"description": "Custom microphone-test instruction for a recorded (offline avatar) interview, spoken by the avatar and shown on screen before the first question. Omitted uses the default prompt in the interview language."
},
"microphone_test_no_speech_message": {
"type": [
"string",
"null"
],
"description": "Custom text shown when the microphone test hears nothing. Omitted uses the default text in the candidate's language."
},
"max_duration": {
"type": [
"number",
"null"
],
"description": "Maximum interview duration in seconds. Scopes how many questions are generated and is stored on the interview as the live session limit and the basis for the credit multiplier. Defaults to 1200 (20 minutes) when omitted."
},
"is_embedded": {
"type": [
"boolean",
"null"
],
"description": "Set true when the interview will be embedded as an iframe on an external page. Ensures an embed key exists and returns embed_id/embed_signing_key, used to authenticate/sign the iframe embed."
},
"interview_department": {
"type": [
"string",
"null"
],
"description": "Department the position belongs to."
},
"interview_salary": {
"type": [
"string",
"null"
],
"description": "Salary range shown for the position."
},
"interview_available_till": {
"type": [
"string",
"null"
],
"description": "ISO date/time after which the interview is no longer available to candidates. null keeps it always available."
},
"interview_conversation_speed": {
"type": [
"string",
"null"
],
"enum": [
"slower",
"normal",
"faster",
"fluent"
],
"description": "Conversation pace of the AI avatar. Omit/null keeps the template default pace. Options — `slower`: The avatar speaks more slowly — easier to follow for non-native speakers. | `normal`: Default speaking pace. | `faster`: The avatar speaks more quickly for a snappier conversation. | `fluent`: Talking pace: the avatar answers 300 ms after the candidate stops speaking. A pause mid-sentence also ends their turn."
},
"environment": {
"type": "string",
"enum": [
"production",
"uat",
"development",
"demo"
],
"description": "Which of your webhook environments results from this interview are delivered to. Defaults to production. Options — `production`: Live hiring. Results reach the webhooks configured as production. This is the default when the field is omitted. | `uat`: User-acceptance testing - an isolated environment for pre-release verification. | `development`: Development/testing. Use for interviews created by a test or preview app so their results never reach the production webhook. | `demo`: Demonstrations and sales trials."
},
"max_followups": {
"type": [
"integer",
"null"
],
"minimum": 0,
"maximum": 999,
"description": "Maximum number of AI follow-up questions. 0 disables follow-ups; presets are 0-3 (none/low/normal/high) and custom values start at 4; null uses the template default (Normal)."
},
"questions_random_subset": {
"type": [
"number",
"null"
],
"minimum": 0.01,
"maximum": 0.9,
"description": "Ask only a random subset of the questions, expressed as a fraction between 0.01 and 0.9 (e.g. 0.5 = 50%). null asks all questions."
},
"required_pronunciation": {
"type": [
"boolean",
"null"
],
"description": "Require pronunciation assessment (restricts to pronunciation-capable languages). Defaults to false."
},
"result_enable_edit_transcript": {
"type": [
"boolean",
"null"
],
"description": "Allow editing the transcript on the result view. Defaults to true."
},
"tags": {
"type": [
"array",
"null"
],
"items": {
"type": "string"
},
"description": "Free-form tags stored on the interview."
},
"recruiter_profile_id": {
"type": [
"string",
"null"
],
"description": "Profile id of the recruiter owning this interview. A user of the company who is not read only: an owner, recruiter or admin from merchant-user-list."
},
"hiring_for_company": {
"type": [
"object",
"null"
],
"properties": {
"name": {
"type": [
"string",
"null"
],
"description": "End-employer name. Omit/null when hiring for yourself, 'undisclosed' for an unnamed external client, or the client's company name."
},
"description": {
"type": [
"string",
"null"
],
"description": "Short description of the end employer, used as background context by the agent."
},
"location": {
"type": [
"string",
"null"
],
"description": "Primary location of the end employer."
},
"sector": {
"type": [
"string",
"null"
],
"description": "Industry / sector of the end employer."
},
"company_size": {
"type": [
"string",
"null"
],
"description": "Approximate headcount of the end employer."
}
},
"description": "Who the position is really for. Omit/null (or an object with name null/blank) when hiring for yourself; { name: 'undisclosed' } for an unnamed external client; or { name: '<company>' } plus optional description/location/sector/company_size for a named client. Stored in creation_parameters.hiring_for_company."
},
"pdf_export_auto_config": {
"type": [
"object",
"null"
],
"properties": {
"mojito_language_code": {
"type": "string",
"enum": [
"ar",
"bg",
"zh",
"hr",
"cs",
"da",
"nl",
"en",
"fil",
"fi",
"fr",
"de",
"el",
"hi",
"hu",
"id",
"it",
"ja",
"ko",
"ms",
"no",
"pl",
"pt",
"br",
"ro",
"ru",
"sk",
"es",
"sv",
"ta",
"th",
"tr",
"uk",
"vi"
],
"description": "Report language code (one of the listed codes)."
},
"contact_details": {
"type": "boolean",
"description": "Include candidate contact details."
},
"ai_recruiter_assessment": {
"type": "boolean",
"description": "Include the AI recruiter assessment."
},
"ai_scoring_rubric": {
"type": "boolean",
"description": "Include the AI scoring rubric."
},
"analytics": {
"type": "boolean",
"description": "Include analytics."
},
"files": {
"type": "boolean",
"description": "Include uploaded candidate files."
},
"transcript": {
"type": "boolean",
"description": "Include the interview transcript."
},
"answer_recording": {
"type": "boolean",
"description": "Include per-answer recordings."
},
"session_recording": {
"type": "boolean",
"description": "Include the full-session recording."
},
"group_by_question": {
"type": "boolean",
"description": "Group transcript answers by expected question."
},
"template": {
"type": "string",
"enum": [
"classic",
"modern",
"one_pager"
],
"description": "Report layout: classic, modern, or one_pager. Omit for the merchant default (modern when unset)."
}
},
"description": "Auto-generate a candidate PDF report with these options once the interview completes. null disables auto-export."
}
},
"required": [
"candidate_name",
"candidate_email",
"candidate_country_code",
"candidate_resume"
]
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/jobmojito-com-job-interview-create-for-candidate-with-token-request"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.