curl --request POST \
--url https://cool.jobmojito.com/functions/v1/job-interview-create-for-candidate-with-token \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"candidate_name": "John",
"candidate_email": "peterson6@hello.com",
"candidate_country_code": "HR",
"candidate_resume": "Curriculum Vitae ...",
"position_def_set_id": "00000000-0000-0000-0000-000000000000",
"position_external_id": "JOB-123",
"interview_template_id": "5d8ea38b-eec4-4866-aa6c-b2ea5bc6e45b",
"merchant_id": "28106cba-1c27-4e53-b149-32113e5e8e31",
"position_name": "Entry level coffee boy",
"position_location": "remote",
"position_country_code": "SK",
"mojito_language_code": "en",
"position_description": "<string>",
"position_description_long": "<string>",
"candidate_external_id": "<string>",
"candidate_linkedin_url": "<string>",
"interview_attempts": 3,
"custom_scoring": {},
"use_enhanced_expectations": true,
"include_rapport_question": true,
"include_closing_prompt": true,
"instructional_video": true,
"instructional_video_custom_text": "<string>",
"welcome_message": "<string>",
"thank_you_message": "<string>",
"max_duration": 1200,
"is_embedded": true,
"interview_department": "Engineering",
"interview_salary": "$80k - $100k",
"interview_available_till": "2026-12-31",
"interview_conversation_speed": "normal",
"environment": "production",
"max_followups": 2,
"questions_random_subset": 0.5,
"required_pronunciation": false,
"result_enable_edit_transcript": true,
"tags": [
"engineering",
"remote"
],
"recruiter_profile_id": "<string>",
"hiring_for_company": {
"name": "undisclosed"
},
"pdf_export_auto_config": {
"mojito_language_code": "en",
"contact_details": true,
"ai_recruiter_assessment": true,
"ai_scoring_rubric": true,
"analytics": true,
"files": true,
"transcript": true,
"answer_recording": true,
"session_recording": true,
"group_by_question": true
}
}
'import requests
url = "https://cool.jobmojito.com/functions/v1/job-interview-create-for-candidate-with-token"
payload = {
"candidate_name": "John",
"candidate_email": "peterson6@hello.com",
"candidate_country_code": "HR",
"candidate_resume": "Curriculum Vitae ...",
"position_def_set_id": "00000000-0000-0000-0000-000000000000",
"position_external_id": "JOB-123",
"interview_template_id": "5d8ea38b-eec4-4866-aa6c-b2ea5bc6e45b",
"merchant_id": "28106cba-1c27-4e53-b149-32113e5e8e31",
"position_name": "Entry level coffee boy",
"position_location": "remote",
"position_country_code": "SK",
"mojito_language_code": "en",
"position_description": "<string>",
"position_description_long": "<string>",
"candidate_external_id": "<string>",
"candidate_linkedin_url": "<string>",
"interview_attempts": 3,
"custom_scoring": {},
"use_enhanced_expectations": True,
"include_rapport_question": True,
"include_closing_prompt": True,
"instructional_video": True,
"instructional_video_custom_text": "<string>",
"welcome_message": "<string>",
"thank_you_message": "<string>",
"max_duration": 1200,
"is_embedded": True,
"interview_department": "Engineering",
"interview_salary": "$80k - $100k",
"interview_available_till": "2026-12-31",
"interview_conversation_speed": "normal",
"environment": "production",
"max_followups": 2,
"questions_random_subset": 0.5,
"required_pronunciation": False,
"result_enable_edit_transcript": True,
"tags": ["engineering", "remote"],
"recruiter_profile_id": "<string>",
"hiring_for_company": { "name": "undisclosed" },
"pdf_export_auto_config": {
"mojito_language_code": "en",
"contact_details": True,
"ai_recruiter_assessment": True,
"ai_scoring_rubric": True,
"analytics": True,
"files": True,
"transcript": True,
"answer_recording": True,
"session_recording": True,
"group_by_question": True
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
candidate_name: 'John',
candidate_email: 'peterson6@hello.com',
candidate_country_code: 'HR',
candidate_resume: 'Curriculum Vitae ...',
position_def_set_id: '00000000-0000-0000-0000-000000000000',
position_external_id: 'JOB-123',
interview_template_id: '5d8ea38b-eec4-4866-aa6c-b2ea5bc6e45b',
merchant_id: '28106cba-1c27-4e53-b149-32113e5e8e31',
position_name: 'Entry level coffee boy',
position_location: 'remote',
position_country_code: 'SK',
mojito_language_code: 'en',
position_description: '<string>',
position_description_long: '<string>',
candidate_external_id: '<string>',
candidate_linkedin_url: '<string>',
interview_attempts: 3,
custom_scoring: {},
use_enhanced_expectations: true,
include_rapport_question: true,
include_closing_prompt: true,
instructional_video: true,
instructional_video_custom_text: '<string>',
welcome_message: '<string>',
thank_you_message: '<string>',
max_duration: 1200,
is_embedded: true,
interview_department: 'Engineering',
interview_salary: '$80k - $100k',
interview_available_till: '2026-12-31',
interview_conversation_speed: 'normal',
environment: 'production',
max_followups: 2,
questions_random_subset: 0.5,
required_pronunciation: false,
result_enable_edit_transcript: true,
tags: ['engineering', 'remote'],
recruiter_profile_id: '<string>',
hiring_for_company: {name: 'undisclosed'},
pdf_export_auto_config: {
mojito_language_code: 'en',
contact_details: true,
ai_recruiter_assessment: true,
ai_scoring_rubric: true,
analytics: true,
files: true,
transcript: true,
answer_recording: true,
session_recording: true,
group_by_question: true
}
})
};
fetch('https://cool.jobmojito.com/functions/v1/job-interview-create-for-candidate-with-token', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://cool.jobmojito.com/functions/v1/job-interview-create-for-candidate-with-token",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'candidate_name' => 'John',
'candidate_email' => 'peterson6@hello.com',
'candidate_country_code' => 'HR',
'candidate_resume' => 'Curriculum Vitae ...',
'position_def_set_id' => '00000000-0000-0000-0000-000000000000',
'position_external_id' => 'JOB-123',
'interview_template_id' => '5d8ea38b-eec4-4866-aa6c-b2ea5bc6e45b',
'merchant_id' => '28106cba-1c27-4e53-b149-32113e5e8e31',
'position_name' => 'Entry level coffee boy',
'position_location' => 'remote',
'position_country_code' => 'SK',
'mojito_language_code' => 'en',
'position_description' => '<string>',
'position_description_long' => '<string>',
'candidate_external_id' => '<string>',
'candidate_linkedin_url' => '<string>',
'interview_attempts' => 3,
'custom_scoring' => [
],
'use_enhanced_expectations' => true,
'include_rapport_question' => true,
'include_closing_prompt' => true,
'instructional_video' => true,
'instructional_video_custom_text' => '<string>',
'welcome_message' => '<string>',
'thank_you_message' => '<string>',
'max_duration' => 1200,
'is_embedded' => true,
'interview_department' => 'Engineering',
'interview_salary' => '$80k - $100k',
'interview_available_till' => '2026-12-31',
'interview_conversation_speed' => 'normal',
'environment' => 'production',
'max_followups' => 2,
'questions_random_subset' => 0.5,
'required_pronunciation' => false,
'result_enable_edit_transcript' => true,
'tags' => [
'engineering',
'remote'
],
'recruiter_profile_id' => '<string>',
'hiring_for_company' => [
'name' => 'undisclosed'
],
'pdf_export_auto_config' => [
'mojito_language_code' => 'en',
'contact_details' => true,
'ai_recruiter_assessment' => true,
'ai_scoring_rubric' => true,
'analytics' => true,
'files' => true,
'transcript' => true,
'answer_recording' => true,
'session_recording' => true,
'group_by_question' => true
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://cool.jobmojito.com/functions/v1/job-interview-create-for-candidate-with-token"
payload := strings.NewReader("{\n \"candidate_name\": \"John\",\n \"candidate_email\": \"peterson6@hello.com\",\n \"candidate_country_code\": \"HR\",\n \"candidate_resume\": \"Curriculum Vitae ...\",\n \"position_def_set_id\": \"00000000-0000-0000-0000-000000000000\",\n \"position_external_id\": \"JOB-123\",\n \"interview_template_id\": \"5d8ea38b-eec4-4866-aa6c-b2ea5bc6e45b\",\n \"merchant_id\": \"28106cba-1c27-4e53-b149-32113e5e8e31\",\n \"position_name\": \"Entry level coffee boy\",\n \"position_location\": \"remote\",\n \"position_country_code\": \"SK\",\n \"mojito_language_code\": \"en\",\n \"position_description\": \"<string>\",\n \"position_description_long\": \"<string>\",\n \"candidate_external_id\": \"<string>\",\n \"candidate_linkedin_url\": \"<string>\",\n \"interview_attempts\": 3,\n \"custom_scoring\": {},\n \"use_enhanced_expectations\": true,\n \"include_rapport_question\": true,\n \"include_closing_prompt\": true,\n \"instructional_video\": true,\n \"instructional_video_custom_text\": \"<string>\",\n \"welcome_message\": \"<string>\",\n \"thank_you_message\": \"<string>\",\n \"max_duration\": 1200,\n \"is_embedded\": true,\n \"interview_department\": \"Engineering\",\n \"interview_salary\": \"$80k - $100k\",\n \"interview_available_till\": \"2026-12-31\",\n \"interview_conversation_speed\": \"normal\",\n \"environment\": \"production\",\n \"max_followups\": 2,\n \"questions_random_subset\": 0.5,\n \"required_pronunciation\": false,\n \"result_enable_edit_transcript\": true,\n \"tags\": [\n \"engineering\",\n \"remote\"\n ],\n \"recruiter_profile_id\": \"<string>\",\n \"hiring_for_company\": {\n \"name\": \"undisclosed\"\n },\n \"pdf_export_auto_config\": {\n \"mojito_language_code\": \"en\",\n \"contact_details\": true,\n \"ai_recruiter_assessment\": true,\n \"ai_scoring_rubric\": true,\n \"analytics\": true,\n \"files\": true,\n \"transcript\": true,\n \"answer_recording\": true,\n \"session_recording\": true,\n \"group_by_question\": true\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://cool.jobmojito.com/functions/v1/job-interview-create-for-candidate-with-token")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"candidate_name\": \"John\",\n \"candidate_email\": \"peterson6@hello.com\",\n \"candidate_country_code\": \"HR\",\n \"candidate_resume\": \"Curriculum Vitae ...\",\n \"position_def_set_id\": \"00000000-0000-0000-0000-000000000000\",\n \"position_external_id\": \"JOB-123\",\n \"interview_template_id\": \"5d8ea38b-eec4-4866-aa6c-b2ea5bc6e45b\",\n \"merchant_id\": \"28106cba-1c27-4e53-b149-32113e5e8e31\",\n \"position_name\": \"Entry level coffee boy\",\n \"position_location\": \"remote\",\n \"position_country_code\": \"SK\",\n \"mojito_language_code\": \"en\",\n \"position_description\": \"<string>\",\n \"position_description_long\": \"<string>\",\n \"candidate_external_id\": \"<string>\",\n \"candidate_linkedin_url\": \"<string>\",\n \"interview_attempts\": 3,\n \"custom_scoring\": {},\n \"use_enhanced_expectations\": true,\n \"include_rapport_question\": true,\n \"include_closing_prompt\": true,\n \"instructional_video\": true,\n \"instructional_video_custom_text\": \"<string>\",\n \"welcome_message\": \"<string>\",\n \"thank_you_message\": \"<string>\",\n \"max_duration\": 1200,\n \"is_embedded\": true,\n \"interview_department\": \"Engineering\",\n \"interview_salary\": \"$80k - $100k\",\n \"interview_available_till\": \"2026-12-31\",\n \"interview_conversation_speed\": \"normal\",\n \"environment\": \"production\",\n \"max_followups\": 2,\n \"questions_random_subset\": 0.5,\n \"required_pronunciation\": false,\n \"result_enable_edit_transcript\": true,\n \"tags\": [\n \"engineering\",\n \"remote\"\n ],\n \"recruiter_profile_id\": \"<string>\",\n \"hiring_for_company\": {\n \"name\": \"undisclosed\"\n },\n \"pdf_export_auto_config\": {\n \"mojito_language_code\": \"en\",\n \"contact_details\": true,\n \"ai_recruiter_assessment\": true,\n \"ai_scoring_rubric\": true,\n \"analytics\": true,\n \"files\": true,\n \"transcript\": true,\n \"answer_recording\": true,\n \"session_recording\": true,\n \"group_by_question\": true\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://cool.jobmojito.com/functions/v1/job-interview-create-for-candidate-with-token")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"candidate_name\": \"John\",\n \"candidate_email\": \"peterson6@hello.com\",\n \"candidate_country_code\": \"HR\",\n \"candidate_resume\": \"Curriculum Vitae ...\",\n \"position_def_set_id\": \"00000000-0000-0000-0000-000000000000\",\n \"position_external_id\": \"JOB-123\",\n \"interview_template_id\": \"5d8ea38b-eec4-4866-aa6c-b2ea5bc6e45b\",\n \"merchant_id\": \"28106cba-1c27-4e53-b149-32113e5e8e31\",\n \"position_name\": \"Entry level coffee boy\",\n \"position_location\": \"remote\",\n \"position_country_code\": \"SK\",\n \"mojito_language_code\": \"en\",\n \"position_description\": \"<string>\",\n \"position_description_long\": \"<string>\",\n \"candidate_external_id\": \"<string>\",\n \"candidate_linkedin_url\": \"<string>\",\n \"interview_attempts\": 3,\n \"custom_scoring\": {},\n \"use_enhanced_expectations\": true,\n \"include_rapport_question\": true,\n \"include_closing_prompt\": true,\n \"instructional_video\": true,\n \"instructional_video_custom_text\": \"<string>\",\n \"welcome_message\": \"<string>\",\n \"thank_you_message\": \"<string>\",\n \"max_duration\": 1200,\n \"is_embedded\": true,\n \"interview_department\": \"Engineering\",\n \"interview_salary\": \"$80k - $100k\",\n \"interview_available_till\": \"2026-12-31\",\n \"interview_conversation_speed\": \"normal\",\n \"environment\": \"production\",\n \"max_followups\": 2,\n \"questions_random_subset\": 0.5,\n \"required_pronunciation\": false,\n \"result_enable_edit_transcript\": true,\n \"tags\": [\n \"engineering\",\n \"remote\"\n ],\n \"recruiter_profile_id\": \"<string>\",\n \"hiring_for_company\": {\n \"name\": \"undisclosed\"\n },\n \"pdf_export_auto_config\": {\n \"mojito_language_code\": \"en\",\n \"contact_details\": true,\n \"ai_recruiter_assessment\": true,\n \"ai_scoring_rubric\": true,\n \"analytics\": true,\n \"files\": true,\n \"transcript\": true,\n \"answer_recording\": true,\n \"session_recording\": true,\n \"group_by_question\": true\n }\n}"
response = http.request(request)
puts response.read_body{
"status": "ai_accept",
"interview_url": "<string>",
"position_def_set_id": "<string>",
"interview_def_set_id": "<string>",
"profile_interview_id": "<string>",
"reason": "<string>",
"embed_id": "<string>",
"embed_signing_key": "<string>",
"steps": [
{
"position_def_step_id": "<string>",
"sequence_no": 123,
"index": 123,
"type": "pre-screening",
"name": "<string>",
"position_result_step_id": "<string>",
"status": "<string>",
"decision_status": "<string>",
"state": "done",
"custom_name": "<string>",
"advance": "<string>",
"is_current": true,
"score": 123,
"start_at": "<string>",
"decided_at": "<string>",
"interview_set_id": "<string>",
"interview_pre_screening_id": "<string>",
"interview_result_id": "<string>",
"interview_result_pre_screening_id": "<string>",
"interview_attempts": 123,
"recruiter_notes": "<string>",
"meeting": {
"booking_id": "<string>",
"booking_status": "<string>",
"slot_id": "<string>",
"start_at": "<string>",
"duration_minutes": 123,
"location": "<string>",
"meeting_url": "<string>",
"instructions": "<string>",
"cutoff_at": "<string>"
}
}
]
}{
"error": "Field is required.",
"name": "interview_result_id"
}{
"error": "Field is required.",
"name": "interview_result_id"
}{
"error": "Field is required.",
"name": "interview_result_id"
}{
"error": "Field is required.",
"name": "interview_result_id"
}Create an interview for a candidate and return an access token URL
Creates (or resolves an existing) position and interview for a merchant, enrols the candidate, runs pre-screening, and returns a tokenised interview URL. Position fields are required only when position_def_set_id is not provided.
curl --request POST \
--url https://cool.jobmojito.com/functions/v1/job-interview-create-for-candidate-with-token \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"candidate_name": "John",
"candidate_email": "peterson6@hello.com",
"candidate_country_code": "HR",
"candidate_resume": "Curriculum Vitae ...",
"position_def_set_id": "00000000-0000-0000-0000-000000000000",
"position_external_id": "JOB-123",
"interview_template_id": "5d8ea38b-eec4-4866-aa6c-b2ea5bc6e45b",
"merchant_id": "28106cba-1c27-4e53-b149-32113e5e8e31",
"position_name": "Entry level coffee boy",
"position_location": "remote",
"position_country_code": "SK",
"mojito_language_code": "en",
"position_description": "<string>",
"position_description_long": "<string>",
"candidate_external_id": "<string>",
"candidate_linkedin_url": "<string>",
"interview_attempts": 3,
"custom_scoring": {},
"use_enhanced_expectations": true,
"include_rapport_question": true,
"include_closing_prompt": true,
"instructional_video": true,
"instructional_video_custom_text": "<string>",
"welcome_message": "<string>",
"thank_you_message": "<string>",
"max_duration": 1200,
"is_embedded": true,
"interview_department": "Engineering",
"interview_salary": "$80k - $100k",
"interview_available_till": "2026-12-31",
"interview_conversation_speed": "normal",
"environment": "production",
"max_followups": 2,
"questions_random_subset": 0.5,
"required_pronunciation": false,
"result_enable_edit_transcript": true,
"tags": [
"engineering",
"remote"
],
"recruiter_profile_id": "<string>",
"hiring_for_company": {
"name": "undisclosed"
},
"pdf_export_auto_config": {
"mojito_language_code": "en",
"contact_details": true,
"ai_recruiter_assessment": true,
"ai_scoring_rubric": true,
"analytics": true,
"files": true,
"transcript": true,
"answer_recording": true,
"session_recording": true,
"group_by_question": true
}
}
'import requests
url = "https://cool.jobmojito.com/functions/v1/job-interview-create-for-candidate-with-token"
payload = {
"candidate_name": "John",
"candidate_email": "peterson6@hello.com",
"candidate_country_code": "HR",
"candidate_resume": "Curriculum Vitae ...",
"position_def_set_id": "00000000-0000-0000-0000-000000000000",
"position_external_id": "JOB-123",
"interview_template_id": "5d8ea38b-eec4-4866-aa6c-b2ea5bc6e45b",
"merchant_id": "28106cba-1c27-4e53-b149-32113e5e8e31",
"position_name": "Entry level coffee boy",
"position_location": "remote",
"position_country_code": "SK",
"mojito_language_code": "en",
"position_description": "<string>",
"position_description_long": "<string>",
"candidate_external_id": "<string>",
"candidate_linkedin_url": "<string>",
"interview_attempts": 3,
"custom_scoring": {},
"use_enhanced_expectations": True,
"include_rapport_question": True,
"include_closing_prompt": True,
"instructional_video": True,
"instructional_video_custom_text": "<string>",
"welcome_message": "<string>",
"thank_you_message": "<string>",
"max_duration": 1200,
"is_embedded": True,
"interview_department": "Engineering",
"interview_salary": "$80k - $100k",
"interview_available_till": "2026-12-31",
"interview_conversation_speed": "normal",
"environment": "production",
"max_followups": 2,
"questions_random_subset": 0.5,
"required_pronunciation": False,
"result_enable_edit_transcript": True,
"tags": ["engineering", "remote"],
"recruiter_profile_id": "<string>",
"hiring_for_company": { "name": "undisclosed" },
"pdf_export_auto_config": {
"mojito_language_code": "en",
"contact_details": True,
"ai_recruiter_assessment": True,
"ai_scoring_rubric": True,
"analytics": True,
"files": True,
"transcript": True,
"answer_recording": True,
"session_recording": True,
"group_by_question": True
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
candidate_name: 'John',
candidate_email: 'peterson6@hello.com',
candidate_country_code: 'HR',
candidate_resume: 'Curriculum Vitae ...',
position_def_set_id: '00000000-0000-0000-0000-000000000000',
position_external_id: 'JOB-123',
interview_template_id: '5d8ea38b-eec4-4866-aa6c-b2ea5bc6e45b',
merchant_id: '28106cba-1c27-4e53-b149-32113e5e8e31',
position_name: 'Entry level coffee boy',
position_location: 'remote',
position_country_code: 'SK',
mojito_language_code: 'en',
position_description: '<string>',
position_description_long: '<string>',
candidate_external_id: '<string>',
candidate_linkedin_url: '<string>',
interview_attempts: 3,
custom_scoring: {},
use_enhanced_expectations: true,
include_rapport_question: true,
include_closing_prompt: true,
instructional_video: true,
instructional_video_custom_text: '<string>',
welcome_message: '<string>',
thank_you_message: '<string>',
max_duration: 1200,
is_embedded: true,
interview_department: 'Engineering',
interview_salary: '$80k - $100k',
interview_available_till: '2026-12-31',
interview_conversation_speed: 'normal',
environment: 'production',
max_followups: 2,
questions_random_subset: 0.5,
required_pronunciation: false,
result_enable_edit_transcript: true,
tags: ['engineering', 'remote'],
recruiter_profile_id: '<string>',
hiring_for_company: {name: 'undisclosed'},
pdf_export_auto_config: {
mojito_language_code: 'en',
contact_details: true,
ai_recruiter_assessment: true,
ai_scoring_rubric: true,
analytics: true,
files: true,
transcript: true,
answer_recording: true,
session_recording: true,
group_by_question: true
}
})
};
fetch('https://cool.jobmojito.com/functions/v1/job-interview-create-for-candidate-with-token', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://cool.jobmojito.com/functions/v1/job-interview-create-for-candidate-with-token",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'candidate_name' => 'John',
'candidate_email' => 'peterson6@hello.com',
'candidate_country_code' => 'HR',
'candidate_resume' => 'Curriculum Vitae ...',
'position_def_set_id' => '00000000-0000-0000-0000-000000000000',
'position_external_id' => 'JOB-123',
'interview_template_id' => '5d8ea38b-eec4-4866-aa6c-b2ea5bc6e45b',
'merchant_id' => '28106cba-1c27-4e53-b149-32113e5e8e31',
'position_name' => 'Entry level coffee boy',
'position_location' => 'remote',
'position_country_code' => 'SK',
'mojito_language_code' => 'en',
'position_description' => '<string>',
'position_description_long' => '<string>',
'candidate_external_id' => '<string>',
'candidate_linkedin_url' => '<string>',
'interview_attempts' => 3,
'custom_scoring' => [
],
'use_enhanced_expectations' => true,
'include_rapport_question' => true,
'include_closing_prompt' => true,
'instructional_video' => true,
'instructional_video_custom_text' => '<string>',
'welcome_message' => '<string>',
'thank_you_message' => '<string>',
'max_duration' => 1200,
'is_embedded' => true,
'interview_department' => 'Engineering',
'interview_salary' => '$80k - $100k',
'interview_available_till' => '2026-12-31',
'interview_conversation_speed' => 'normal',
'environment' => 'production',
'max_followups' => 2,
'questions_random_subset' => 0.5,
'required_pronunciation' => false,
'result_enable_edit_transcript' => true,
'tags' => [
'engineering',
'remote'
],
'recruiter_profile_id' => '<string>',
'hiring_for_company' => [
'name' => 'undisclosed'
],
'pdf_export_auto_config' => [
'mojito_language_code' => 'en',
'contact_details' => true,
'ai_recruiter_assessment' => true,
'ai_scoring_rubric' => true,
'analytics' => true,
'files' => true,
'transcript' => true,
'answer_recording' => true,
'session_recording' => true,
'group_by_question' => true
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://cool.jobmojito.com/functions/v1/job-interview-create-for-candidate-with-token"
payload := strings.NewReader("{\n \"candidate_name\": \"John\",\n \"candidate_email\": \"peterson6@hello.com\",\n \"candidate_country_code\": \"HR\",\n \"candidate_resume\": \"Curriculum Vitae ...\",\n \"position_def_set_id\": \"00000000-0000-0000-0000-000000000000\",\n \"position_external_id\": \"JOB-123\",\n \"interview_template_id\": \"5d8ea38b-eec4-4866-aa6c-b2ea5bc6e45b\",\n \"merchant_id\": \"28106cba-1c27-4e53-b149-32113e5e8e31\",\n \"position_name\": \"Entry level coffee boy\",\n \"position_location\": \"remote\",\n \"position_country_code\": \"SK\",\n \"mojito_language_code\": \"en\",\n \"position_description\": \"<string>\",\n \"position_description_long\": \"<string>\",\n \"candidate_external_id\": \"<string>\",\n \"candidate_linkedin_url\": \"<string>\",\n \"interview_attempts\": 3,\n \"custom_scoring\": {},\n \"use_enhanced_expectations\": true,\n \"include_rapport_question\": true,\n \"include_closing_prompt\": true,\n \"instructional_video\": true,\n \"instructional_video_custom_text\": \"<string>\",\n \"welcome_message\": \"<string>\",\n \"thank_you_message\": \"<string>\",\n \"max_duration\": 1200,\n \"is_embedded\": true,\n \"interview_department\": \"Engineering\",\n \"interview_salary\": \"$80k - $100k\",\n \"interview_available_till\": \"2026-12-31\",\n \"interview_conversation_speed\": \"normal\",\n \"environment\": \"production\",\n \"max_followups\": 2,\n \"questions_random_subset\": 0.5,\n \"required_pronunciation\": false,\n \"result_enable_edit_transcript\": true,\n \"tags\": [\n \"engineering\",\n \"remote\"\n ],\n \"recruiter_profile_id\": \"<string>\",\n \"hiring_for_company\": {\n \"name\": \"undisclosed\"\n },\n \"pdf_export_auto_config\": {\n \"mojito_language_code\": \"en\",\n \"contact_details\": true,\n \"ai_recruiter_assessment\": true,\n \"ai_scoring_rubric\": true,\n \"analytics\": true,\n \"files\": true,\n \"transcript\": true,\n \"answer_recording\": true,\n \"session_recording\": true,\n \"group_by_question\": true\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://cool.jobmojito.com/functions/v1/job-interview-create-for-candidate-with-token")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"candidate_name\": \"John\",\n \"candidate_email\": \"peterson6@hello.com\",\n \"candidate_country_code\": \"HR\",\n \"candidate_resume\": \"Curriculum Vitae ...\",\n \"position_def_set_id\": \"00000000-0000-0000-0000-000000000000\",\n \"position_external_id\": \"JOB-123\",\n \"interview_template_id\": \"5d8ea38b-eec4-4866-aa6c-b2ea5bc6e45b\",\n \"merchant_id\": \"28106cba-1c27-4e53-b149-32113e5e8e31\",\n \"position_name\": \"Entry level coffee boy\",\n \"position_location\": \"remote\",\n \"position_country_code\": \"SK\",\n \"mojito_language_code\": \"en\",\n \"position_description\": \"<string>\",\n \"position_description_long\": \"<string>\",\n \"candidate_external_id\": \"<string>\",\n \"candidate_linkedin_url\": \"<string>\",\n \"interview_attempts\": 3,\n \"custom_scoring\": {},\n \"use_enhanced_expectations\": true,\n \"include_rapport_question\": true,\n \"include_closing_prompt\": true,\n \"instructional_video\": true,\n \"instructional_video_custom_text\": \"<string>\",\n \"welcome_message\": \"<string>\",\n \"thank_you_message\": \"<string>\",\n \"max_duration\": 1200,\n \"is_embedded\": true,\n \"interview_department\": \"Engineering\",\n \"interview_salary\": \"$80k - $100k\",\n \"interview_available_till\": \"2026-12-31\",\n \"interview_conversation_speed\": \"normal\",\n \"environment\": \"production\",\n \"max_followups\": 2,\n \"questions_random_subset\": 0.5,\n \"required_pronunciation\": false,\n \"result_enable_edit_transcript\": true,\n \"tags\": [\n \"engineering\",\n \"remote\"\n ],\n \"recruiter_profile_id\": \"<string>\",\n \"hiring_for_company\": {\n \"name\": \"undisclosed\"\n },\n \"pdf_export_auto_config\": {\n \"mojito_language_code\": \"en\",\n \"contact_details\": true,\n \"ai_recruiter_assessment\": true,\n \"ai_scoring_rubric\": true,\n \"analytics\": true,\n \"files\": true,\n \"transcript\": true,\n \"answer_recording\": true,\n \"session_recording\": true,\n \"group_by_question\": true\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://cool.jobmojito.com/functions/v1/job-interview-create-for-candidate-with-token")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"candidate_name\": \"John\",\n \"candidate_email\": \"peterson6@hello.com\",\n \"candidate_country_code\": \"HR\",\n \"candidate_resume\": \"Curriculum Vitae ...\",\n \"position_def_set_id\": \"00000000-0000-0000-0000-000000000000\",\n \"position_external_id\": \"JOB-123\",\n \"interview_template_id\": \"5d8ea38b-eec4-4866-aa6c-b2ea5bc6e45b\",\n \"merchant_id\": \"28106cba-1c27-4e53-b149-32113e5e8e31\",\n \"position_name\": \"Entry level coffee boy\",\n \"position_location\": \"remote\",\n \"position_country_code\": \"SK\",\n \"mojito_language_code\": \"en\",\n \"position_description\": \"<string>\",\n \"position_description_long\": \"<string>\",\n \"candidate_external_id\": \"<string>\",\n \"candidate_linkedin_url\": \"<string>\",\n \"interview_attempts\": 3,\n \"custom_scoring\": {},\n \"use_enhanced_expectations\": true,\n \"include_rapport_question\": true,\n \"include_closing_prompt\": true,\n \"instructional_video\": true,\n \"instructional_video_custom_text\": \"<string>\",\n \"welcome_message\": \"<string>\",\n \"thank_you_message\": \"<string>\",\n \"max_duration\": 1200,\n \"is_embedded\": true,\n \"interview_department\": \"Engineering\",\n \"interview_salary\": \"$80k - $100k\",\n \"interview_available_till\": \"2026-12-31\",\n \"interview_conversation_speed\": \"normal\",\n \"environment\": \"production\",\n \"max_followups\": 2,\n \"questions_random_subset\": 0.5,\n \"required_pronunciation\": false,\n \"result_enable_edit_transcript\": true,\n \"tags\": [\n \"engineering\",\n \"remote\"\n ],\n \"recruiter_profile_id\": \"<string>\",\n \"hiring_for_company\": {\n \"name\": \"undisclosed\"\n },\n \"pdf_export_auto_config\": {\n \"mojito_language_code\": \"en\",\n \"contact_details\": true,\n \"ai_recruiter_assessment\": true,\n \"ai_scoring_rubric\": true,\n \"analytics\": true,\n \"files\": true,\n \"transcript\": true,\n \"answer_recording\": true,\n \"session_recording\": true,\n \"group_by_question\": true\n }\n}"
response = http.request(request)
puts response.read_body{
"status": "ai_accept",
"interview_url": "<string>",
"position_def_set_id": "<string>",
"interview_def_set_id": "<string>",
"profile_interview_id": "<string>",
"reason": "<string>",
"embed_id": "<string>",
"embed_signing_key": "<string>",
"steps": [
{
"position_def_step_id": "<string>",
"sequence_no": 123,
"index": 123,
"type": "pre-screening",
"name": "<string>",
"position_result_step_id": "<string>",
"status": "<string>",
"decision_status": "<string>",
"state": "done",
"custom_name": "<string>",
"advance": "<string>",
"is_current": true,
"score": 123,
"start_at": "<string>",
"decided_at": "<string>",
"interview_set_id": "<string>",
"interview_pre_screening_id": "<string>",
"interview_result_id": "<string>",
"interview_result_pre_screening_id": "<string>",
"interview_attempts": 123,
"recruiter_notes": "<string>",
"meeting": {
"booking_id": "<string>",
"booking_status": "<string>",
"slot_id": "<string>",
"start_at": "<string>",
"duration_minutes": 123,
"location": "<string>",
"meeting_url": "<string>",
"instructions": "<string>",
"cutoff_at": "<string>"
}
}
]
}{
"error": "Field is required.",
"name": "interview_result_id"
}{
"error": "Field is required.",
"name": "interview_result_id"
}{
"error": "Field is required.",
"name": "interview_result_id"
}{
"error": "Field is required.",
"name": "interview_result_id"
}Authorizations
Supabase JWT — Authorization: Bearer <token>.
Body
Candidate full name.
1"John"
Candidate email (used as auth identity).
1"peterson6@hello.com"
ISO country code of the candidate.
1"HR"
Candidate resume parsed text.
1"Curriculum Vitae ..."
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.
"00000000-0000-0000-0000-000000000000"
External position code used to look up an existing position.
"JOB-123"
Interview template id to base the interview on. Defaults to the platform template when omitted.
"5d8ea38b-eec4-4866-aa6c-b2ea5bc6e45b"
Merchant id. Only honoured for admin / sub-merchant tokens; otherwise the token merchant is used.
"28106cba-1c27-4e53-b149-32113e5e8e31"
Position / job title. Required when position_def_set_id is not provided.
"Entry level coffee boy"
Position location. Required when position_def_set_id is not provided.
"remote"
ISO country code of the position. Required when position_def_set_id is not provided.
"SK"
Interview language code (one of the platform-languages.json codes). Required when position_def_set_id is not provided.
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 "en"
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.
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
External candidate id stored on the profile.
Candidate LinkedIn URL.
Whether a candidate video introduction is optional or required.
optional, required Number of allowed interview attempts (1-20).
1 <= x <= 203
Seniority level of the position. Auto-detected when omitted.
entry-level, intermediate, senior, managerial, director, executive How interview results are shown to the candidate. Defaults to minimal.
none, minimal, minimal_with_score, advanced, full, full_expand_scores Optional custom scoring overrides merged with platform defaults.
Show child attributes
Show child attributes
Reserved flag for enhanced candidate expectations generation.
Include an opening rapport question. Defaults to false.
Include a closing prompt. Defaults to true.
Show an instructional video before the interview. Defaults to false.
Custom text shown with the instructional video.
Custom welcome message for the interview.
Custom thank-you message shown after the interview.
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.
1200
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.
Department the position belongs to.
"Engineering"
Salary range shown for the position.
"$80k - $100k"
ISO date/time after which the interview is no longer available to candidates. null keeps it always available.
"2026-12-31"
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..
slower, normal, faster "normal"
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..
production, uat, development, demo "production"
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).
0 <= x <= 9992
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.
0.01 <= x <= 0.90.5
Require pronunciation assessment (restricts to pronunciation-capable languages). Defaults to false.
false
Allow editing the transcript on the result view. Defaults to true.
true
Free-form tags stored on the interview.
["engineering", "remote"]
Profile id of the recruiter owning this interview. Must be a merchant/merchant_owner/admin profile of the same merchant.
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 description/location/sector/company_size for a named client. Stored in creation_parameters.hiring_for_company.
Show child attributes
Show child attributes
{ "name": "undisclosed" }
Auto-generate a candidate PDF report with these options once the interview completes. null disables auto-export.
Show child attributes
Show child attributes
Response
Candidate enrolled. Decision status, ids, and a tokenised interview URL.
Result of creating (or resolving) the position and enrolling the candidate. Fields present depend on the decision branch.
Decision / lifecycle status for the candidate against this position.
ai_accept, recruiter_accept, recruiter_action, ai_reject, recruiter_reject, already-applied URL the candidate should open to continue: the interview of the current interview step, otherwise the application page (pre-screening outcome, meeting booking, waiting for the recruiter).
Created/resolved position id.
Created/resolved interview definition set id: the position's first interview step. Absent when the position has no interview step.
Candidate profile_interview id.
Human-readable reason, present on reject / already-applied branches.
Embed id, present only when is_embedded=true.
Embed signing key, present only when is_embedded=true.
The candidate's progress through the position's steps (pre-screening, interviews, meetings), in order.
Show child attributes
Show child attributes