curl --request GET \
--url https://api.sandbox.usenash.com/v1/routes/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.sandbox.usenash.com/v1/routes/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.sandbox.usenash.com/v1/routes/{id}', 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.sandbox.usenash.com/v1/routes/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.sandbox.usenash.com/v1/routes/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.sandbox.usenash.com/v1/routes/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sandbox.usenash.com/v1/routes/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "rte_JphRWDiEosGpXuxwgaYfY3",
"portalUrl": "https://portal.usenash.com/routes/rte_JphRWDiEosGpXuxwgaYfY3",
"type": "SINGLE_PICKUP_MULTIPLE_DROPOFFS",
"stops": [
{
"stopType": "PICKUP",
"objectIds": [
"ord_Qr5bVt8WiByGh66z2g7xEu",
"ord_WJFuooSiRvFCaceGZjpbqs"
],
"location": {
"lat": 45.558214,
"lng": -122.587074
},
"arrivalTime": "2025-04-25T03:27:00",
"departTime": "2025-04-25T03:30:00",
"plannedArrivalTime": "2025-04-25T03:27:00",
"serviceTime": 360,
"distanceFromPrevious": 3376,
"durationFromPrevious": 420,
"status": "PENDING",
"statusDescription": "leave_unattended",
"statusHistory": [
{
"created_at": "2025-04-25T03:00:00Z",
"status": "PENDING"
},
{
"created_at": "2025-04-25T03:15:00Z",
"status": "ENROUTE"
},
{
"created_at": "2025-04-25T03:20:00Z",
"status": "COMPLETED",
"status_description": "leave_unattended"
}
],
"metadata": {},
"startedAt": "2025-04-25T03:27:00Z",
"breakDuration": 123,
"orders": [
{
"id": "ord_Qr5bVt8WiByGh66z2g7xEu",
"externalId": "<string>",
"publicTrackingUrl": "<string>",
"pod": [
{
"type": "<string>",
"url": "<string>",
"uploadedAt": "<string>"
}
],
"orderItems": [
{
"id": "item-001",
"description": "<string>",
"count": 123,
"valueCents": 123,
"barcode": "<string>",
"sku": "<string>",
"category": "<string>",
"status": "delivered",
"availableQuantity": 123,
"statusMetadata": {
"pickedAt": "<string>",
"deliveredAt": "<string>",
"failedAt": "<string>",
"returnedAt": "<string>",
"failureReason": "<string>",
"failureLocation": "dropoff"
},
"statusHistory": [
{
"status": "picked",
"createdAt": "2025-04-25T03:20:00"
}
],
"subItems": [
"<unknown>"
]
}
]
}
]
}
],
"externalId": "rte_JphRWDiEosGpXuxwgaYfY3",
"name": "Route 1",
"courierId": "cor_9dK2mNp7xVt3RfWzY8sLbQ",
"vehicleId": "veh_4hL8pXq2sVn6RtY3wCbD9M",
"courier": {
"id": "<string>",
"firstName": "<string>",
"lastName": "<string>",
"phoneNumber": "<string>"
},
"driverGroup": {
"id": "<string>",
"externalId": "<string>"
},
"courierPosition": {
"lat": 123,
"lng": 123,
"updatedAt": "<string>",
"capturedAt": "<string>",
"accuracy": 123,
"heading": 123,
"speed": 123,
"altitude": 123,
"altitudeAccuracy": 123,
"batteryLevel": 123,
"batteryIsCharging": true,
"isMoving": true
},
"vehicle": {
"licensePlate": "<string>",
"make": "<string>",
"model": "<string>",
"color": "<string>",
"year": 123,
"type": "<string>"
},
"providerName": "<string>",
"shiftId": "shf_1234567890abcdef12345678",
"isDispatched": false,
"jobId": "job_1234567890abcdef12345678",
"routeMetadata": {
"priority": "high",
"source": "optimization_engine"
},
"validationErrors": {
"order_123": "Order 123 has pickup but no dropoff"
},
"encodedPolyline": "<string>",
"status": "CREATED",
"statusHistory": [
{
"created_at": "2025-04-25T03:00:00Z",
"status": "CREATED"
},
{
"created_at": "2025-04-25T03:10:00Z",
"status": "ASSIGNED"
},
{
"created_at": "2025-04-25T03:15:00Z",
"status": "STARTED"
}
]
}[
{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
},
"response_status": "<string>",
"RequestID": "<string>"
}
]Get Route
Retrieve a route by ID, including its stops, travel metrics, and associated orders.
curl --request GET \
--url https://api.sandbox.usenash.com/v1/routes/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.sandbox.usenash.com/v1/routes/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.sandbox.usenash.com/v1/routes/{id}', 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.sandbox.usenash.com/v1/routes/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.sandbox.usenash.com/v1/routes/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.sandbox.usenash.com/v1/routes/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sandbox.usenash.com/v1/routes/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "rte_JphRWDiEosGpXuxwgaYfY3",
"portalUrl": "https://portal.usenash.com/routes/rte_JphRWDiEosGpXuxwgaYfY3",
"type": "SINGLE_PICKUP_MULTIPLE_DROPOFFS",
"stops": [
{
"stopType": "PICKUP",
"objectIds": [
"ord_Qr5bVt8WiByGh66z2g7xEu",
"ord_WJFuooSiRvFCaceGZjpbqs"
],
"location": {
"lat": 45.558214,
"lng": -122.587074
},
"arrivalTime": "2025-04-25T03:27:00",
"departTime": "2025-04-25T03:30:00",
"plannedArrivalTime": "2025-04-25T03:27:00",
"serviceTime": 360,
"distanceFromPrevious": 3376,
"durationFromPrevious": 420,
"status": "PENDING",
"statusDescription": "leave_unattended",
"statusHistory": [
{
"created_at": "2025-04-25T03:00:00Z",
"status": "PENDING"
},
{
"created_at": "2025-04-25T03:15:00Z",
"status": "ENROUTE"
},
{
"created_at": "2025-04-25T03:20:00Z",
"status": "COMPLETED",
"status_description": "leave_unattended"
}
],
"metadata": {},
"startedAt": "2025-04-25T03:27:00Z",
"breakDuration": 123,
"orders": [
{
"id": "ord_Qr5bVt8WiByGh66z2g7xEu",
"externalId": "<string>",
"publicTrackingUrl": "<string>",
"pod": [
{
"type": "<string>",
"url": "<string>",
"uploadedAt": "<string>"
}
],
"orderItems": [
{
"id": "item-001",
"description": "<string>",
"count": 123,
"valueCents": 123,
"barcode": "<string>",
"sku": "<string>",
"category": "<string>",
"status": "delivered",
"availableQuantity": 123,
"statusMetadata": {
"pickedAt": "<string>",
"deliveredAt": "<string>",
"failedAt": "<string>",
"returnedAt": "<string>",
"failureReason": "<string>",
"failureLocation": "dropoff"
},
"statusHistory": [
{
"status": "picked",
"createdAt": "2025-04-25T03:20:00"
}
],
"subItems": [
"<unknown>"
]
}
]
}
]
}
],
"externalId": "rte_JphRWDiEosGpXuxwgaYfY3",
"name": "Route 1",
"courierId": "cor_9dK2mNp7xVt3RfWzY8sLbQ",
"vehicleId": "veh_4hL8pXq2sVn6RtY3wCbD9M",
"courier": {
"id": "<string>",
"firstName": "<string>",
"lastName": "<string>",
"phoneNumber": "<string>"
},
"driverGroup": {
"id": "<string>",
"externalId": "<string>"
},
"courierPosition": {
"lat": 123,
"lng": 123,
"updatedAt": "<string>",
"capturedAt": "<string>",
"accuracy": 123,
"heading": 123,
"speed": 123,
"altitude": 123,
"altitudeAccuracy": 123,
"batteryLevel": 123,
"batteryIsCharging": true,
"isMoving": true
},
"vehicle": {
"licensePlate": "<string>",
"make": "<string>",
"model": "<string>",
"color": "<string>",
"year": 123,
"type": "<string>"
},
"providerName": "<string>",
"shiftId": "shf_1234567890abcdef12345678",
"isDispatched": false,
"jobId": "job_1234567890abcdef12345678",
"routeMetadata": {
"priority": "high",
"source": "optimization_engine"
},
"validationErrors": {
"order_123": "Order 123 has pickup but no dropoff"
},
"encodedPolyline": "<string>",
"status": "CREATED",
"statusHistory": [
{
"created_at": "2025-04-25T03:00:00Z",
"status": "CREATED"
},
{
"created_at": "2025-04-25T03:10:00Z",
"status": "ASSIGNED"
},
{
"created_at": "2025-04-25T03:15:00Z",
"status": "STARTED"
}
]
}[
{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
},
"response_status": "<string>",
"RequestID": "<string>"
}
]Route object represents a planned sequence of stops for a vehicle or delivery agent.
The core of the Route is the stops array, which lists the specific locations to visit in order. Each stop within this array details:
- The actions to be performed (like
stopType). - Associated items (
objectIds). - Timing estimates (
arrivalTime,departTime,serviceTime). - Travel details from the prior stop (
distanceFromPrevious,durationFromPrevious). - The physical coordinates (
location).
arrivalTime, departTime, serviceTime, distanceFromPrevious, and durationFromPrevious are the values stored with the route. Nash fills them in when it plans the route for you or when you call Calculate Route Timing; a route you build by hand carries whatever you supplied at creation. This endpoint reads them back and doesn’t recompute them. To follow what the driver actually did, read each stop’s status and statusHistory, which record every transition (ENROUTE, ARRIVED, IN_PROGRESS, COMPLETED, and the failure states) with a timestamp.Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Route ID
Response
OK
Represents a planned sequence of stops for a delivery or batch.
Unique identifier for the route.
"rte_JphRWDiEosGpXuxwgaYfY3"
Portal URL of the route.
"https://portal.usenash.com/routes/rte_JphRWDiEosGpXuxwgaYfY3"
Type of the route, indicating the pickup/dropoff structure.
"SINGLE_PICKUP_MULTIPLE_DROPOFFS"
Ordered list of stops included in the route.
Show child attributes
Show child attributes
External Route ID.
"rte_JphRWDiEosGpXuxwgaYfY3"
Name of the route.
"Route 1"
Courier ID of the driver assigned to the route.
"cor_9dK2mNp7xVt3RfWzY8sLbQ"
Vehicle ID of the vehicle assigned to the route.
"veh_4hL8pXq2sVn6RtY3wCbD9M"
Courier/driver details for the route.
Show child attributes
Show child attributes
Driver group assigned to the route.
Show child attributes
Show child attributes
Current GPS position of the assigned courier.
Show child attributes
Show child attributes
Vehicle details for the route.
Show child attributes
Show child attributes
Name of the delivery provider assigned to this route.
Shift ID of the shift assigned to the route.
"shf_1234567890abcdef12345678"
Whether the route is dispatched.
Dispatched Job ID of this route
"job_1234567890abcdef12345678"
Additional metadata for the route.
{
"priority": "high",
"source": "optimization_engine"
}
Validation errors for the route.
Show child attributes
Show child attributes
{
"order_123": "Order 123 has pickup but no dropoff"
}
Encoded polyline representing the route geometry.
Current status of the route.
"CREATED"
History of status changes for the route.
Show child attributes
Show child attributes
[
{
"created_at": "2025-04-25T03:00:00Z",
"status": "CREATED"
},
{
"created_at": "2025-04-25T03:10:00Z",
"status": "ASSIGNED"
},
{
"created_at": "2025-04-25T03:15:00Z",
"status": "STARTED"
}
]
Was this page helpful?