Summary

Our customers will use the Zoom2u API at various stages of the delivery process.
Sometimes a full end-to-end solution is required, and sometimes only 1 or 2 calls will be required.
Below is a full end-to-end example of how multiple systems can talk to each other, and the status progression of a Zoom2u booking.

Each and every request made to our API will need to provide the appropriate 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.



Generate Quote

More information, and a complete breakdown, on how to generate quotes can be found here: Request a quote.

Endpoint

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

Request

{
    "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" : ""
    }
}

Response

Success:

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:

{
  "message": "The request is invalid.",
  "modelState": {
    "getQuoteRequest.Pickup.Suburb":   [ "The Suburb field is required." ],
    "getQuoteRequest.Pickup.Postcode": [ "The Postcode field is required." ],
  }
}


Create Booking

More information, and a complete breakdown, on how to create individual bookings can be found here: Create a booking.

Endpoint

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

Request

{
    "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" : ""
    }
}

Response

Success:

{
    "reference": "Z20180101999999",
    "price": 42.0,
    "tracking-link": "https://track.zoom2u.com/A1B2C3D4E",
    "trackingCode": "A1B2C3D4E"
}

If information is missing:

{
  "message": "The request is invalid.",
  "modelState": {
    "getQuoteRequest.Pickup.Suburb":   [ "The Suburb field is required." ],
    "getQuoteRequest.Pickup.Postcode": [ "The Postcode field is required." ],
  }
}


Get Status

More information, and a complete breakdown, on how to request the current status of a booking, head here: Get booking status.

Endpoint

MethodEndpointNotes
GEThttps://api.zoom2u.com/api/v1/delivery/status/{reference}{reference} is the Zoom2u booking reference that would have been provided in the HTTP Response when the booking was created.

Request

The body of the request should be left empty.

Response

{
    "reference": "Z20190101123456",
    "status": "Dropped Off",
    "statusChangeDateTime": "2018-11-12T10:29:16.867Z",
    "purchaseOrderNumber": "",
    "tracking-link": "https://deliveries.zoom2u.com/EMPQ28I5J",
    "proofOfDeliveryPhotoUrl": null,
    "courier": {
        "id": "1234",
        "name": "Test Courier",
        "phone": "02 1234 5678"
    }
}


Update booking information

More information, and a complete breakdown, on how to update the details of a booking, head here: Update booking information.

Endpoint

MethodEndpointNotes
POSThttps://api.zoom2u.com/api/v1/delivery/update/{reference}{reference} is the Zoom2u booking reference that would have been provided in the HTTP Response when the booking was created.
Requires delivery, pickup, and drop off information to be provided.

Request

{
    "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" : ""
    }
}

Response

Success:

{
    "reference": "Z20180101999999",
    "price": 42.0,
    "tracking-link": "https://track.zoom2u.com/A1B2C3D4E",
    "trackingCode": "A1B2C3D4E"
}

If information is missing:

{
  "message": "The request is invalid.",
  "modelState": {
    "getQuoteRequest.Pickup.Suburb":   [ "The Suburb field is required." ],
    "getQuoteRequest.Pickup.Postcode": [ "The Postcode field is required." ],
  }
}

If the booking cannot be cancelled because it is already in progress:

{
    "error-code": "TOOLATE",
    "message": "The booking cannot be modified after its status has passed On Route to Pickup"
}


Cancelling a booking

More information, and a complete breakdown, on how to cancel a booking, head here: Cancelling a booking.

Endpoint

MethodEndpointNotes
POSThttps://api.zoom2u.com/api/v1/delivery/cancel/{reference}{reference} is the Zoom2u booking reference that would have been provided in the HTTP Response when the booking was created.

Request

The body of the request should be left empty.

Response

Success:
A successful request will result in a HTTP 200 (OK) Status Return.
If the booking cannot be cancelled because it is already in progress:

{
    "error-code": "TOOLATE",
    "message": "The booking cannot be modified after its status has passed On Route to Pickup"
}