Nash uses HTTP response status codes to indicate the success or failure of your API requests. If your request fails, Nash returns an error using the appropriate status code.
In general, there are three status code ranges you can expect:
- 2xx success status codes confirm that your request worked as expected
- 4xx error status codes indicate an error because of the information provided (for example, a required parameter was missing)
- 5xx error status codes are rare and indicate an error with Nash’s end
Example of a failed request:
{
"error": {
"code": "MISSING_RESOURCE",
"message": "job 'job_123' does not exist"
},
"response_status": "404 NOT_FOUND",
"RequestID": "d97e3f4d-114d-4b77-ae47-9e10c5151424"
}
Please IncludeRequestID
in when communicating support@usenash.com so we can help you faster
Possible error codes
BAD_REQUEST
The request failed, often due to missing a required parameter or malformed input field
Example:
{
"error": {
"code": "BAD_REQUEST",
"message": "'pickupAddress' is a required property"
},
"response_status": "400 BAD_REQUEST",
"RequestID": "1-62057334-011d10e02c0f2ad839cf0a26"
}
Solution: include pickupAddress
field.
Another example:
{
"error": {
"code": "BAD_REQUEST",
"message": "quote_id qot_abc has expired"
},
"response_status": "400 BAD_REQUEST",
"RequestID": "1-62057334-41a43ef8a6d4f58a71e09ad2"
}
Solution: refresh quotes and try again refresh-quotes
UNAUTHORIZED
Invalid or missing API key.
Example:
{
"error": {
"code": "UNAUTHORIZED",
"message": "Authorization token is missing"
},
"response_status": "401 UNAUTHORIZED",
"RequestID": "1-62057941-67a549bb5faa77236a03ef8d"
}
FORBIDDEN
Provided API key does not have access to requested resource/action
Example:
{
"error": {
"code": "FORBIDDEN",
"message": "job_id 'job_Y8B5CWhvN9G8odcfAiqd29' is not owned by ''"
},
"response_status": "403 FORBIDDEN",
"RequestID": "1-620579a6-7ef612c414f3b59c1e74ffbb"
}
INVALID_ADDRESS
Provided address in either pickupsAddress
or dropoffAddress
is missing, invalid or couldn’t be parsed.
Example:
{
"error": {
"code": "INVALID_ADDRESS",
"message": "Failed to parse provided address 'bad_address'"
},
"response_status": "400 BAD_REQUEST",
"RequestID": "1-620572c5-1c8927c37edbd37173140be3"
}
INVALID_PHONE_NUMBER
Provided phone-number in either pickupPhoneNumber
or dropoffPhoneNumber
is missing, invalid or couldn’t be parsed.
Provided phone-number are expected to be in E.164 format.
Example:
{
"error": {
"code": "INVALID_PHONE_NUMBER",
"message": "Provided US phone-number '+1111111' is invalid"
},
"response_status": "400 BAD_REQUEST",
"RequestID": "1-62057a15-2d3444806b950c514da305be"
}
RESOURCE_ALREADY_EXISTS
provided externalIdentifier
has been already used for another job
Example:
{
"error": {
"code": "RESOURCE_ALREADY_EXISTS",
"message": "Provided external identifier: '123' was used in a previous job"
},
"response_status": "400 BAD_REQUEST",
"RequestID": "1-62057a2b-17e8db5600cd5da143e75a95"
}
MISSING_RESOURCE
job/task/options_group cannot be found
Example:
{
"error": {
"code": "MISSING_RESOURCE",
"message": "job 'job_123' does not exist"
},
"response_status": "404 NOT_FOUND",
"RequestID": "1-62057a4a-1833f34338a256b23d8fe9de"
}
INVALID_TIME_CONSTRAINT
Provided packagePickupStartTime
, packagePickupEndTime
, packageDropoffStartTime
, packageDropoffEndTime
are invalid (e.g. dropoff time window is before pickup time window)
Example:
{
"error": {
"code": "INVALID_TIME_CONSTRAINT",
"message": "Pickup time cannot be in the past"
},
"response_status": "400 BAD_REQUEST",
"RequestID": "1-62057a5f-206feee76c4da88d0d599fb5"
}
DISALLOWED_OPERATION
An API operation was attempted but was disallowed, e.g., updating a job after completion.
{
"error": {
"code": "DISALLOWED_OPERATION",
"message": "Job updates are not allowed when at least 1 task is completed. Task statuses are ['completed']"
},
"response_status":"400 BAD_REQUEST",
"RequestID": "1-62057a5f-206feee76c4da88d0d593455"
}
AUTODISPATCH_FAILURE
Auto-dispatch failed due to no valid quotes.
{
"error": {
"code": "AUTODISPATCH_FAILURE",
"message": "job_123: Failed auto-dispatch (preferred_order): No provider satisfied requirements: No valid quotes found, error_code=NO_VALID_QUOTES, error_code=AUTODISPATCH_FAILURE"
},
"response_status": "400 BAD_REQUEST",
"RequestID": "e5dc2885-606c-4de2-84cb-6da6b495eda1"
}
INTERNAL_SERVER_ERROR
Something went wrong on Nash’s end. (These are rare.)
Example:
{
"error": {
"code": "INTERNAL_SERVER_ERROR",
"message": "The server encountered an error and was unable to complete the request"
},
"response_status": "500 INTERNAL_SERVER_ERROR",
"RequestID": "e5dc2885-606c-4de2-84cb-6da6b495eda1"
}
List of possible HTTP response statuses
response_status | Description |
---|
200 OK | Everything worked as expected. |
400 BAD_REQUEST | The request was unacceptable, often due to missing a required parameter. See error.code for more details |
401 UNAUTHORIZED | Invalid or missing API key. |
403 FORBIDDEN | The API key doesn’t have permissions to perform the request. |
404 NOT_FOUND | The requested resource doesn’t exist. |
429 TOO_MANY_REQUESTS | Too many requests hit the API too quickly. |
500 INTERNAL_SERVER_ERROR | Something went wrong on Nash’s end. |