Auto-assign Jobs
curl --request POST \
--url https://api.hellotracks.com/api/autoassign \
--header 'API-Key: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"jobs": [
{}
],
"workers": [
{}
],
"method": "<string>",
"pickupCapacity": 123,
"dropoffCapacity": 123,
"day": 123,
"assignedJobs": [
{}
],
"unassignedJobs": [
{}
]
}
'import requests
url = "https://api.hellotracks.com/api/autoassign"
payload = {
"jobs": [{}],
"workers": [{}],
"method": "<string>",
"pickupCapacity": 123,
"dropoffCapacity": 123,
"day": 123,
"assignedJobs": [{}],
"unassignedJobs": [{}]
}
headers = {
"API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
jobs: [{}],
workers: [{}],
method: '<string>',
pickupCapacity: 123,
dropoffCapacity: 123,
day: 123,
assignedJobs: [{}],
unassignedJobs: [{}]
})
};
fetch('https://api.hellotracks.com/api/autoassign', 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://api.hellotracks.com/api/autoassign",
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([
'jobs' => [
[
]
],
'workers' => [
[
]
],
'method' => '<string>',
'pickupCapacity' => 123,
'dropoffCapacity' => 123,
'day' => 123,
'assignedJobs' => [
[
]
],
'unassignedJobs' => [
[
]
]
]),
CURLOPT_HTTPHEADER => [
"API-Key: <api-key>",
"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://api.hellotracks.com/api/autoassign"
payload := strings.NewReader("{\n \"jobs\": [\n {}\n ],\n \"workers\": [\n {}\n ],\n \"method\": \"<string>\",\n \"pickupCapacity\": 123,\n \"dropoffCapacity\": 123,\n \"day\": 123,\n \"assignedJobs\": [\n {}\n ],\n \"unassignedJobs\": [\n {}\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("API-Key", "<api-key>")
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://api.hellotracks.com/api/autoassign")
.header("API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"jobs\": [\n {}\n ],\n \"workers\": [\n {}\n ],\n \"method\": \"<string>\",\n \"pickupCapacity\": 123,\n \"dropoffCapacity\": 123,\n \"day\": 123,\n \"assignedJobs\": [\n {}\n ],\n \"unassignedJobs\": [\n {}\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hellotracks.com/api/autoassign")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"jobs\": [\n {}\n ],\n \"workers\": [\n {}\n ],\n \"method\": \"<string>\",\n \"pickupCapacity\": 123,\n \"dropoffCapacity\": 123,\n \"day\": 123,\n \"assignedJobs\": [\n {}\n ],\n \"unassignedJobs\": [\n {}\n ]\n}"
response = http.request(request)
puts response.read_bodyDispatch and Routing
Auto-assign Jobs
Use this endpoint to automatically assign jobs to workers.
POST
/
api
/
autoassign
Auto-assign Jobs
curl --request POST \
--url https://api.hellotracks.com/api/autoassign \
--header 'API-Key: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"jobs": [
{}
],
"workers": [
{}
],
"method": "<string>",
"pickupCapacity": 123,
"dropoffCapacity": 123,
"day": 123,
"assignedJobs": [
{}
],
"unassignedJobs": [
{}
]
}
'import requests
url = "https://api.hellotracks.com/api/autoassign"
payload = {
"jobs": [{}],
"workers": [{}],
"method": "<string>",
"pickupCapacity": 123,
"dropoffCapacity": 123,
"day": 123,
"assignedJobs": [{}],
"unassignedJobs": [{}]
}
headers = {
"API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
jobs: [{}],
workers: [{}],
method: '<string>',
pickupCapacity: 123,
dropoffCapacity: 123,
day: 123,
assignedJobs: [{}],
unassignedJobs: [{}]
})
};
fetch('https://api.hellotracks.com/api/autoassign', 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://api.hellotracks.com/api/autoassign",
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([
'jobs' => [
[
]
],
'workers' => [
[
]
],
'method' => '<string>',
'pickupCapacity' => 123,
'dropoffCapacity' => 123,
'day' => 123,
'assignedJobs' => [
[
]
],
'unassignedJobs' => [
[
]
]
]),
CURLOPT_HTTPHEADER => [
"API-Key: <api-key>",
"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://api.hellotracks.com/api/autoassign"
payload := strings.NewReader("{\n \"jobs\": [\n {}\n ],\n \"workers\": [\n {}\n ],\n \"method\": \"<string>\",\n \"pickupCapacity\": 123,\n \"dropoffCapacity\": 123,\n \"day\": 123,\n \"assignedJobs\": [\n {}\n ],\n \"unassignedJobs\": [\n {}\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("API-Key", "<api-key>")
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://api.hellotracks.com/api/autoassign")
.header("API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"jobs\": [\n {}\n ],\n \"workers\": [\n {}\n ],\n \"method\": \"<string>\",\n \"pickupCapacity\": 123,\n \"dropoffCapacity\": 123,\n \"day\": 123,\n \"assignedJobs\": [\n {}\n ],\n \"unassignedJobs\": [\n {}\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hellotracks.com/api/autoassign")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"jobs\": [\n {}\n ],\n \"workers\": [\n {}\n ],\n \"method\": \"<string>\",\n \"pickupCapacity\": 123,\n \"dropoffCapacity\": 123,\n \"day\": 123,\n \"assignedJobs\": [\n {}\n ],\n \"unassignedJobs\": [\n {}\n ]\n}"
response = http.request(request)
puts response.read_bodyThis API endpoint allows for the automated assignment of a set of jobs to a specified group of workers.
REQUEST
Initiate a POST request to auto-assign jobs based on specified criteria.POST https://api.hellotracks.com/api/autoassign
{
"data": {
"jobs": [ "<job_id_1>", "<job_id_2>" , "<job_id_n>" ],
"workers": [ "<username_1>", "<username_2>" , "<username_n>" ],
"method": <String> (optional),
"pickupCapacity": <Int> (optional),
"dropoffCapacity": <Int> (optional),
"day": <Int> (optional) // format YYYYMMDD e.g. 20210701
}
}
Array of job IDs to be assigned.
Array of worker usernames for job assignment.
Assignment method:
distance, zones, or size.Pickup capacity constraint for assignment.
Dropoff capacity constraint for assignment.
The specific day for assignment, format YYYYMMDD. Defaults to today when set to
0 or omitted.Configuration
The auto-assignment algorithm considers:- Working Hours: Respects worker availability and shift times
- Capacity Constraints: Honors pickup and dropoff capacity limits if specified
- Zones: Considers assigned zones for workers (when using
zonesmethod) - Distance: Optimizes for minimal travel distance (when using
distancemethod)
RESPONSE
Response detailing the assignment status of the jobs.{
"status": 0,
"assignedJobs": [ "<job_id_1>", "<job_id_2>" ],
"unassignedJobs": [ "<job_id_1>", "<job_id_2>" ],
"jobs": [
{ <job_1> },
{ <job_2> },
...
{ <job_n> }
]
}
List of job IDs that were successfully assigned.
List of job IDs that could not be assigned.
A comprehensive list of all jobs considered during the assignment process.
⌘I