Delivery for Developers
Uniquely grow your business with our on-demand logistics platform

It's easy to get started developing with Ollo! First, configure your app to retrieve your API key on our platform dashboard.

Dispatching a delivery vehicle will incur usage costs that are applied to your account. To estimate the price before dispatching a delivery, use the Delivery Quote API.

RatePrice
Base$10.00
Distance$1.00 / mile
Curbside Wait$1.00 / 15 minutes

Using our HTTP based API, you can make requests to our platform with a variety of languages. All HTTP requests must specify a bearer token in the Authorization header.

https://api.ollo.bike/v1

Lists all Deliveries for a particular account.

GET/deliveries
Example request
$ curl https://api.ollo.bike/v1/deliveries
Example response
[
	{
	  "id": {Delivery.id}",
	  "created": {Delivery.created},
	  ...{Delivery}
	},
	{
	  "id": "{Delivery.id}",
	  "created": "{Delivery.created}",
	  ...{Delivery}
	}
]

Get all known properties for a Delivery.

GET/deliveries
Example request
$ curl https://api.ollo.bike/v1/deliveries/{Delivery.id}
Example response
{
	"id": "{Delivery.id}",
	"status": "{DeliveryStatus}",
	"origin": "{Delivery.origin}",
	"destination": "{Delivery.destination}",
	"customer_name: "{Customer.name}",
	"customer_phone": "{Customer.phone}",
	"customer_email": "{Customer.email}",
	"created": "{Delivery.created}",
	"updated": "{Delivery.updated}",
	"price": "{Delivery.price}",
	"pickup_eta": "{Delivery.pickup_eta}",
	"dropoff_eta": "{Delivery.dropoff_eta}",
	"estimated_duration": "{Delivery.estimated_duration}"
}

Before creating a delivery, you may wish to request a price quote providing all the delivery parameters, which is then valid for 1 hour.

POST/deliveries/quote
PropertyDescription
originThe pickup address (must fall within service area)
destinationThe dropoff address
when(optional) A future timestamp when the pickup should occur
express(optional) Express priority vehicle dispatch
Example request
$ curl -X POST https://api.ollo.bike/v1/deliveries/quote
Example request body
{
	"origin": "{Delivery.origin}",
	"destination": "{Delivery.destination}",
	"express": "{Delivery.express}",
	"when": "{Delivery.when}"
}
Example response
{
	"id": "{Delivery.quote_id}",
	"price": "{Delivery.price}"
}

Create a new delivery with the parcel origin and destination addresses.

Ensure the specified origin and destination are within a supported service zone, otherwise a 403 Forbidden status is returned. When issuing a Delivery Quote request these parameters will be validated with a successful 2xx status.

Optionally, a quote_id can be provided within 1 hour of its creation. Providing an expired quote_id will result in a 400 Bad Request response.

POST/deliveries
PropertyDescription
originThe pickup address
destinationThe dropoff address
quote_id(optional) Execute a quote provided by a prior request
express(optional) Request a priority vehicle dispatch
when(optional) A future timestamp when the pickup should occur
customer_name(optional) Customer name to greet the customer
customer_email(optional) Customer email address to send updates
customer_phone(optional) Customer phone to send updates
Example request
$ curl -X POST https://api.ollo.bike/v1/deliveries
Example request body
{
	"quote_id": "{Delivery.quote_id}",
	"origin": "{Delivery.pickup}",
	"destination": "{Delivery.destination}",
	"customer_email": "{Delivery.customer_email}"
}
Example response
{
	"id": "{Delivery.id}",
	"created": "{Delivery.created}",
	"price": "{Delivery.price}",
	"pickup_eta": "{Delivery.pickup_eta}",
	"dropoff_eta": "{Delivery.dropoff_eta}",
	"estimated_duration": "{Delivery.estimated_duration}"
}

These are type definitions of objects for our API calls, events, and webhooks

PropertyType
idstringUnique delivery reference ID
quote_idstringUnique quote reference ID
expressbooleanIndicates if this is an express priority delivery
whenISO TimestampDesired time when the vehicle should reach the pickup location
createdISO TimestampEime which delivery was created
pickup_etaISO TimestampEstimated time which vehicle will reach specified pickup location
dropoff_etaISO TimestampEstimated time which vehicle will reach specified dropoff location
estimated_durationnumberEstimated duration of trip (in minutes)
customer_namestring(optional) Customer name for friendly greetings
customer_emailstring(optional) Customer email address to send updates
customer_phonestring(optional) Customer phone to send text updates
PropertyType
elapsednumberElapsed wait time
remainingnumberRemaining wait time
locationstringSpecifies a location [origin|pickup]
vehicle_namestringA friendly identifier prominently visible on the vehicle
codestringThe code to unlock the parcel compartment on the vehicle
messagestringAdditional details provided with the event
Value
pendingDelivery is created and awaiting vehicle assignment
assignedA vehicle has been assigned to fufill the delivery
pickup_en_routeVehicle is en-route to pickup location
arrived_originVehicle is waiting at pickup location
origin_exceptionAn delivery exception occurred at the origin location
dropoff_en_routeVehicle is en-route to destination location
arrived_destinationVehicle is waiting at destination location
parcel_deliveredVehicle is waiting at destination location
destination_exceptionAn delivery exception occurred at the destination location
completedThe delivery is finished at a final price has been billed

By integrating webhooks, your application can listen for our platform events to trigger additional reactions in real-time, such as communicating with a customer or updating internal records.

Webhook endpoints are configured in your application settings per environment. Although this is a current list of all the events we send, be advised we may add more events at any time, so you should not assume that only these types exist.

EventDescriptionBody
vehicle.pendingA delivery request was received and is now awaiting vehicle assignment{ id: Delivery.id }
vehicle.assignedA vehicle was assigned to your trip to carry your parcel{ id: Delivery.id, name: DeliveryUpdate.vehicle_name }
vehicle.dispatchedVehicle has departed en-route to the pickup location{ id: Delivery.id }
vehicle.arriving_originVehicle is approaching the pickup location within the provided ETA{ id: Delivery.id, eta: DeliveryUpdate.eta }
vehicle.arrived_originVehicle has arrived at the pickup location, unlock with the provided code{ id: Delivery.id, code: DeliveryUpdate.code }
vehicle.waiting_announcementVehicle has arrived as is actively waiting (up to 30 minutes){ id: Delivery.id, location: DeliveryUpdate.location, elapsed: DeliveryUpdate.elapsed, remaining: DeliveryUpdate.remaining }
vehicle.departed_originVehicle has departed the pickup location, now en-route to your destination{ id: Delivery.id }
vehicle.arriving_destinationVehicle is approaching the dropoff location within the provided ETA{ id: Delivery.id, eta: DeliveryUpdate.eta }
vehicle.arrived_destinationVehicle has arrived at the dropoff location, unlock with the provided code{ id: Delivery.id, code: DeliveryUpdate.code }
vehicle.parcel_deliveredVehicle has successfully delivered your parcel{ id: Delivery.id }
vehicle.delivery_completeThe delivery is now complete{ id: Delivery.id }
vehicle.delivery_failureThe delivery is unable to be completed; see details{ id: Delivery.id, message: DeliveryUpdate.message }
exception.location_unreachableA routing issue occurred and the vehicle is unable to reach the specified location{ id: Delivery.id, location: DeliveryUpdate.location, message: DeliveryUpdate.message }
exception.destination_unreachableA routing issue occurred and the vehicle is unable to reach the location{ id: Delivery.id, message: DeliveryUpdate.message }
exception.contact_unreachableVehicle was unable to reach a contact for delivery{ id: Delivery.id, location: DeliveryUpdate.location, message: DeliveryUpdate.message }
exception.delivery_endedThe delivery is unable to continue and the trip has ended; see details{ id: Delivery.id, message: DeliveryUpdate.message }
Have questions or feedback? Reach us at hello@ollo.bike or work@ollo.bike