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:

  1. delivery_status, sent whenever the delivery’s status field changes (pending, pickup, pickup_complete, dropoff, delivered, canceled, returned).

  2. 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.

© 2023 Uber Technologies Inc.