curl --request POST \
--url https://cool.jobmojito.com/functions/v1/merchant-task-save \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"merchant_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"task_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"title": "<string>",
"assignee_profile_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"due_at": "<string>",
"notes": "<string>",
"candidate_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"application_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"position_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://cool.jobmojito.com/functions/v1/merchant-task-save"
payload = {
"merchant_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"task_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"title": "<string>",
"assignee_profile_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"due_at": "<string>",
"notes": "<string>",
"candidate_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"application_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"position_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
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({
merchant_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
task_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
title: '<string>',
assignee_profile_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
due_at: '<string>',
notes: '<string>',
candidate_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
application_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
position_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
})
};
fetch('https://cool.jobmojito.com/functions/v1/merchant-task-save', 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/merchant-task-save",
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([
'merchant_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'task_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'title' => '<string>',
'assignee_profile_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'due_at' => '<string>',
'notes' => '<string>',
'candidate_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'application_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'position_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]),
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/merchant-task-save"
payload := strings.NewReader("{\n \"merchant_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"task_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"title\": \"<string>\",\n \"assignee_profile_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"due_at\": \"<string>\",\n \"notes\": \"<string>\",\n \"candidate_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"application_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"position_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\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/merchant-task-save")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"merchant_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"task_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"title\": \"<string>\",\n \"assignee_profile_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"due_at\": \"<string>\",\n \"notes\": \"<string>\",\n \"candidate_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"application_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"position_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://cool.jobmojito.com/functions/v1/merchant-task-save")
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 \"merchant_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"task_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"title\": \"<string>\",\n \"assignee_profile_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"due_at\": \"<string>\",\n \"notes\": \"<string>\",\n \"candidate_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"application_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"position_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}"
response = http.request(request)
puts response.read_body{
"task_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"created": true,
"status": "open",
"assignee_notified": true
}{
"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"
}{
"error": "Field is required.",
"name": "interview_result_id"
}Create or change a task
Creates a task (no task_id: title, assignee_profile_id and one of candidate_id, application_id, position_id), or changes one: title, notes, assignee, due date, and status (open, done, cancelled; cancelled is final). Fields left out keep their value. Owners change any task; recruiters the tasks they created or are assigned; hiring managers are read only here. E-mail: giving the task to someone other than you (a new task, or a new assignee) sends that person one “task assigned” e-mail with the title, the start of the notes, the due date, the candidate or position and your name. Assigning yourself, editing and status changes send nothing. Needs the tasks feature; position access applies (a candidate or position you may not see answers 404).
curl --request POST \
--url https://cool.jobmojito.com/functions/v1/merchant-task-save \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"merchant_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"task_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"title": "<string>",
"assignee_profile_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"due_at": "<string>",
"notes": "<string>",
"candidate_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"application_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"position_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://cool.jobmojito.com/functions/v1/merchant-task-save"
payload = {
"merchant_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"task_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"title": "<string>",
"assignee_profile_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"due_at": "<string>",
"notes": "<string>",
"candidate_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"application_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"position_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
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({
merchant_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
task_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
title: '<string>',
assignee_profile_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
due_at: '<string>',
notes: '<string>',
candidate_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
application_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
position_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
})
};
fetch('https://cool.jobmojito.com/functions/v1/merchant-task-save', 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/merchant-task-save",
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([
'merchant_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'task_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'title' => '<string>',
'assignee_profile_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'due_at' => '<string>',
'notes' => '<string>',
'candidate_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'application_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'position_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]),
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/merchant-task-save"
payload := strings.NewReader("{\n \"merchant_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"task_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"title\": \"<string>\",\n \"assignee_profile_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"due_at\": \"<string>\",\n \"notes\": \"<string>\",\n \"candidate_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"application_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"position_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\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/merchant-task-save")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"merchant_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"task_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"title\": \"<string>\",\n \"assignee_profile_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"due_at\": \"<string>\",\n \"notes\": \"<string>\",\n \"candidate_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"application_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"position_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://cool.jobmojito.com/functions/v1/merchant-task-save")
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 \"merchant_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"task_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"title\": \"<string>\",\n \"assignee_profile_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"due_at\": \"<string>\",\n \"notes\": \"<string>\",\n \"candidate_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"application_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"position_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}"
response = http.request(request)
puts response.read_body{
"task_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"created": true,
"status": "open",
"assignee_notified": true
}{
"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"
}{
"error": "Field is required.",
"name": "interview_result_id"
}Authorizations
Supabase JWT — Authorization: Bearer <token>.
Body
Optional company to act on. Admins and sub-merchant operators only; other callers always use their token's company.
The task to change (merchant_task.id, from list_tasks). Leave out to create a task.
Title, 1 to 200 characters. Required to create.
1 - 200Who does it (profile.id of an active user of the company who can see the candidate or position). Required to create.
Due date and time (ISO 8601 with offset). An empty string (or null) removes it; left out keeps it.
^$|^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2}(\.\d+)?)?(Z|[+-]\d{2}:\d{2})$Notes, at most 4000 characters. An empty string (or null) removes them; left out keeps them.
4000Create only: the candidate the task is about (profile_interview.id).
Create only: one application of the candidate (position_result.id); the candidate is taken from it.
Create only: the position (position_def_set.id) or interview (interview_def_set.id) the task is about.
open, done or cancelled. Cancelled is final: a cancelled task cannot be changed or reopened. Applied after the other changes.
open, done, cancelled Response
The task after the call.
The task (merchant_task.id).
true when this call created the task.
The task status after the call.
open, done, cancelled true when the assignee was e-mailed "task assigned": a new task, or a new assignee, given to someone other than you.