Delivery made simple
Innovate and grow your business with our on-demand APIs

It's easy to integrate delivery into your ecommerce storefront or expand your on-demand offering! Begin by creating a new application in your account dashboard to retrieve your authentication token that grants access to all API resources as outlined on this document.

See our service coverage map to ensure you are within a supported geographic zone, or start your integration today and launch with us as we expand.

Dispatching a delivery vehicle will incur usage costs that are applied to your account. To request a detailed delivery quote before dispatching a delivery, use our Delivery Quote API.

RatePrice
Base$5 pickup
Express PriorityVariable, min of $10
Distance$1 per mile
Curbside Wait$1 per 10 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. You'll find your API key in your account dashboard, where you can create and configure your application.

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

Get a detailed delivery quote including estimated cost, pickup time, and arrival time, before dispatching the delivery vehicle . If your integration sends our API multiple requests with matching parameters, note that we may return cached responses for up to 5 minutes.

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 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. A valid quote_id is required to make a "express" delivery request.

POST/deliveries
PropertyDescription
originThe pickup address
destinationThe dropoff address
quote_id(optional) Execute a quote provided by a prior request
express(optional) Express 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
expressbooleanSpecifies if this is a express delivery
express_quote_idstringSpecifies a quote ID of from a previous express quote
whenISO TimestampDesired time when the vehicle should reach the pickup location
createdISO TimestampTime 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 }
Questions or feedback? Reach us at team@ollo.bike