Note: This guide is meant to be accompanied with Deliverr's API spec:
https://api.deliverr.com/documentation/v1/spec#tag/Parcels
To access any of the parcels endpoints, you will need to have authenticated with the api/parcels
as a scope in the Authorization process. Note: during the Authentication process you will be redirected to a consent screen that looks like this:
Here, you should sign in using the email address that you used to sign up for the SellerPortal (where you got your sellerID). If you need any assistance with this, your Account Executive should be able to help you find this information.
A guide to the Authorization process can be found here:
https://support.deliverr.com/hc/en-us/articles/6857029846807-Deliverr-API-Guide-Authentication
The Parcels API allows you to do the following:
- Create a quote for a parcel without purchasing a label
- Create a parcel and purchase a label
- Get information for a previously created parcel
- Get a tracking summary for a previously created parcel
- Get a tracking url for a previously created parcel
For specific API reference for each of the endpoints, please visit this link.
-
Get Quote
POST parcels/v1/parcel/quote
- To create a new quote, make the following request to the Parcels API’s Get Quote endpoint:
curl --location --request POST '<https://api.deliverr.com/parcels/v1/parcel/quote>' \\ --header 'Authorization: Bearer {valid_access_token}' \\ --header 'Content-Type: application/json' \\ --data-raw '{ "serviceLevel": "Standard", "injectionLocation": "LAX", "shipToAddress": { "name": "Happy Customer", "street1": "110 Sutter Street", "street2": "9th Floor", "city": "San Francisco", "state": "CA", "zip": "94104-4026", "country": "US" }, "dimensions": { "length": 2, "width": 8, "height": 5, "lengthUnit": "in", "weight": 1, "weightUnit": "lb" } }'
- This will give you a response like:
{ "price": 0, "serviceLevel": "Standard", "billedWeightLbs": 0, "dimensions": { "length": 12, "width": 3, "height": 5, "weight": 3, "lengthUnit": "in", "weightUnit": "kg" }, "warnings": [ "string" ] }
-
Create Parcel
POST parcels/v1/parcel
- To create a new parcel, make the following request to the Parcels API’s Create Parcel endpoint:
curl --location --request POST '<https://api.deliverr.com/parcels/v1/parcel>' \\ --header 'Authorization: Bearer {valid_access_token}' \\ --header 'Content-Type: application/json' \\ --data-raw '{ "customerParcelId": "123456", "serviceLevel": "Standard", "injectionLocation": "LAX", "shipToAddress": { "name": "Happy Customer", "street1": "110 Sutter Street", "street2": "9th Floor", "city": "San Francisco", "state": "CA", "zip": "94104-4026", "country": "US" }, "pickupDateTime": "2022-06-18T19:00:00Z", "dimensions": { "length": 2, "width": 8, "height": 5, "lengthUnit": "in", "weight": 1, "weightUnit": "lb" }, "labelFormat":"PNG" }'
- This will give you a response like the following:
- Note: soon the shippingLabelUrl will be returned as a signed url that will expire after 1 week and can have a length of up to 2000 characters. Please plan for these details when retrieving the shippingLabelUrl.
{ "parcelId": "string", "customerParcelId": "string", "status": "OK", "errors": "string", "shippingLabelUrl": "string", "packageTrackingUrl": "string", "price": 0, "serviceLevel": "Standard", "customerCustomField": "string" }
-
Get Parcel
GET parcels/v1/parcel/{parcelId}
- To get information for an existing parcel, make the following request to the Parcels API’s Get Parcel endpoint:
curl --location --request GET '<https://api.deliverr.com/parcels/v1/parcel/{parcelId}>' \\ --header 'Authorization: Bearer {valid_access_token}'
- This will give you a response like:
- Note: soon the shippingLabelUrl will be returned as a signed url that will expire after 1 week and can have a length of up to 2000 characters. Please plan for these details when retrieving the shippingLabelUrl.
{ "parcelId": "string", "customerReferenceId": "string", "status": "string", "errors": "string", "errorMessage": "string", "shippingLabelUrl": "string", "packageTrackingUrl": "string", "price": 0, "serviceLevel": "string", "customerCustomField": "string", "carrierCode": "string", "trackingCode": "string", "billedWeightLbs": 0, "dimensions": { "length": 12, "width": 3, "height": 5, "weight": 3, "lengthUnit": "in", "weightUnit": "kg" }, "expiredTrackingData": [ {} ] }
-
Fetch Tracking Information
GET parcels/v1/parcel/{parcelId}/tracking
- To get tracking information for an existing parcel, make the following request to the Parcels API’s Fetch Tracking Information endpoint:
curl --location --request GET '<https://api.deliverr.com/parcels/v1/parcel/{parcelId}/tracking>' \\ --header 'Authorization: Bearer {valid_access_token}'
- This will give you a response like:
- Note: soon the shippingLabelUrl will be returned as a signed url that will expire after 1 week and can have a length of up to 2000 characters. Please plan for these details when retrieving the shippingLabelUrl.
{ "parcelId": "string", "customerReferenceId": "string", "customerCustomField": "string", "status": "string", "errors": "string", "errorMessage": "string", "packageTrackingUrl": "string", "shippingLabelUrl": "string", "trackingCode": "string", "carrierCode": "string", "eventTimestamps": { "labelTime": "2019-08-24T14:15:22Z", "arrivalScanTime": "2019-08-24T14:15:22Z", "facilityTime": "2019-08-24T14:15:22Z", "attemptedDeliveryTime": "2019-08-24T14:15:22Z", "deliveryTime": "2019-08-24T14:15:22Z", "estimatedDeliveryTime": "2019-08-24T14:15:22Z", "lastTrackingEventTime": "2019-08-24T14:15:22Z", "lastTrackingIngestionTime": "2019-08-24T14:15:22Z" }, "expiredTrackingData": [ {} ] }
-
Fetch Tracking Url
GET parcels/v1/trackingUrl/{parcelId}
- To get the tracking url for an existing parcel, make the following request to the Parcels API’s Fetch Tracking Url endpoint:
curl --location --request GET '<https://api.deliverr.com/parcels/v1/trackingUrl/{parcelId}>' \\ --header 'Authorization: Bearer {valid_access_token}'
- This will give you a response containing the tracking url.