Overview - The Uber Delivery APIs
¶ Build an Integration
Uber’s delivery APIs enable merchants to integrate their own apps & services with Uber Direct order delivery. After your application calls Uber’s Create Delivery endpoint, an Uber courier will be dispatched to pick up the order from the store and deliver it to the customer.
This developer website contains documentation for creating, managing, and monitoring deliveries using the Uber Direct platform. Additional features available on Uber Direct include:
- Flexible pickup and dropoff windows
- Barcode scanning for package verification
- Proof of Delivery: Signature, Photo, ID Check
- SMS message & customer order tracking
- Robo Courier test automation
Self sign-up for the Uber Direct development platform will be available soon. For now, an Uber Account Manager must provide you with access.
¶ Platform Overview
Our platform serves RESTful endpoints over HTTPS. All new integrations will use Uber’s Delivery-as-a-service (DaaS) APIs:
API | Method | api.uber.com/v1/customers/{customer_id}/ |
---|---|---|
Create a quote | POST | /delivery_quotes |
Create a delivery | POST | /deliveries |
List deliveries | GET | /deliveries |
Get delivery info | GET | /deliveries/{delivery_id} |
Update delivery | POST | /deliveries/{delivery_id} |
Cancel delivery | POST | /deliveries/{delivery_id}/cancel |
Data paylods for the POST requests above are encoded using JSON (application/json
). These APIs always return JSON, alongside an HTTP Status code.
Request and response details for all of our endpoints are defined in the DaaS API Reference.
¶ Authentication
DaaS API calls are authenticated using an OAuth token. The endpoint https://login.uber.com/oauth/v2/token
issues OAuth tokens with the client_credentials
grant type to your application. Your application will need to include this token in its request headers to authenticate each call.
Unlike the endpoints above, the Authentication endpoint accepts POST data as application/x-www-form-urlencoded
. Full information is in the Authentication doc, and a migration guide for existing partners still using Basic Authentication.
¶ Webhooks
Uber Direct uses webhooks to send real-time notification data about delivery events. Developers provide URLs via the Webhooks tab of the Dashboard that Uber can POST data to. JSON-encoded data is sent for two events:
-
delivery_status
, sent whenever the delivery’sstatus
field changes (pending
,pickup
,pickup_complete
,dropoff
,delivered
,canceled
,returned
). -
courier_update
, sent every 20 seconds as a courier changes locations. It includes an updated lat/long for the courier.
Security & authenticity of webhook messages is ensured by verifying a hash using a private key. Full details are in the Webhook Guide.
¶ Errors
Error responses from our APIs include details about what went wrong:
{
"kind": "error",
"code": "invalid_params",
"message": "The parameters of your request were invalid.",
"params": {
"dropoff_name": "Dropoff name is required.",
"dropoff_phone_number": "Dropoff phone number must be a valid phone number."
}
}
¶ Rate Limits
Our API returns 429 customer_limited
when you have submitted too many requests in too short of a timeframe. If you are getting rate-limited for intentional usage scenarios, please contact your Account Manager.
¶ Next steps
If you can log in to the Direct Dashboard (direct.uber.com), you are ready to go through the Getting Started guide, where you will retrieve your developer credentials and make an API call.