Our API

Welcome to Zippykind's API documentation. Browse through our API documentation to see examples and explanations of our API. The Zippykind API is a RESTful web service for developers to programmatically interact with Zippykind's data.

Every POST or GET request to the Zippykind API is handled over HTTPS and is secure. We recommend using Postman for testing your API calls. Please direct any questions or concerns about the Zippykind API to contact@zippykind.com.

The base URL for the Zippykind API is https://zippykind.com/api/v2.

Getting an API key

In order to get an API key, you must sign up for an account by going to https://zippykind.com. Once you have created an account, you will need to click on the API Keys menu item and from there you will be able to generate an API key. The API key you create will allow you to make API calls to our API and will authenticate you as a user. Please keep your API key private. In order to make our API more secure, we only show you your API key once. If you lost your API key, you can generate a new one which will replace your old key.

Your API key should look similar to this 2wUizN2ghJYGQddGkMx2cx0LhorGWCq8Hupe5b0D, we will use this API key throughout the Zippykind API documentation as an example.

Authentication

You can test the authorization of your API call by using the endpoint

GET
https://zippykind.com/api/test/

Quickstart

You can use our quickstart example code to quickly test our API. If your API request was successful, you should see an example similar to the example response we provided.

$ curl -X GET \
  https://zippykind.com/api/test/ \
  -H 'apikey: 2wUizN2ghJYGQddGkMx2cx0LhorGWCq8Hupe5b0D' \

Example response

{
  "code": 200,
  "msg": "Success: API is valid.",
  "status": "The property you are requesting has been found.",
  "details": ""
}

Create A Customer

Creates a new customer account that delivery tickets can be assigned to. When you create a new delivery ticket a new customer account is created so that customer account delivery history can be viewed later. You can create a customer account without creating a delivery ticket. So lets say you create a customer's account during the first step of your website checkout process, if the customer abandons the cart, you will still have the customer's contact information. You can then finish the delivery request through our dispatch software without needing to ask the customer for their basic information like name, email, phone etc.

Property Description
customer_name (required) The customer's name
ext_customer_number (optional) Link the customer's account to a different platform
phone (optional) Phone number of customer
email (required) Email address of customer
address (optional) Address of the customer
account_lat (optional) The latitude of the customer's address
account_lng (optional) The longitude of the customer's address
date_created (optional) Date the account was created, it will default to today's date
rewards_level (optional) The Zippykind rewards level (Bronze, Silver, Gold)
spent_this_month (optional) Total amount of money the customer has spent in the last 30 days
POST
https://zippykind.com/api/v2/

Example request

curl -X POST \
  https://zippykind.com/api/v2/ \
  -H 'apikey: 2wUizN2ghJYGQddGkMx2cx0LhorGWCq8Hupe5b0D' \
  -F scope=newTicket \
  -F trans_type=delivery \
  -F delivery_date=03/15/2017 \
  -F 'customer_name=John Doe' \
  -F contact_number=480-123-4567 \
  -F email_address=johndoe@gmail.com \
  -F 'ticket_description=The gate code is 8228.  There is a big dog in the yard, be careful.' \
  -F 'delivery_address=12345 broadway st. Phoenix, AZ 85251'
  -F 'account_lat=38.2526'
  -F 'account_lng=-115.5845652'

Example request body

{
  "customer_name": "John Doe",
  "ext_customer_number": "",
  "phone": "480-123-4567",
  "email": "johndoe@gmail.com",
  "address": "12345 broadway st. Phoenix, AZ 85251",
  "date_created": "2017-05-02T14:15:51-05:00"
}

Example response

{
  "code": 200,
  "msg": "Success: API is valid.",
  "status": "The property you are requesting has been found.",
  "details": {
    "customer_name": "John Doe",
    "ext_customer_number": "",
    "phone": "480-123-4567",
    "email": "johndoe@gmail.com",
    "address": "12345 broadway st. Phoenix, AZ 85251",
    "date_created": "2017-05-02T14:15:51-05:00"
  }
}

Create A Delivery

Deliveries in Zippykind are referred to as tickets. Create a delivery ticket that can be automatically pushed to one of your delivery drivers. If a driver is not specified, the ticket will be marked as unassigned and will follow the settings in your account. If your Zippykind account settings are set to automatically assign the ticket to a driver, our system will attempt to assign the ticket. Once a delivery ticket has been created, it can be canceled by sending a cancelTicket request.

Property Type Description
scope String (required) Dictates the type of request
order_source String (optional) Source of the request
trans_type String (required) Options are delivery or pickup
ticket_description String (optional) Notes for the driver
team_id Number (optional) ID of the team the driver is assigned to
driver_id Number (optional) ID of the driver the ticket is assigned to
contact_number String (optional) Phone number of the customer
email_address String (optional) Email address of the customer
customer_name String (required) The customer's name
delivery_address String (required) The destination address of either the pickup or delivery
ticket_lat String (optional) The latitude of the delivery destination
ticket_lng String (optional) The longitude of the delivery destination
product_pickup_name String (optional) The name of the location where the product is being picked up
product_pickup_contact_number String (optional) Phone number of the location where the product is being picked up
product_pickup_address String (optional) Address to where the product will be picked up
product_pickup_lat String (optional) The latitude of the product pickup location
product_pickup_lng String (optional) The longitude of the product pickup location
delivery_date String("hh:mm") (optional) Date and time of the delivery
total_tax Number (optional) The total tax
promo_code Number (optional) The promo code applied to the order
tax_percent Number (optional) The percent of the total amount that should be taxed
total Number (optional) Total amount owed
leave_it Number (optional, 0 or 1) Value 1 indicates driver should leave package at destination
delivery_fee Number (optional) The delivery fee
ext_order_id String (optional) Reference an order ID from a different platform
ext_customer_number String (optional) Reference a customer ID from a different platform
ext_invoice_number String (optional) Reference an invoice ID from a different platform
account_id String (optional) The ID of a Zippykind account
ext_invoice_number String (optional) Reference an invoice ID from a different platform
ext_product_id String (optional) Reference the product to an external platform prodoct's ID
order_items Array (optional) Items included with the order
product_name String (optional) Name of the product
product_id String (optional) Product ID of the order item managed with Zippykind
quantity String (optional) Quantity of the order item
sub_total String (optional) Sub total of the order item
tax String (optional) Tax of the order item
weight String (optional) Weight of the order item
POST
https://zippykind.com/api/v2/

Example request

curl -X POST \
  https://zippykind.com/api/v2/ \
  -H 'apikey: 2wUizN2ghJYGQddGkMx2cx0LhorGWCq8Hupe5b0D' \
  -F scope=newTicket \
  -F order_source=ecommerce_website \
  -F trans_type=delivery \
  -F 'ticket_description=The gate code is 8228.  There is a big dog in the yard, be careful.' \
  -F team_id=1025 \
  -F driver_id=63526 \
  -F contact_number=480-123-4567 \
  -F email_address=johndoe@gmail.com \
  -F 'customer_name=John Doe' \
  -F 'delivery_address=12345 broadway st. Phoenix, AZ 85251' \
  -F delivery_date=03/15/2017 \
  -F total_tax=3.81 \
  -F tax_percent=8.5 \
  -F total=48.97 \
  -F delivery_fee=20 \
  -F 'order_items=[{ "ext_product_id" : "4567", "product_name" : "Donzen Red Roses", "product_id" : "8566", "quantity" : "1", "sub_total" : "29.99", "tax" : "2.54", "weight" : "1 pound"},{"ext_product_id" : "4568", "product_name" : "Kettle Korn", "product_id" : "8567", "quantity" : "3", "sub_total" : "14.99", "tax" : "1.27", "weight" : "3 pounds"}]'

Example request body

{
    "ticket_details": {
      "ticket_id": "101441",
      "ext_order_id": "12345",
      "ext_customer_number": "9876",
      "ext_invoice_number": "INV5263",
      "account_id": "100328",
      "customer_id": "36",
      "ticket_description": "The gate code is 8228.  There is a big dog in the yard, be careful.",
      "trans_type": "delivery",
      "contact_number": "480-123-4567",
      "email_address": "johndoe@gmail.com",
      "customer_name": "John Doe",
      "delivery_date": "03/15/2017",
      "delivery_address": "12345 broadway st. Phoenix, AZ 85251",
      "team_id": "1025",
      "driver_id": "63526",
      "ticket_lat": "33.4084199",
      "ticket_lng": "-112.2041058",
      "date_created": "2017-05-02T23:44:25-05:00",
      "ip_address": "111.22.333.44",
      "product_pickup_name": "2nd Store Location",
      "product_pickup_contact_number": "480-555-6688",
      "product_pickup_address": "653 Shea blvd Scottsdale, AZ 85265",
      "product_pickup_lat": "33.4084199",
      "product_pickup_lng": "-112.2041058",
      "order_id": "3090",
      "promo_code": "NEWYRS17",
      "total": "48.97",
      "leave_it": "1"
    },
    "order_details": {
      "order_id": "3090",
      "order_source": "ecommerce_website",
      "ext_order_id": "12345",
      "ext_customer_number": "9876",
      "account_id": "100328",
      "tax": "3.81",
      "promo_code": "NEWYRS17",
      "tax_percent": "8.5",
      "delivery_fee": "20",
      "total": "48.97",
      "customer_id": "36"
    },
    "order_items": [{ "ext_product_id" : "4567", "product_name" : "Donzen Red Roses", "product_id" : "8566", "quantity" : "1", "sub_total" : "29.99", "tax" : "2.54", "weight" : "1 pound"},{"ext_product_id" : "4568", "product_name" : "Kettle Korn", "product_id" : "8567", "quantity" : "3", "sub_total" : "14.99", "tax" : "1.27", "weight" : "3 pounds"}]
}

Example response

{
  "code": 200,
  "msg": "Success: API is valid.",
  "status": "The property you are requesting has been found.",
  "details": {
      "ticket_details": {
        "ticket_id": "101441",
        "ext_order_id": "12345",
        "ext_customer_number": "9876",
        "ext_invoice_number": "INV5263",
        "account_id": "100328",
        "customer_id": "36",
        "ticket_description": "The gate code is 8228.  There is a big dog in the yard, be careful.",
        "trans_type": "delivery",
        "contact_number": "480-123-4567",
        "email_address": "johndoe@gmail.com",
        "customer_name": "John Doe",
        "delivery_date": "03/15/2017",
        "delivery_address": "12345 broadway st. Phoenix, AZ 85251",
        "team_id": "1025",
        "driver_id": "63526",
        "ticket_lat": "33.4084199",
        "ticket_lng": "-112.2041058",
        "status": "assigned",
        "date_created": "2017-05-02T23:44:25-05:00",
        "ip_address": "111.22.333.44",
        "product_pickup_name": "2nd Store Location",
        "product_pickup_contact_number": "480-555-6688",
        "product_pickup_address": "653 Shea blvd Scottsdale, AZ 85265",
        "product_pickup_lat": "33.4084199",
        "product_pickup_lng": "-112.2041058",
        "order_id": "3090",
        "promo_code": "NEWYRS17",
        "total": "48.97",
        "leave_it": "1"
      },
      "order_details": {
        "order_id": "3090",
        "order_source": "ecommerce_website",
        "ext_order_id": "12345",
        "ext_customer_number": "9876",
        "account_id": "100328",
        "tax": "3.81",
        "promo_code": "NEWYRS17",
        "tax_percent": "8.5",
        "delivery_fee": "20",
        "total": "48.97"
      },
      "order_items": [{ "ext_product_id" : "4567", "product_name" : "Donzen Red Roses", "product_id" : "8566", "quantity" : "1", "sub_total" : "29.99", "tax" : "2.54", "weight" : "1 pound"},{"ext_product_id" : "4568", "product_name" : "Kettle Korn", "product_id" : "8567", "quantity" : "3", "sub_total" : "14.99", "tax" : "1.27", "weight" : "3 pounds"}]
  }
}

Update A Delivery

Update a delivery using the ticket_id and scope updateTicket parameters. Updates will happen in real time and will notify the driver assigned to the ticket of the change.

Property Type Description
ticket_id Number (required) ID of the ticket that you want to update
scope String (required) Dictates the type of request
status String (optional) Dictates the status of the delivery (accepted, started, arrived etc)
trans_type String (required) Options are delivery or pickup
ticket_description String (optional) Notes for the driver
team_id Number (optional) ID of the team the driver is assigned to
driver_id Number (optional) ID of the driver the ticket is assigned to
contact_number String (optional) Phone number of the customer
email_address String (optional) Email address of the customer
customer_name String (required) The customer's name
delivery_address String (required) The destination address of either the pickup or delivery
ticket_lat String (optional) The latitude of the delivery destination
ticket_lng String (optional) The longitude of the delivery destination
product_pickup_name String (optional) The name of the location where the product is being picked up
product_pickup_contact_number String (optional) Phone number of the location where the product is being picked up
product_pickup_address String (optional) Address to where the product will be picked up
product_pickup_lat String (optional) The latitude of the product pickup location
product_pickup_lng String (optional) The longitude of the product pickup location
delivery_date String("hh:mm") (optional) Date and time of the delivery
leave_it Number (optional, 0 or 1) Value 1 indicates driver should leave package at destination
ext_order_id String (optional) Reference an order ID from a different platform
ext_customer_number String (optional) Reference a customer ID from a different platform
ext_invoice_number String (optional) Reference an invoice ID from a different platform
POST
https://zippykind.com/api/v2/

Example request

curl -X POST \
  https://zippykind.com/api/v2 \
  -H 'apikey: 2wUizN2ghJYGQddGkMx2cx0LhorGWCq8Hupe5b0D' \
  -F scope=updateTicket \
  -F status=arrived \
  -F ticket_id=107632 \
  -F ext_order_id=222222 \
  -F ext_invoice_number=333333 \
  -F ext_customer_number=444444 \
  -F 'ticket_description=The gate code is 2929.' \
  -F trans_type=delivery \
  -F contact_number=14804777931 \
  -F email_address=john@zippykind.com \
  -F 'customer_name=John Doe' \
  -F 'delivery_date=2017-08-11 00:00:02' \
  -F 'delivery_address=1200 Broadway st. Scottsdale AZ 85251' \
  -F team_id=6001 \
  -F driver_id=6002 \
  -F ticket_lat=33.1111 \
  -F ticket_lng=-112.0000 \
  -F 'product_pickup_name=2nd Store' \
  -F product_pickup_contact_number=14805556666 \
  -F 'product_pickup_address=1300 Broadway st. SCottsdale AZ 85251' \
  -F product_pickup_lat=32.22222 \
  -F product_pickup_lng=-111.0555 \
  -F leave_it=1

Example request body

{
    "scope": "updateTicket",
    "ticket_id": "101441",
    "ext_order_id": "12345",
    "ext_customer_number": "9876",
    "ext_invoice_number": "INV5263",
    "ticket_description": "The gate code is 2929.",
    "trans_type": "delivery",
    "contact_number": "14801234567",
    "email_address": "johndoe@gmail.com",
    "customer_name": "John Doe",
    "delivery_date": "2017-08-11 00:00:02",
    "delivery_address": "12345 broadway st. Phoenix, AZ 85251",
    "team_id": "1025",
    "driver_id": "63526",
    "ticket_lat": "33.4084199",
    "ticket_lng": "-112.2041058",
    "ip_address": "111.22.333.44",
    "product_pickup_name": "2nd Store Location",
    "product_pickup_contact_number": "14805556688",
    "product_pickup_address": "653 Shea blvd Scottsdale, AZ 85265",
    "product_pickup_lat": "33.4084199",
    "product_pickup_lng": "-112.2041058",
    "leave_it": "1"
}

Example response

{
    "code": 200,
    "msg": "Success: API is valid.",
    "status": "The property you are requesting has been found.",
    "details": ""
}

Track A Delivery

Pass any delivery ID to this endpoint to get the details of the delivery. For the example request we will use ticket ID 101417. We will use demo data in the request response. The most common reason for tracking a single delivery is to determine the status. The status property options are: unassigned, assigned, acknowledged, failed, arrived, successful.

When a ticket is assigned to a driver, the driver can deny or accept the ticket. If the ticket is denied, the ticket status will change to unassigned.

If a ticket is created and is not assigned, the status will be considered unassigned and will follow the settings in your account. If the ticket is assigned, the ticket has been assigned to a team and a driver, you can't assign a ticket to a driver without first assigning it to a team. If the ticket status is acknoledged, the driver has accepted the ticket but has not yet started the delivery. If the ticket status is failed, the driver arrived to the destination but was unable to deliver the package. If the ticket status has a status of arrived, the driver has arrived to the delivery destination and usually means the driver is in the process of getting a signature, taking a photo or handing off the delivery package. If the ticket status is successful, the driver has completed all steps in the delivery process and has successfully delivered the package.

Property Type Description
scope String (required) Dictates the type of request
ticket_id String (required) The ID of the ticket you want to request data for
POST
https://zippykind.com/api/v2/

Example request

curl -X POST \
  https://zippykind.com/api/v2/ \
  -H 'apikey: 2wUizN2ghJYGQddGkMx2cx0LhorGWCq8Hupe5b0D' \
  -F scope=trackTicket \
  -F ticket_id=101417

Example response

{
  "code": 200,
  "msg": "Success: API is valid.",
  "status": "The property you are requesting has been found.",
  "details": {
    "ticket_details": {
      "ticket_id": "101417",
      "ext_order_id": "12345",
      "ext_customer_number": "6958",
      "ext_invoice_number": "5263",
      "account_id": "100292",
      "ticket_description": "Gate code is 9292.",
      "trans_type": "delivery",
      "contact_number": "+14804777931",
      "email_address": "johndoe@gmail.com",
      "customer_name": "John Doe",
      "delivery_date": "2017-05-02 16:00:00",
      "delivery_address": "658 West Camelback Road, Phoenix, AZ, United States",
      "team_id": "1052",
      "driver_id": "17653",
      "ticket_lat": "33.509636",
      "ticket_lng": "-112.081177",
      "status": "assigned",
      "date_created": "2017-05-02 14:12:54",
      "ip_address": "11.111.11.111",
      "product_pickup_name": "2nd Store",
      "product_pickup_contact_number": "+14804777931",
      "product_pickup_address": "9301 East Shea Boulevard, Scottsdale, AZ, United States",
      "product_pickup_lat": "33.5809114",
      "product_pickup_lng": "-111.8811427",
      "leave_it": "1"
    },
    "order_details": {
      "order_id": "285",
      "order_source": "zippykind_dispatch",
      "ext_order_id": "",
      "ext_customer_number": "",
      "account_id": "100292",
      "tax": "5.52",
      "promo_code": "PROMO",
      "tax_percent": "8.5",
      "delivery_fee": "20.00",
      "total": "90.50"
    },
    "order_items": [
      {
        "order_item_id": "342",
        "ext_product_id": "",
        "order_id": "285",
        "account_id": "100292",
        "product_id": "36",
        "quantity": "1",
        "weight": "2 pounds",
        "product_name": "Kettle Korn",
        "tax": "0.00",
        "sub_total": "5.00",
        "date_created": "2017-05-02 16:12:54"
      },
      {
        "order_item_id": "343",
        "ext_product_id": "",
        "order_id": "285",
        "account_id": "100292",
        "product_id": "35",
        "quantity": "2",
        "weight": "1 pound",
        "product_name": "Roses",
        "tax": "0.00",
        "sub_total": "29.99",
        "date_created": "2017-05-02 16:12:54"
      }
    ]
  }
}

View Delivery History

Pass any delivery ID to this endpoint to get the history details of the delivery. For the example request we will use ticket ID 101148. We will use demo data in the request response. Most of the actions fetched from the delivery history are usually submitted by the driver and are referred to in this documentation as milestons; however, dispatch operators do have the ability to update the delivery history.

Property Type Description
scope String (required) Dictates the type of request
ticket_id String (required) The ID of the ticket you are requesting data for
status String (optional) The type of action submitted by the delivery driver
remarks String (optional) The action described and formatted by Zippykind
driver_id String (optional) The ID of the driver assigned to the delivery
account_id String (optional) The account ID of the customer the delivery is assigned to
driver_location_lat String (optional) The latitude of the driver's location when the mileston was submitted
driver_location_lng String (optional) The longitude of the driver's location when the mileston was submitted
date_created String("hh:mm") (optional) The date the milestone was submitted
notes String (optional) The notes submitted by the driver
received_by String (optional) The person who signed for the package
customer_signature String (optional) The signature of the delivery recipient
photo_url String (optional) The URL of the a photo that has been submitted with the delivery ticket
POST
https://zippykind.com/api/v2/

Example request

curl -X POST \
  https://zippykind.com/api/v2/ \
  -H 'apikey: 2wUizN2ghJYGQddGkMx2cx0LhorGWCq8Hupe5b0D' \
  -F scope=ticketHistory \
  -F ticket_id=101148

Example response

{
  "code": 200,
  "msg": "Success: API is valid.",
  "status": "The property you are requesting has been found.",
  "details": {
    "ticket_history": [
      {
        "status": "acknowledged",
        "remarks": "John Jones accepted the ticket",
        "driver_id": "15635",
        "account_id": "2365",
        "driver_location_lat": "32.4836882",
        "driver_location_lng": "-116.9206706",
        "date_created": "2017-04-24 21:34:12",
        "ip_address": "11.111.1.11",
        "notes": "",
        "received_by": ""
      },
      {
        "status": "started",
        "remarks": "John Jones started this ticket",
        "driver_id": "15635",
        "account_id": "2365",
        "driver_location_lat": "32.8545863",
        "driver_location_lng": "-116.2456",
        "date_created": "2017-04-24 21:34:20",
        "ip_address": "11.111.1.11",
        "notes": "",
        "received_by": ""
      },
      {
        "status": "arrived",
        "remarks": "John Jones reached the destination",
        "driver_id": "15635",
        "account_id": "2365",
        "driver_location_lat": "32.4579993",
        "driver_location_lng": "-116.2365",
        "date_created": "2017-04-24 21:34:42",
        "ip_address": "11.111.1.11",
        "notes": "",
        "received_by": ""
      },
      {
        "status": "sign",
        "remarks": "John Jones added a signature",
        "driver_id": "15635",
        "account_id": "2365",
        "driver_location_lat": "32.7456",
        "driver_location_lng": "-116.126",
        "date_created": "2017-04-24 21:35:03",
        "ip_address": "11.111.1.11",
        "notes": "",
        "received_by": "Charles Jennings",
        "customer_signature": "https://zippykind.com/upload/signature_101148-17080643690.png"
      },
      {
        "status": "notes",
        "remarks": "John Jones added a note",
        "driver_id": "15635",
        "account_id": "2365",
        "driver_location_lat": "32.9856",
        "driver_location_lng": "-116.563215",
        "date_created": "2017-04-24 21:35:20",
        "ip_address": "11.111.1.11",
        "notes": "Left package at door",
        "received_by": ""
      },
      {
        "status": "photo",
        "remarks": "John Jones added a photo",
        "driver_id": "15635",
        "account_id": "2365",
        "driver_location_lat": "32.0126",
        "driver_location_lng": "-116.7456",
        "date_created": "2017-04-24 21:35:37",
        "ip_address": "11.111.1.11",
        "notes": "",
        "received_by": "",
        "photo_url": "https://zippykind.com/upload/photo/1493094937198833.jpg"
      },
      {
        "status": "successful",
        "remarks": "John Jones Completed the ticket successfully",
        "driver_id": "15635",
        "account_id": "2365",
        "driver_location_lat": "33.4859",
        "driver_location_lng": "-111.2635",
        "date_created": "2017-04-24 21:35:45",
        "ip_address": "11.111.1.11",
        "notes": "",
        "received_by": ""
      }
    ]
  }
}

Get Driver Details

Pass any driver's ID to this endpoint to get the driver's full details including current latitude and longitude position.

Property Type Description
scope String (required) Dictates the type of request
driver_id String (required) The ID of the driver
team_id String (optional) The ID of the team the driver is assigned to
on_duty String (optional, 0 or 1) Value 1 indicates the driver is on duty
first_name String (optional) First name of the driver
last_name String (optional) Last name of the driver
email String (optional) Email of the driver
phone String (optional) Phone number of the driver
username String (optional) Username of the driver
transport_type String (optional) Transportation type of the driver
transport_description String (optional) Description of the driver's transportation
license_plate String (optional) License plate of the driver
driver_color Hex Code (optional) The color associated with the driver's dashboard markers
color String (optional) Color of the driver's transportation vehicle
status String (optional) Options are pending, active, blocked, suspended
username String (optional) Username of the driver
date_created String("hh:mm") (optional) Date the driver's account was created
last_login String("hh:mm") (optional) Date the driver last logged into the Zippykind app
location_lat Number (optional) The latitude of the driver's current location
location_lng Number (optional) The longitude of the driver's current location
ip_address Number (optional) The IP address of the driver's device
device_platform String (optional) Options are IOS and Android
app_version String (optional) The version of the app the driver is using
POST
https://zippykind.com/api/v2/

Example request

curl -X POST \
  https://zippykind.com/api/v2/ \
  -H 'apikey: 2wUizN2ghJYGQddGkMx2cx0LhorGWCq8Hupe5b0D' \
  -F scope=driverDetails \
  -F driver_id=18256

Example request body

{
  "scope": "driverDetails",
  "driver_id": "18256"
}

Example response

{
  "code": 200,
  "msg": "Success: API is valid.",
  "status": "The property you are requesting has been found.",
  "details": {
    "driver_details": {
      "driver_id": "18256",
      "team_id": "8635",
      "on_duty": "1",
      "first_name": "John",
      "last_name": "Doe",
      "email": "johndoe@gmail.com",
      "phone": "+14804777931",
      "username": "johndoe",
      "transport_type": "truck",
      "transport_description": "Ford F-150",
      "license_plate": "TAD-582",
      "driver_color": "FF2B75",
      "color": "White",
      "status": "active",
      "date_created": "2017-04-29 18:11:01",
      "last_login": "2017-05-3 14:10:23",
      "location_lat": "33.856982",
      "location_lng": "-112.674596",
      "ip_address": "11.111.1.11",
      "device_id": "782sdf5as6sfd23ad3ds2dsf3dsfd2ad0gjtfgs2",
      "device_platform": "Android",
      "app_version": "1.1.6"
    }
  }
}

List Drivers

Retrieves a list all active driver's along with each driver's profile information. The list will be displayed in ascending order based on each driver's first name and will be displayed in a json array. The property keys and types are the same as the driver details table above.

POST
https://zippykind.com/api/v2/

Example request

curl -X POST \
  https://zippykind.com/api/v2/ \
  -H 'apikey: 2wUizN2ghJYGQddGkMx2cx0LhorGWCq8Hupe5b0D' \
  -F scope=listDrivers

Example response

{
  "code": 200,
  "msg": "Success: API is valid.",
  "status": "The property you are requesting has been found.",
  "details": {
    "drivers_list": [
      {
        "driver_id": "175632",
        "team_id": "10245",
        "on_duty": "1",
        "first_name": "John",
        "last_name": "Doe",
        "email": "johndoe@gmail.com",
        "phone": "+14804777931",
        "username": "donald",
        "transport_type": "Truck",
        "transport_description": "Ford F-150",
        "license_plate": "DKSID",
        "driver_color": "4DFFC6",
        "color": "black",
        "status": "active",
        "date_created": "2017-04-29 17:57:17",
        "last_login": "2017-05-02 13:19:35",
        "location_lat": "30.596623",
        "location_lng": "-116.42635",
        "ip_address": "111.1.11.1",
        "device_id": "akdlsldkskd82kls8dsd9f9ssdksldf82ll82633523adksld36942125829310safievamzl",
        "device_platform": "Android",
        "app_version": "1.1.7"
      },
      {
        "driver_id": "1489632",
        "team_id": "56326",
        "on_duty": "0",
        "first_name": "Jane",
        "last_name": "Doe",
        "email": "janedoe@gmail.com",
        "phone": "+14804777931",
        "username": "mikeh",
        "transport_type": "bicycle",
        "transport_description": "Beach cruiser",
        "license_plate": "",
        "driver_color": "FF2B75",
        "color": "Green",
        "status": "active",
        "date_created": "2017-04-29 18:11:01",
        "last_login": "0000-00-00 00:00:00",
        "location_lat": "29.26354",
        "location_lng": "-107.2335",
        "ip_address": "111.22.333.44",
        "device_id": "adklsdf8292lalda;fkanz.cdfqoadlsaf81012ad6fa3z2xv56afd5saf901kss",
        "device_platform": "IOS",
        "app_version": "1.1.6"
      }
    ]
  }
}

Webhooks

Http WebHooks make it possible for your application to be notified when various events happen in Zippykind.

Let's say you want your application to receive a notification when a driver arrives to the delivery destination, this is possible using WebHooks. All WebHooks can be registered through the API Keys page in your Zippykind account.

The JSON data that will POST to your WebHook URL will have the following parameters along with the data relative to the event type:

Property Description
event_name The name of the event (i.e. ticket_started)
date_stamp Format YYYY-MM-DD HH:MM:SS
handshake Handshake key to authenticate the POST call to your WebHook

Validation
All URLs are validated through a simple JSON response with the provided zippy_token.

Example response

{
  "details": {
    "zippy_token": "u5X3wkVB4OergZwAgISR"
  }
}

Simply add the generated zippy_token to your JSON response nested inside the details object. You only need to do this once. When you click on the green Add Webhook button, Zippykind will compare the generated zippy_token shown to you on the WebHooks page with the zippy_token provided by your JSON response, if the zippy_token matches, the WebHook is created. After the WebHook is created, you can remove the zippy_token from your JSON response, it will no longer be needed during future calls to your WebHook URL. If you are using Zapier, you don't need to add WebHooks through Zippykind. WebHooks through Zapier are handled through Zapier.

Handshake
You can provide a unique handshake key with your WebHook to authenticate the request to your application.

Testing
We recommend you use requestb.in to test your WebHooks. Requestb.in is whitelisted through Zippykind, so you don't need to verify the server's identity using the zippy_token.

Events are triggered when a driver or dispatch operator changes the status of a ticket

Event Description
ticket_cancelled Ticket was cancelled while en route.
ticket_failed Package was not able to be delivered after the driver arrived.
ticket_declined Driver declined to accept the ticket.
ticket_assigned Ticket has been assigned to a driver.
ticket_acknowledged Driver accepted the ticket.
ticket_started Driver is now en route and has started to deliver the package.
ticket_arrived Driver has arrived to the destination.
ticket_successful Driver successfully delivered the package.
photo_added Photo has been added to the ticket.
signature_added Signature has been added to the ticket.
notes_added Driver has added a note to the ticket.

Example response

{
  "event_name":"ticket_started",
  "date_stamp":"2017-07-29 13:52:03",
  "data": {
      "ticket_id":"100101",
      "status":"started",
      "team_id":"1",
      "driver_id":"1",
      "ticket_lat":"38.5269665",
      "ticket_lng":"-110.625446",
      "product_pickup_lat":"",
      "product_pickup_lng":"",
      "driver_location_lat":"37.378596",
      "driver_location_lng":"-111.245695"
    },
  "hand_shake_key":"KLDSK8292kYsll02"
}

API Endpoints

Below you will find technical information related to the Zippykind API.

Endpoint Description
https://zippykind.com/api/v2/ Used for all API requests.
https://zippykind.com/api/test/ Test your API key

Throttling

We allow you to perform up to 5 API requests per second. Exceeding the request limit will result in a 429 error. Continued overuse of your API key may result in a temporary ban. Please contact us if you need your request rate to be increased.

Definitions

Property Description
Team Drivers are assigned to teams in an effort to organize drivers
Driver The person who is actually delivering the package
Ticket Each time you create a new pickup or dropoff delivery, you are creating what we call a delivery ticket
Map Zones Maps zones are organized into two categories, delivery and driver. When you create a map zone, you must assign it to a driver or to a delivery territory on the map. You can use map zones to determine driver territories, delivery travel fees and driver geofencing,

HTTP Error Codes

Error Code Description
200 Success: API is valid.
400 Error: API has been provided but is not formatted correctly or is incorrect.
401 Error: API key is missing.
402 Error: You must make the request using a SSL.
403 Error: Forbidden request.
429 Error: Too many requests. You have exceeded your 5 requests per second limit.
500 Error: Something went wrong, please send email to contact@zippykind.com.

Zippykind Status

Status Description
ok The property you are requesting has been found.
AccountSuspended The account your are requesting is currently suspended.
DeliveryNotFound We can't find the delivery you are looking for.
Unauthorized You are not authorized to request details about the delivery.
DeletedTicket The delivery ticket you requested has been deleted.
Show examples in:
Zippykind API Documentation