QikTruck API Documentation for Integration

  1. Get Vehicle Types - A GET request that retrieves the list of available vehicle types for moving various types of items. The response includes information about configurations, categories, and specific vehicles available.
  2. Create Quotation - A POST request that generates a quote for a specific moving job. The request body includes details about the job such as duration, truck type, delivery and collection locations, category of items, etc. The response provides the cost of the job.
  3. Accept Quotation - A POST request that signifies acceptance of a previously generated quote. The request body includes details such as the ID of the accepted quote and customer information. The response provides an order ID and vehicle ID for the job.
  4. Track Order - A POST request that allows the tracking of an order. The request body requires the order ID, and the response provides details about the order status, customer, driver, and other details.
  5. Cancel Order - A POST request that allows the cancellation of an existing order. The request body requires the order ID and the reason for cancellation. The response provides the order ID and status of the cancellation.
  6. Update Order Contacts - A POST request that updates contact information for a specific order. The request body includes the order ID, reason for the update, and new contact information. The response doesn't provide any specific information, as indicated by the empty array.
  7. Track All Orders - A POST request that retrieves the status of all orders. There is no request body required, and the response provides detailed information about all orders.

🔐 Authentication

Register on the QikTruck platform at https://qiktruck.co.za/developers

Obtain your API keys for the sandbox and production environment: XXXXXX-XVXVXVXVXVXVXVX

Start scheduling trips in your apps.

📐 Measurements

Trip Price is measured in South African Cents.

💰 Price Example: sellingPrice: 12500 means R125.00 or One hundred and twenty five Rands.

Trip Distance is measured in Meters.

📍 Distance example: tripDistance: 64500 means 64 Kilometers + 500 metres.

Trip Duration is measured in Seconds:

🕙 Time example: tripDuration: 300 means 5 minutes while 28 800 means 8 hours.

🚚 🚚 🚚

Get Vehicle Types

Method: GET

URL: {{url}}/vehicle-types

Description:

This endpoint returns a list of available vehicle configurations, categories, and detailed information about each vehicle type.

Headers:
  • Authorization: {{authorization}}
Request Body:
                            

ResponseStatus: OK (200)

Response Body:

[
    {
        "type": "fleet",
        "bodylabel": "open body",
        "displaytype": "open mini bakkie",
        "tonnes": 0,
        "loadgroup": "mini van",
        "tip": {
            "benefits": "driver, fuel and insurance included.",
            "drivertip": "minivan bakkie",
            "heading": "",
            "shortform": "",
            "examples": "furniture, packed goods, handheld-goods, materials, packages",
            "longform": "this vehicle is perfect for transporting a wide range of goods and materials. "
        },
        "categories": [
            "furniture",
            "equipment",
            "materials",
            "fresh-goods",
            "handheld-items"
        ]
    }
]
                            

Create Quotation

Method: POST

URL: {{url}}/truckype-quote

Description:

The request body should be a JSON object with the following properties:

  • trucktype (string): The type of truck required for the delivery.
  • collection (object): The collection point with lat and lng properties for latitude and longitude respectively.
  • delivery (object): The delivery point with lat and lng properties for latitude and longitude respectively.
  • category (string): The category of items to be delivered.
  • promocode (string): The promo code for the delivery.
  • runners (number): The number of runners required for the delivery.
  • floors (number): The number of floors involved in the delivery.
  • description (string): A description of the delivery

Headers:
  • Authorization: {{authorization}}
Request Body:
{
    "description": "Testing usage",
    "trucktype": "1.5tonopen",
    "delivery": {
        "lat": -25.7478676,
        "lng": 28.2292712
    },
    "collectiondate": "01-01-24",
    "collectiontime": "11:11",
    "email": "user@mail.com",
    "mobilenumber": "0xx36xx27x",
    "firstname": "Dineo ea1652b0",
    "lastname": "Assistant ",
    "collection": {
        "lat": -26.111657,
        "lng": 27.9903441
    },
    "category": "handheld-items",
    "promocode": "",
    "runners": 1,
    "floors": 0
}
                            

ResponseStatus: OK (200)

Response Body:

{
    "trucktype": "1.5tonopen",
    "tripdistance": 64508,
    "tripduration": 3022,
    "sellingprice": 295000,
    "quoteid": "8e28cac4-95b8-4433-807b-4deb7d59e9f0",
    "discount": 0
}
                            

Accept Quotation

Method: POST

URL: {{url}}/accept-quote

Description:

The request body should be a JSON object with the following properties:

  • acceptedquoteid (string): the id of the quotation accepted by the user.

Headers:
  • Authorization: {{authorization}}
Request Body:
{
    "acceptedquoteid": "8e28cac4-95b8-4433-807b-4deb7d59e9f0"
}
                            

ResponseStatus: OK (200)

Response Body:

{
    "quoteid": "8e28cac4-95b8-4433-807b-4deb7d59e9f0"
}
                            

Track Order / Quotation

Method: POST

URL: {{url}}/track-order

Description:

The request body should be a JSON object with the following properties:

  • orderid (string): The id of the trips accepted quotation or order

Headers:
  • Authorization: {{authorization}}
Request Body:
{
    "orderid": "171f420f-3bda-42a8-a1c2-8ed245044297"
}
                            

ResponseStatus: OK (200)

Response Body:

{
    "trips": [
        {
            "paymentid": null,
            "orderid": "171f420f-3bda-42a8-a1c2-8ed245044297",
            "gatewaypaymentid": null,
            "paymentstatus": null,
            "itemname": null,
            "itemdescription": null,
            "firstname": "null",
            "lastname": "null",
            "email": "sdsd@mail.com",
            "mobilenumber": "078xxxXXXX",
            "orderstatus": "in-review",
            "paymentkey": null,
            "signature": null,
            "amountgross": null,
            "amountfee": null,
            "amountnet": null,
            "dateadded": "2024-02-06T17:30:20.017Z",
            "paymenttype": null,
            "licenseplatenumber": "1.5tonopen-xx",
            "quoteid": "8e28cac4-95b8-4433-807b-4deb7d59e9f0",
            "trucktype": "1.5tonopen",
            "collectiondate": "01-01-24",
            "collectiontime": "11:11",
            "sellingprice": 295000,
            "collectionlat": -26.111657,
            "collectionlng": 27.9903441,
            "deliverylat": -25.7478676,
            "deliverylng": 28.2292712,
            "description": "testing usage>>>",
            "vehicleid": "0acdf065-f45a-48a8-9163-0a76e4882ea7",
            "category": "handheld-items",
            "promocode": "",
            "runners": 1,
            "floors": 0,
            "driverpaid": 0,
            "customquote": 0,
            "acceptedoffer": null,
            "customerid": "ba5bef7a-771d-480a-9807-43c7e2f74ba0",
            "customercontractid": null,
            "fleetstatus": "single",
            "returntrip": null,
            "goods": "[]",
            "servicefee": 0.2,
            "driverfirstname": "1.5tonopen1.5tonopen-27.475780000000004",
            "driverlastname": "Driver1.5tonopen-27.475780000000004",
            "drivermobilenumber": "060-27.475780000000004",
            "driverhomelat": -26.09099,
            "driverhomelng": 28.00275
        }
    ]
}
                            

Cancel Order

Method: POST

URL: {{url}}/cancel-order

Description:

The request body should be a JSON object with the following properties:

  • orderid (string): The id of the trips accepted quotation or order
  • reason: customer changed mind

Headers:
  • Authorization: {{authorization}}
Request Body:
{
    "orderid": "e956da61-d052-4e41-b440-bd0cf92b6c8b",
    "reason":"customer changed mind"
}
                            

ResponseStatus: Bad Request (400)

Response Body:

{
    "orderid": "e956da61-d052-4e41-b440-bd0cf92b6c8b",
    "status": "no update"
}
                            

Update Order Contacts

Method: POST

URL: {{url}}/update-order-contacts

Description:

The request body should be a JSON object with the following properties:

Headers:
  • Authorization: {{authorization}}
Request Body:
{
    "orderid": "30575d22-c068-4626-855c-97d44ecce445",
    "firstname": "ea1652b0",
    "lastname": "assistant",
    "email": "test@qruck.coz.a",
    "mobilenumber": "06613488888",
    "collectiondate": "2023-05-15",
    "collectiontime": "20:30",
    "description": "testing usage",
    "category": "handheld-items"
}
                            

ResponseStatus: OK (200)

Response Body:

true if you own this field
                            

Track All Orders

Method: GET

URL: {{url}}/track-orders

Description:

Track all orders from your profile

Headers:
  • Authorization: {{authorization}}
Request Body:
                            

ResponseStatus: OK (200)

Response Body:

[
    {
        "paymentid": null,
        "orderid": "8c31ebb0-5c8e-4455-a8ea-906f5df21b8f",
        "gatewaypaymentid": null,
        "paymentstatus": null,
        "itemname": null,
        "itemdescription": null,
        "firstname": "null",
        "lastname": "null",
        "email": "sdsd@mail.com",
        "mobilenumber": "078xxxXXXX",
        "orderstatus": "in-review",
        "paymentkey": null,
        "signature": null,
        "amountgross": null,
        "amountfee": null,
        "amountnet": null,
        "dateadded": "2024-02-06T17:34:35.518Z",
        "paymenttype": null,
        "licenseplatenumber": "1.5tonopen-xx",
        "quoteid": "8e28cac4-95b8-4433-807b-4deb7d59e9f0",
        "trucktype": "1.5tonopen",
        "collectiondate": "01-01-24",
        "collectiontime": "11:11",
        "sellingprice": 295000,
        "collectionlat": -26.111657,
        "collectionlng": 27.9903441,
        "deliverylat": -25.7478676,
        "deliverylng": 28.2292712,
        "description": "testing usage>>>",
        "vehicleid": "1e7c63af-5fa3-45e8-9751-74e6fcfde0a7",
        "category": "handheld-items",
        "promocode": "",
        "runners": 1,
        "floors": 0,
        "driverpaid": 0,
        "customquote": 0,
        "acceptedoffer": null,
        "customerid": "ba5bef7a-771d-480a-9807-43c7e2f74ba0",
        "customercontractid": null,
        "fleetstatus": "single",
        "returntrip": null,
        "goods": "[]",
        "servicefee": 0.2,
        "driverfirstname": "1.5tonopen1.5tonopen-27.475780000000004",
        "driverlastname": "Driver1.5tonopen-27.475780000000004",
        "drivermobilenumber": "060-27.475780000000004",
        "driverhomelat": -26.09099,
        "driverhomelng": 28.00275
    }
]