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: '' } plus optional d
pdf_export_auto_config objectnull Auto-generate a candidate PDF report with these options once the interview completes. null disables auto-export.
View JSON Schema on GitHub

JSON Schema

jobmojito-com-job-interview-create-for-candidate-with-token-request-schema.json Raw ↑
{
  "$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.
All 92 tools →

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.