Below is all the information you need to use our API to request pricing for a booking across the metro areas of Sydney, Melbourne, Brisbane, Canberra, Adelaide, and Perth.

NOTE:

  • Interstate options are currently only available through the customer login portal here.
  • Quotes can only be generated for one parcel at a time. For deliveries with multiple parcel types, please use the customer login portal here.

 

Request

Endpoint

MethodEndpointNotes
POSThttps://api.zoom2u.com/api/v1/delivery/quoteRequires delivery, pickup, and drop off information to be provided.

Request Headers

{
  "Authorization" : "Bearer your-token-goes-here",
  "Content-Type"  : "application/json"
}

You will need to retrieve the bearer token by logging into your customer account and navigating to the “My Account” section.
There is a short guide here on how to access that information!

Note: This is a secret key and links to your account. For your own security, please do not share it or expose the key publicly.

Body

The body of a submission needs to include 3 main things;

  • Information about the service itself,
  • Pickup information,
  • Drop off information.

Do note that if you wish you see multiple quote options in the same response, leaving the deliverySpeed entry blank will return an array of all the available options at the same time.
An example will be attached below.

NameMandatoryTypeDescription
PurchaseOrderNumberNoStringUsed to add your own reference code, PO Number, or other reference number to the booking details!
ReadyDateTimeNoDateTimeUsed to specify when the package is ready for pick up.

Must be in UTC time, in ISO8601 format.
eg. YYYY-MM-DDTHH:MM:SSZ

Default if left blank is the current (local) system time.
DeliverySpeedNoStringUsed to specify the service level of the delivery; how quickly the delivery needs to be completed
- Same day
Only available if the ReadyDateTime is earlier than 12:30pm, and allows delivery any time before 8:30pm.
- 3 hour
Only available if the ReadyDateTime is earlier than 5:00pm, and requires the delivery is completed within 3hrs of the ReadyDateTime.
- VIP
The booking will be created with the highest priority and delivered as soon as possible.
Available all times of the day though no guarantee is made for deliveries ready after 9pm
VehicleTypeNoStringThe vehicle that is required to complete the delivery.
- Bike
Short deliveries, cheap, but small capacity.
- Car
Medium cost, medium capacity.
- Van
Can facilitate large deliveries.

Default if unspecified is Car
PackageTypeNoStringUsed to categorise the items being delivered.
- Documents
Can be delivered by Bikes, Cars, and Vans.
- Bag
Can be delivered by Bikes, Cars, and Vans.
- Box
Can be delivered by Cars and Vans only.
- Flowers
Can be delivered by Cars and Vans only, and only with the "3 hour" and "VIP" delivery speeds.
- Custom
All other deliveries

Default if unspecified is Custom and will generate a generic price.
PackageDescriptionNoStringA short, generic, notes field.
PickupNo*ObjectContains the pickup information (name, contact details, address, notes)

* If not provided, the default pickup location in the address book of the account is used as the pickup location.
The address of the account is used if neither of the above are provided, and an error occurs of none of the 3 are available at all.
DropoffAlwaysObjectContains the drop off location information (name, contact details, address, notes)

‘Pickup’ and ‘Dropoff’ location object details

NameTypeMandatoryDescription
ContactNameStringNoName of the contact at the pick up or delivery location.
It is best to add a business name if applicable too.
eg. "Jane Smith (ACME Company)"
EmailStringNoAn email address for the contact at the pick up or delivery location.
If a driver is unable to locate an address, they will be able to access this information to assist them.

This field can be blank if not applicable (eg. ""), but the field cannot be omitted.
PhoneStringNoA contact phone number for the pick up or delivery location.
If a driver is unable to locate an address, they will be able to access this information to assist them.

This field can be blank if not applicable (eg. ""), but the field cannot be omitted.
NotesStringNoFree text notes field relating to the pick up or drop off location specifically.
eg. "See security" or "Ring doorbell"
UnitNumberStringYes*Should be the unit number of an apartment, or the suite number of an office building.

This field can be removed if it is replaced by the FullAddress field.
See notes below for more information.
StreetNumberStringYes*Street number

This field can be removed if it is replaced by the FullAddress field.
See notes below for more information.
StreetStringYes*Name of the street

This field can be removed if it is replaced by the FullAddress field.
See notes below for more information.
SuburbStringYes*eg. "Sydney

This field can be removed if it is replaced by the FullAddress field.
See notes below for more information.
PostcodeStringYes*eg. "2000" if the postcode is "Sydney"

This field can be removed if it is replaced by the FullAddress field.
See notes below for more information.
StateStringYes*State in either short, 3 character, form or full form.
eg. "NSW" or "New South Wales"

This field can be removed if it is replaced by the FullAddress field.
See notes below for more information.
CountryStringYes*eg. Australia

This field can be removed if it is replaced by the FullAddress field.
See notes below for more information.
Example:
{
    "PurchaseOrderNumber":"ABCD1234",
    "PackageDescription": "1 box with some cakes",
    "ReadyDateTime": "2020-12-24T10:20:00.06Z",
    "VehicleType": "Car",
    "PackageType": "Box",
    
    "Pickup": {
        "ContactName": "John Smith",
        "Email": "test@test.com",
        "Phone": "0000 0000",
        "UnitNumber": "",
        "StreetNumber": "123",
        "Street": "Main St",
        "Suburb": "North Sydney",
        "State": "NSW",
        "Postcode": "2000",
        "Country": "Australia",
        "Notes" : ""
    },
    
    "Dropoff": {
        "ContactName": "Jane Smith",
        "Email": "test@test.com",
        "Phone": "0000 0000",
        "UnitNumber": "ACME Co.",
        "StreetNumber": "123",
        "Street": "Main St",
        "Suburb": "North Sydney",
        "State": "NSW",
        "Postcode": "2000",
        "Country": "Australia",
        "Notes" : ""
    }
}

Alternatively, for your convenience, you can choose to submit a full, concatenated, address instead of the individualised components.
When a full street address is submitted, the FullAddress field MUST include the following elements;

  • Street Number
  • Street Name
  • Suburb
  • Postcode

A booking cannot be completed if it is missing any of the above components.
Eg.

  • This is acceptable:
     "FullAddress": "123 Main St, North Sydney, 2060, NSW",
  • This is not acceptable:
     "FullAddress": "20 Main St, NSW",

The other components of the pickup or drop off location must still be submitted. The submission, in total, would then contain these 6 strings;

  • ContactName
  • Phone
  • Email
  • Notes
  • FullAddress
Example (With FullAddress address substitution):
{
    "PurchaseOrderNumber":"ABCD1234",
    "PackageDescription": "1 box with some cakes",
    "ReadyDateTime": "2020-12-24T10:20:00.06Z",
    "VehicleType": "Car",
    "PackageType": "Box",
    
    "Pickup": {
        "ContactName": "John Smith",
        "Email": "test@test.com",
        "Phone": "0000 0000",
        "UnitNumber": "ACME Company",
        "FullAddress": "610 Appleby St, Sydney, 2000, NSW",
        "Notes" : ""
    },
    
    "Dropoff": {
        "ContactName": "Jane Smith",
        "Email": "test@test.com",
        "Phone": "0000 0000",
        "UnitNumber": "Unit 609",
        "FullAddress": "123 Main St, North Sydney, NSW, 2000, NSW",
        "Notes" : ""
    }
}

 

Response

There are 5 possible responses when creating a booking;

  • Successful requests will return a confirmation of the delivery speed, a price, and a delivery time SLA.
  • If the deliveryspeed has been submitted as VIP, the response will additionally include two additional fields, on top of the regular data returned.
  • If the deliveryspeed has been submitted as "", the response will contain a collection of replies, with each deliveryspeed option listed with its associated price and delivery time SLA.
  • If mandatory information is missing from the request, the response will indicate which fields need to be filled in.
  • If there are issues unrelated to the submitted data

Success

NameTypeDescription
deliverySpeedStringConfirmation of the deliverySpeed
priceDecimalDollar value of the booking (local currency)
deliveredByDateTimeDate and time the booking will be completed by.
This information is conveyed to the customer and the recipient upon booking creation as well.
Note: Will be returned in UTC time, in ISO8601 format.
eg. YYYY-MM-DDTHH:MM:SSZ
earliestPickupEta*DateTimeDate and time the booking is expected to be collected, based on the average closest driver accepting the booking and driving directly to the collection location.
Note:
- Will be returned in UTC time, in ISO8601 format.
eg. YYYY-MM-DDTHH:MM:SSZ
* - Will only be returned if the deliverySpeed is set to VIP
earliestDropEta*DateTimeDate and time the booking is expected to be delivered, based on the average closest driver accepting the booking and driving directly to the collection location then directly to the delivery location.
Note:
- Will be returned in UTC time, in ISO8601 format.
eg. YYYY-MM-DDTHH:MM:SSZ
* - Will only be returned if the deliverySpeed is set to VIP
Example of deliveryspeed submitted as Same day or 3 hour:
{
    "deliverySpeed": "Same day",
    "price": 42.0,
    "deliveredBy": "2020-12-24T11:20:00Z",
}
Example of deliveryspeed submitted as VIP:
{
    "deliverySpeed": "VIP",
    "price": 42.0,
    "deliveredBy": "2020-12-24T11:20:00Z",
    "earliestPickupEta": "2020-12-24T11:20:00Z",
    "earliestDropEta": "2020-12-24T11:20:00Z"
}
Example of deliveryspeed submitted as "":
[
    {
        "deliverySpeed": "Same day",
        "price": 68,
        "deliveredBy": "2020-12-25T06:00:00Z"
    },
    {
        "deliverySpeed": "Same day",
        "price": 68,
        "deliveredBy": "2020-12-25T09:30:00Z"
    },
    {
        "deliverySpeed": "3 hour",
        "price": 86,
        "deliveredBy": "2020-12-25T01:00:00Z"
    },
    {
        "deliverySpeed": "VIP",
        "price": 159,
        "deliveredBy": "2020-12-24T11:20:00Z"
    }
]

 

If information is missing from the request

NameLocationTypeDescription
messageBodyStringShort error message
modelStateBodyObject / ArrayCollection of erroneous fields
getQuoteRequestmodelStateStringSpecific field that is missing.
Note: There can be multiple entries if multiple fields are missing.
Example:
{
  "message": "The request is invalid.",
  "modelState": {
    "getQuoteRequest.Pickup.Suburb":   [ "The Suburb field is required." ],
    "getQuoteRequest.Pickup.Postcode": [ "The Postcode field is required." ],
  }
}

 

Other issues

HTTP Status CodeMeaningDescriptionTroubleshooting
400Bad RequestThe server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing).- Check the request syntax!
401UnauthorisedThe request has not been applied because it lacks valid authentication credentials for the target resource.- Check the bearer token is valid and has been submitted correctly.
- Check the url is correct
403ForbiddenThe server understood the request but refuses to authorize it.
404Not foundThe origin server did not find a current representation for the target resource or is not willing to disclose that one exists.- Check the endpoint URL to make sure it is correct.
415Unsupported media TypeThe origin server is refusing to service the request because the payload is in a format not supported by this method on the target resource.- Check the Content-Type field has been correctly assigned
- Check the syntax of the body data is correct, and is of the same language as the Content-Type tag