API Documentation
Order
- Background
- Order Address Validation (Geocoding)
- Order Requirements
- POSTCreate Order
- POSTCreate Orders
- POSTCreate or update order by external identifier
- PATCHUpdate order
- GETGet order
- POSTCreate Quote
- GETGet Order Documents
- POSTSelect Quote
- POSTRefresh order quotes
- POSTAutodispatch Order
- POSTAdd Custom Event to Order
- DELArchive order
- PATCHUnarchive order
- Bulk Order Actions
- Delivery Windows & Capacity
Dispatch Strategies
Notifications
Store Locations & Zones
- POSTCreate store location
- PATCHUpdate Store Location
- GETGet Store Location
- GETGet Store Locations
- GETGet store location by external identifier
- DELDelete store location
- GETGet store locations that cover specified location (latitude & longitude, city_zipcode)
- POSTCreate a zone
- PATCHUpdate a zone
- DELDelete a zone
- GETGet zone
- GETGet zones
- GETGet zone by external identifier
- GETGet zones that cover specified location (latitude & longitude, city_zipcode)
Jobs
- Background
- POSTCreate Job
- POSTCreate or Update Job by External Identifier
- PATCHUpdate Job
- GETGet Job
- GETGet Job by External Identifier
- POSTSelect Quote
- POSTReassign a Task
- POSTRefresh Quotes
- POSTAutodispatch Job
- POSTAutodispatch Job by External Identifier
- POSTCancel Job
- POSTCancel Job by External Identifier
- POSTCreate Delivery Incident
- GETGet Refund Requests
- GETGet Refund Request
Batch Jobs
Providers
Routes
Templates
Miscellaneous
Autodispatch Job by External Identifier
Automatically select a quote based on dispatch strategy
curl --request POST \
--url https://api.sandbox.usenash.com/v1/jobs/external_identifier/{externalIdentifier}/autodispatch
{
"job": {
"id": "job_01234567890",
"createdAt": "2023-08-29T19:17:46.264523",
"portalUrl": "https://usenash.com/portal/job_abc123",
"externalIdentifier": "mini-mart-order-99",
"jobMetadata": {
"key": "value"
},
"isActive": true,
"isBatch": false,
"jobConfigurations": [
{
"id": "cfg_01234567890",
"package": {
"id": "pkg_01234567890",
"description": "Package description",
"requirements": [
"photo_proof_of_delivery",
"age_verification_on_delivery"
],
"tags": [
"Alcohol"
],
"packageDeliveryMode": "now",
"pickupStartTime": "2021-01-01T00:00:00Z",
"pickupEndTime": "2021-01-01T00:00:00Z",
"pickupBarcodes": [
"<string>"
],
"dropoffStartTime": "2021-01-01T00:00:00Z",
"dropoffEndTime": "2021-01-01T00:00:00Z",
"dropoffBarcodes": [
"<string>"
],
"valueCents": 123,
"taxCents": 100,
"serviceFeeCents": 100,
"itemsCount": 100,
"externalIdentifier": "mini-mart-order-99",
"minimumVehicleSize": "car",
"pickupLocation": {
"id": "loc_01234567890",
"address": "1600 Amphitheatre Parkway",
"formattedAddress": "1600 Amphitheatre Parkway",
"addressNumber": "1600",
"addressFormattedStreet": "Amphitheatre Parkway",
"addressCity": "Mountain View",
"addressCounty": "Santa Clara",
"addressState": "CA",
"addressZip": "94043",
"addressCountry": "US",
"timezoneId": "America/Los_Angeles",
"timezoneName": "Pacific Time",
"instructions": "Turn left on Main St",
"businessName": "Nash",
"firstName": "John",
"lastName": "Doe",
"phoneNumber": "+15555555555",
"email": "john.doe@example.com"
},
"pickupStoreLocationId": "store_01234567890",
"dropoffLocation": {
"id": "loc_01234567890",
"address": "1600 Amphitheatre Parkway",
"formattedAddress": "1600 Amphitheatre Parkway",
"addressNumber": "1600",
"addressFormattedStreet": "Amphitheatre Parkway",
"addressCity": "Mountain View",
"addressCounty": "Santa Clara",
"addressState": "CA",
"addressZip": "94043",
"addressCountry": "US",
"timezoneId": "America/Los_Angeles",
"timezoneName": "Pacific Time",
"instructions": "Turn left on Main St",
"businessName": "Nash",
"firstName": "John",
"lastName": "Doe",
"phoneNumber": "+15555555555",
"email": "john.doe@example.com"
},
"dropoffStoreLocationId": "store_01234567890",
"drivingMetrics": {
"distance": 100,
"duration": 100
},
"value": 100,
"tax": 100,
"serviceFee": 100,
"tipAmountCents": 123,
"weight": 100,
"dimensions": {
"height": 100,
"length": 100,
"width": 100
},
"items": [
{
"count": 1,
"description": "Item 1",
"valueCents": 100
}
],
"referenceId": "mini-mart-order-99",
"packageMetadata": {
"key": "value"
}
},
"tasks": [
{
"id": "tsk_01234567890",
"createdAt": "2023-08-29T19:17:46.264523",
"status": "running",
"pickupStartTime": "2023-08-29T19:17:46.264523",
"pickupEndTime": "2023-08-29T19:17:46.264523",
"dropoffStartTime": "2023-08-29T19:17:46.264523",
"dropoffEndTime": "2023-08-29T19:17:46.264523",
"providerId": "prv_01234567890",
"providerIsInternal": true,
"tipAmountCents": 100,
"winnerQuote": {
"id": "qot_01234567890",
"price_cents": 100
},
"quotes": [
{
"id": "qot_01234567890",
"price_cents": 100
}
],
"failedQuotes": [
{
"id": "qot_01234567890",
"price_cents": 100
}
],
"delivery": {
"id": "dlv_01234567890",
"type": "<string>",
"status": "dropoff_complete",
"statusHistory": [
{
"created_at": "2023-08-29T19:17:46.264523",
"status": "created"
},
{
"created_at": "2023-08-29T19:17:47.509265",
"status": "not_assigned_driver"
}
],
"isActive": true,
"pickupEta": "<string>",
"dropoffEta": "<string>",
"dropoffDeadline": "<string>",
"priceCents": 123,
"currency": "<string>",
"documents": [
{
"createdAt": "<string>",
"id": "<string>",
"type": "<string>",
"url": "<string>",
"contentType": "<string>",
"documentMetadata": {}
}
],
"nashFeeCents": 123,
"courierName": "<string>",
"courierPhoneNumber": "<string>",
"courierPickupPhoneNumber": "<string>",
"courierDropoffPhoneNumber": "<string>",
"courierLocation": {},
"courierVehicle": {},
"courierProfileImage": "<string>",
"proofOfDelivery": [
{}
],
"providerDeliveryId": "<string>",
"providerBatchId": "<string>",
"price": 123,
"taxAmountCents": 123,
"tollFeeCents": 123,
"waitFeeCents": 123,
"waitTimeMinutes": 123,
"cancellationFeeCents": 123,
"returnFeeCents": 123,
"otherProviderFees": {},
"insuranceFeeCents": 123,
"totalPriceBreakdown": {},
"totalPriceCents": 123
},
"tipAmountUsd": 100,
"failureReason": "Task failed",
"taskNotes": [
{
"created_at": "2023-08-29T19:17:46.264523",
"id": "not_01234567890",
"note": "Task note",
"user": {
"email": "john.doe@example.com"
}
}
]
}
],
"advancedTask": {
"id": "tsk_01234567890",
"createdAt": "2023-08-29T19:17:46.264523",
"status": "running",
"pickupStartTime": "2023-08-29T19:17:46.264523",
"pickupEndTime": "2023-08-29T19:17:46.264523",
"dropoffStartTime": "2023-08-29T19:17:46.264523",
"dropoffEndTime": "2023-08-29T19:17:46.264523",
"providerId": "prv_01234567890",
"providerIsInternal": true,
"tipAmountCents": 100,
"winnerQuote": {
"id": "qot_01234567890",
"price_cents": 100
},
"quotes": [
{
"id": "qot_01234567890",
"price_cents": 100
}
],
"failedQuotes": [
{
"id": "qot_01234567890",
"price_cents": 100
}
],
"delivery": {
"id": "dlv_01234567890",
"type": "<string>",
"status": "dropoff_complete",
"statusHistory": [
{
"created_at": "2023-08-29T19:17:46.264523",
"status": "created"
},
{
"created_at": "2023-08-29T19:17:47.509265",
"status": "not_assigned_driver"
}
],
"isActive": true,
"pickupEta": "<string>",
"dropoffEta": "<string>",
"dropoffDeadline": "<string>",
"priceCents": 123,
"currency": "<string>",
"documents": [
{
"createdAt": "<string>",
"id": "<string>",
"type": "<string>",
"url": "<string>",
"contentType": "<string>",
"documentMetadata": {}
}
],
"nashFeeCents": 123,
"courierName": "<string>",
"courierPhoneNumber": "<string>",
"courierPickupPhoneNumber": "<string>",
"courierDropoffPhoneNumber": "<string>",
"courierLocation": {},
"courierVehicle": {},
"courierProfileImage": "<string>",
"proofOfDelivery": [
{}
],
"providerDeliveryId": "<string>",
"providerBatchId": "<string>",
"price": 123,
"taxAmountCents": 123,
"tollFeeCents": 123,
"waitFeeCents": 123,
"waitTimeMinutes": 123,
"cancellationFeeCents": 123,
"returnFeeCents": 123,
"otherProviderFees": {},
"insuranceFeeCents": 123,
"totalPriceBreakdown": {},
"totalPriceCents": 123
},
"tipAmountUsd": 100,
"failureReason": "Task failed",
"taskNotes": [
{
"created_at": "2023-08-29T19:17:46.264523",
"id": "not_01234567890",
"note": "Task note",
"user": {
"email": "john.doe@example.com"
}
}
]
},
"delivery": {
"id": "dlv_01234567890",
"type": "<string>",
"status": "dropoff_complete",
"statusHistory": [
{
"created_at": "2023-08-29T19:17:46.264523",
"status": "created"
},
{
"created_at": "2023-08-29T19:17:47.509265",
"status": "not_assigned_driver"
}
],
"isActive": true,
"pickupEta": "<string>",
"dropoffEta": "<string>",
"dropoffDeadline": "<string>",
"priceCents": 123,
"currency": "<string>",
"documents": [
{
"createdAt": "<string>",
"id": "<string>",
"type": "<string>",
"url": "<string>",
"contentType": "<string>",
"documentMetadata": {}
}
],
"nashFeeCents": 123,
"courierName": "<string>",
"courierPhoneNumber": "<string>",
"courierPickupPhoneNumber": "<string>",
"courierDropoffPhoneNumber": "<string>",
"courierLocation": {},
"courierVehicle": {},
"courierProfileImage": "<string>",
"proofOfDelivery": [
{}
],
"providerDeliveryId": "<string>",
"providerBatchId": "<string>",
"price": 123,
"taxAmountCents": 123,
"tollFeeCents": 123,
"waitFeeCents": 123,
"waitTimeMinutes": 123,
"cancellationFeeCents": 123,
"returnFeeCents": 123,
"otherProviderFees": {},
"insuranceFeeCents": 123,
"totalPriceBreakdown": {},
"totalPriceCents": 123
},
"publicTrackingUrl": "https://usenash.com/tracking/job_abc123"
}
],
"optionsGroup": {
"id": "opn_WyMhHj",
"label": "New York City Strategy",
"allowedProviders": [
"prv_01234567890",
"prv_01234567891"
],
"enableAutoDispatch": true,
"providerSelectionStrategy": "cheapest",
"reassignOnFailure": true,
"enableMaxDeliveryFee": true,
"maxDeliveryFeeCents": 10000,
"costSplitMaxFixedPriceCents": 10000,
"costSplitMaxPercentage": 0.1,
"costSplitStrategy": "price",
"smartReassignment": true
},
"shortReferenceCode": "0123456",
"selectedConfiguration": {
"tasks": []
},
"jobSpecification": {
"packages": []
}
}
}
Autodispatch Job
For a given job, you can set up auto dispatch features by creating Dispatch Strategies.
In some scenarios, you may want to create a job to display the quotes to your customer before sending the job for fulfillment. This is the case in a checkout experience, where you would want to display the delivery options before dispatching the job. After the customer accepts the order and would like to place it, you can utilize the Autodispatch Job endpoint to make sure that the job is sent using the customized Options Group that you have created.
Therefore, to autodispatch a job using an options group, you need to ensure that an options group has been attached to the job and that you have selected a dispatching strategy for the options group. When creating a job, you can display the quotes to your customers, and then instead of selecting a quote, you can autodispatch the job using this endpoint.
Autodispatch Preferred Quote
When a call to /autodispatch
is made, the quote with the tag autodispatch_preferred_quote
will be selected.
You may utilize this tag to know what price to display to your customers, if you are utilizing this feature as part of your checkout experience.
You can access the full list of quotes create_job_response["jobConfigurations"][0]["advanced_task"]["quotes"]
and then filter the one with "autodispatch_preferred_quote"
in quote.tags.
Please make sure that Enable Autodispatch is switched off on the Dispatch Strategy that you are using to autodispatch the job.
Path Parameters
job external identifier
Response
Expected output from autodispatch job endpoint.
curl --request POST \
--url https://api.sandbox.usenash.com/v1/jobs/external_identifier/{externalIdentifier}/autodispatch
{
"job": {
"id": "job_01234567890",
"createdAt": "2023-08-29T19:17:46.264523",
"portalUrl": "https://usenash.com/portal/job_abc123",
"externalIdentifier": "mini-mart-order-99",
"jobMetadata": {
"key": "value"
},
"isActive": true,
"isBatch": false,
"jobConfigurations": [
{
"id": "cfg_01234567890",
"package": {
"id": "pkg_01234567890",
"description": "Package description",
"requirements": [
"photo_proof_of_delivery",
"age_verification_on_delivery"
],
"tags": [
"Alcohol"
],
"packageDeliveryMode": "now",
"pickupStartTime": "2021-01-01T00:00:00Z",
"pickupEndTime": "2021-01-01T00:00:00Z",
"pickupBarcodes": [
"<string>"
],
"dropoffStartTime": "2021-01-01T00:00:00Z",
"dropoffEndTime": "2021-01-01T00:00:00Z",
"dropoffBarcodes": [
"<string>"
],
"valueCents": 123,
"taxCents": 100,
"serviceFeeCents": 100,
"itemsCount": 100,
"externalIdentifier": "mini-mart-order-99",
"minimumVehicleSize": "car",
"pickupLocation": {
"id": "loc_01234567890",
"address": "1600 Amphitheatre Parkway",
"formattedAddress": "1600 Amphitheatre Parkway",
"addressNumber": "1600",
"addressFormattedStreet": "Amphitheatre Parkway",
"addressCity": "Mountain View",
"addressCounty": "Santa Clara",
"addressState": "CA",
"addressZip": "94043",
"addressCountry": "US",
"timezoneId": "America/Los_Angeles",
"timezoneName": "Pacific Time",
"instructions": "Turn left on Main St",
"businessName": "Nash",
"firstName": "John",
"lastName": "Doe",
"phoneNumber": "+15555555555",
"email": "john.doe@example.com"
},
"pickupStoreLocationId": "store_01234567890",
"dropoffLocation": {
"id": "loc_01234567890",
"address": "1600 Amphitheatre Parkway",
"formattedAddress": "1600 Amphitheatre Parkway",
"addressNumber": "1600",
"addressFormattedStreet": "Amphitheatre Parkway",
"addressCity": "Mountain View",
"addressCounty": "Santa Clara",
"addressState": "CA",
"addressZip": "94043",
"addressCountry": "US",
"timezoneId": "America/Los_Angeles",
"timezoneName": "Pacific Time",
"instructions": "Turn left on Main St",
"businessName": "Nash",
"firstName": "John",
"lastName": "Doe",
"phoneNumber": "+15555555555",
"email": "john.doe@example.com"
},
"dropoffStoreLocationId": "store_01234567890",
"drivingMetrics": {
"distance": 100,
"duration": 100
},
"value": 100,
"tax": 100,
"serviceFee": 100,
"tipAmountCents": 123,
"weight": 100,
"dimensions": {
"height": 100,
"length": 100,
"width": 100
},
"items": [
{
"count": 1,
"description": "Item 1",
"valueCents": 100
}
],
"referenceId": "mini-mart-order-99",
"packageMetadata": {
"key": "value"
}
},
"tasks": [
{
"id": "tsk_01234567890",
"createdAt": "2023-08-29T19:17:46.264523",
"status": "running",
"pickupStartTime": "2023-08-29T19:17:46.264523",
"pickupEndTime": "2023-08-29T19:17:46.264523",
"dropoffStartTime": "2023-08-29T19:17:46.264523",
"dropoffEndTime": "2023-08-29T19:17:46.264523",
"providerId": "prv_01234567890",
"providerIsInternal": true,
"tipAmountCents": 100,
"winnerQuote": {
"id": "qot_01234567890",
"price_cents": 100
},
"quotes": [
{
"id": "qot_01234567890",
"price_cents": 100
}
],
"failedQuotes": [
{
"id": "qot_01234567890",
"price_cents": 100
}
],
"delivery": {
"id": "dlv_01234567890",
"type": "<string>",
"status": "dropoff_complete",
"statusHistory": [
{
"created_at": "2023-08-29T19:17:46.264523",
"status": "created"
},
{
"created_at": "2023-08-29T19:17:47.509265",
"status": "not_assigned_driver"
}
],
"isActive": true,
"pickupEta": "<string>",
"dropoffEta": "<string>",
"dropoffDeadline": "<string>",
"priceCents": 123,
"currency": "<string>",
"documents": [
{
"createdAt": "<string>",
"id": "<string>",
"type": "<string>",
"url": "<string>",
"contentType": "<string>",
"documentMetadata": {}
}
],
"nashFeeCents": 123,
"courierName": "<string>",
"courierPhoneNumber": "<string>",
"courierPickupPhoneNumber": "<string>",
"courierDropoffPhoneNumber": "<string>",
"courierLocation": {},
"courierVehicle": {},
"courierProfileImage": "<string>",
"proofOfDelivery": [
{}
],
"providerDeliveryId": "<string>",
"providerBatchId": "<string>",
"price": 123,
"taxAmountCents": 123,
"tollFeeCents": 123,
"waitFeeCents": 123,
"waitTimeMinutes": 123,
"cancellationFeeCents": 123,
"returnFeeCents": 123,
"otherProviderFees": {},
"insuranceFeeCents": 123,
"totalPriceBreakdown": {},
"totalPriceCents": 123
},
"tipAmountUsd": 100,
"failureReason": "Task failed",
"taskNotes": [
{
"created_at": "2023-08-29T19:17:46.264523",
"id": "not_01234567890",
"note": "Task note",
"user": {
"email": "john.doe@example.com"
}
}
]
}
],
"advancedTask": {
"id": "tsk_01234567890",
"createdAt": "2023-08-29T19:17:46.264523",
"status": "running",
"pickupStartTime": "2023-08-29T19:17:46.264523",
"pickupEndTime": "2023-08-29T19:17:46.264523",
"dropoffStartTime": "2023-08-29T19:17:46.264523",
"dropoffEndTime": "2023-08-29T19:17:46.264523",
"providerId": "prv_01234567890",
"providerIsInternal": true,
"tipAmountCents": 100,
"winnerQuote": {
"id": "qot_01234567890",
"price_cents": 100
},
"quotes": [
{
"id": "qot_01234567890",
"price_cents": 100
}
],
"failedQuotes": [
{
"id": "qot_01234567890",
"price_cents": 100
}
],
"delivery": {
"id": "dlv_01234567890",
"type": "<string>",
"status": "dropoff_complete",
"statusHistory": [
{
"created_at": "2023-08-29T19:17:46.264523",
"status": "created"
},
{
"created_at": "2023-08-29T19:17:47.509265",
"status": "not_assigned_driver"
}
],
"isActive": true,
"pickupEta": "<string>",
"dropoffEta": "<string>",
"dropoffDeadline": "<string>",
"priceCents": 123,
"currency": "<string>",
"documents": [
{
"createdAt": "<string>",
"id": "<string>",
"type": "<string>",
"url": "<string>",
"contentType": "<string>",
"documentMetadata": {}
}
],
"nashFeeCents": 123,
"courierName": "<string>",
"courierPhoneNumber": "<string>",
"courierPickupPhoneNumber": "<string>",
"courierDropoffPhoneNumber": "<string>",
"courierLocation": {},
"courierVehicle": {},
"courierProfileImage": "<string>",
"proofOfDelivery": [
{}
],
"providerDeliveryId": "<string>",
"providerBatchId": "<string>",
"price": 123,
"taxAmountCents": 123,
"tollFeeCents": 123,
"waitFeeCents": 123,
"waitTimeMinutes": 123,
"cancellationFeeCents": 123,
"returnFeeCents": 123,
"otherProviderFees": {},
"insuranceFeeCents": 123,
"totalPriceBreakdown": {},
"totalPriceCents": 123
},
"tipAmountUsd": 100,
"failureReason": "Task failed",
"taskNotes": [
{
"created_at": "2023-08-29T19:17:46.264523",
"id": "not_01234567890",
"note": "Task note",
"user": {
"email": "john.doe@example.com"
}
}
]
},
"delivery": {
"id": "dlv_01234567890",
"type": "<string>",
"status": "dropoff_complete",
"statusHistory": [
{
"created_at": "2023-08-29T19:17:46.264523",
"status": "created"
},
{
"created_at": "2023-08-29T19:17:47.509265",
"status": "not_assigned_driver"
}
],
"isActive": true,
"pickupEta": "<string>",
"dropoffEta": "<string>",
"dropoffDeadline": "<string>",
"priceCents": 123,
"currency": "<string>",
"documents": [
{
"createdAt": "<string>",
"id": "<string>",
"type": "<string>",
"url": "<string>",
"contentType": "<string>",
"documentMetadata": {}
}
],
"nashFeeCents": 123,
"courierName": "<string>",
"courierPhoneNumber": "<string>",
"courierPickupPhoneNumber": "<string>",
"courierDropoffPhoneNumber": "<string>",
"courierLocation": {},
"courierVehicle": {},
"courierProfileImage": "<string>",
"proofOfDelivery": [
{}
],
"providerDeliveryId": "<string>",
"providerBatchId": "<string>",
"price": 123,
"taxAmountCents": 123,
"tollFeeCents": 123,
"waitFeeCents": 123,
"waitTimeMinutes": 123,
"cancellationFeeCents": 123,
"returnFeeCents": 123,
"otherProviderFees": {},
"insuranceFeeCents": 123,
"totalPriceBreakdown": {},
"totalPriceCents": 123
},
"publicTrackingUrl": "https://usenash.com/tracking/job_abc123"
}
],
"optionsGroup": {
"id": "opn_WyMhHj",
"label": "New York City Strategy",
"allowedProviders": [
"prv_01234567890",
"prv_01234567891"
],
"enableAutoDispatch": true,
"providerSelectionStrategy": "cheapest",
"reassignOnFailure": true,
"enableMaxDeliveryFee": true,
"maxDeliveryFeeCents": 10000,
"costSplitMaxFixedPriceCents": 10000,
"costSplitMaxPercentage": 0.1,
"costSplitStrategy": "price",
"smartReassignment": true
},
"shortReferenceCode": "0123456",
"selectedConfiguration": {
"tasks": []
},
"jobSpecification": {
"packages": []
}
}
}