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 Order
Automatically select a quote based on the order’s dispatch stategy.
curl --request POST \
--url https://api.sandbox.usenash.com/v1/order/{id}/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": []
}
}
}
This is similar to Autodispatch Job
Autodispatch Order
For a given order, you can set up auto dispatch features by creating a Dispatch Strategy.
In some scenarios, you may want to create an order to display the quotes to your customer before sending the order for fulfillment.
This is the case in a checkout experience, where you would want to display the delivery options before dispatching the order.
After the customer accepts the order and would like to place it, you can utilize the Autodispatch Order
endpoint to make sure
that the order is sent using the customized Options Group that you have created.
Therefore, to autodispatch a order using an options group, you need to ensure that an options group has been attached to the order and that you have selected a dispatching strategy for the options group. When creating a order, you can display the quotes to your customers, and then instead of selecting a quote, you can autodispatch the order 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 order["quotes"]
and then filter
the one with "autodispatch_preferred_quote"
in quote.tags
.
Note: please make sure that Enable Autodispatch
is switched off so that the order is not autodispatched upon creation.
Path Parameters
Unique reference number for the order: either order.id (starts with "ord_") or order.externalId
"ord_1234567890"
Response
Expected output from autodispatch job endpoint.
curl --request POST \
--url https://api.sandbox.usenash.com/v1/order/{id}/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": []
}
}
}