DoorDash Drive API

The DoorDash Drive API enables businesses to request on-demand deliveries fulfilled by DoorDash's fleet of Dashers. It provides endpoints for checking delivery serviceability, getting delivery quotes, creating and managing deliveries, and tracking delivery status in real time. The API uses JWT-based authentication and is designed for businesses that want to offer delivery from their own ordering experience while leveraging DoorDash's logistics network.

OpenAPI Specification

doordash-drive-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: DoorDash Drive API
  description: >-
    The DoorDash Drive API enables businesses to request on-demand deliveries
    fulfilled by DoorDash's fleet of Dashers. It provides endpoints for
    checking delivery serviceability, getting delivery quotes, creating and
    managing deliveries, and tracking delivery status in real time. The API
    uses JWT-based authentication and is designed for businesses that want to
    offer delivery from their own ordering experience while leveraging
    DoorDash's logistics network.
  version: '2.0'
  contact:
    name: DoorDash Developer Support
    url: https://developer.doordash.com/en-US/
  termsOfService: https://www.doordash.com/terms/
externalDocs:
  description: DoorDash Drive API Documentation
  url: https://developer.doordash.com/en-US/docs/drive/overview/about_drive/
servers:
  - url: https://openapi.doordash.com/drive/v2
    description: Production Server
tags:
  - name: Addresses
    description: >-
      Get address auto-completion suggestions based on partial input.
  - name: Businesses
    description: >-
      Manage business entities that represent legal entities or owners on the
      DoorDash Drive platform.
  - name: Deliveries
    description: >-
      Create, retrieve, update, and cancel on-demand deliveries fulfilled by
      DoorDash Dashers.
  - name: Quotes
    description: >-
      Validate delivery serviceability and get pricing quotes before creating
      a delivery.
  - name: Stores
    description: >-
      Manage store locations that represent individual pickup points associated
      with a business.
security:
  - bearerAuth: []
paths:
  /quotes:
    post:
      operationId: createDeliveryQuote
      summary: Create a delivery quote
      description: >-
        Creates a delivery quote to confirm that a delivery is serviceable by
        DoorDash and returns the estimated fee and delivery time. Quotes are
        valid for 5 minutes after creation.
      tags:
        - Quotes
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QuoteRequest'
      responses:
        '200':
          description: Delivery quote created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Quote'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /quotes/{external_delivery_id}/accept:
    post:
      operationId: acceptDeliveryQuote
      summary: Accept a delivery quote
      description: >-
        Accepts a previously created delivery quote and initiates the delivery
        process. The quote must be accepted within 5 minutes of being created.
        You can optionally edit the tip amount when accepting.
      tags:
        - Quotes
      parameters:
        - $ref: '#/components/parameters/ExternalDeliveryId'
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AcceptQuoteRequest'
      responses:
        '200':
          description: Quote accepted and delivery initiated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Delivery'
        '400':
          description: Quote expired or invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Quote not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /deliveries:
    post:
      operationId: createDelivery
      summary: Create a delivery
      description: >-
        Creates a new delivery request directly without first creating a quote.
        DoorDash will assign a Dasher to fulfill the delivery. This is an
        alternative to the quote-then-accept workflow.
      tags:
        - Deliveries
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeliveryRequest'
      responses:
        '200':
          description: Delivery created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Delivery'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /deliveries/{external_delivery_id}:
    get:
      operationId: getDelivery
      summary: Get delivery details
      description: >-
        Retrieves the current details and status of a delivery using the
        external delivery ID provided during creation.
      tags:
        - Deliveries
      parameters:
        - $ref: '#/components/parameters/ExternalDeliveryId'
      responses:
        '200':
          description: Delivery details retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Delivery'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Delivery not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    patch:
      operationId: updateDelivery
      summary: Update a delivery
      description: >-
        Updates specified attributes of an existing delivery. Not all fields
        can be updated after creation, and updates may be restricted based on
        the current delivery status.
      tags:
        - Deliveries
      parameters:
        - $ref: '#/components/parameters/ExternalDeliveryId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeliveryUpdateRequest'
      responses:
        '200':
          description: Delivery updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Delivery'
        '400':
          description: Invalid update parameters or delivery state
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Delivery not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /deliveries/{external_delivery_id}/cancel:
    put:
      operationId: cancelDelivery
      summary: Cancel a delivery
      description: >-
        Cancels an active delivery. Deliveries cannot be cancelled after a
        Dasher has been assigned. Cancellation may incur fees depending on
        the delivery state.
      tags:
        - Deliveries
      parameters:
        - $ref: '#/components/parameters/ExternalDeliveryId'
      responses:
        '200':
          description: Delivery cancelled successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Delivery'
        '400':
          description: Delivery cannot be cancelled in current state
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Delivery not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /businesses:
    get:
      operationId: listBusinesses
      summary: List businesses
      description: >-
        Lists all businesses owned by the authenticated developer account.
      tags:
        - Businesses
      responses:
        '200':
          description: List of businesses retrieved successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Business'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    post:
      operationId: createBusiness
      summary: Create a business
      description: >-
        Creates a new Drive business entity representing a legal entity or
        owner on the DoorDash platform.
      tags:
        - Businesses
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BusinessRequest'
      responses:
        '200':
          description: Business created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Business'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /businesses/{external_business_id}:
    get:
      operationId: getBusiness
      summary: Get business details
      description: >-
        Retrieves the details of a specific business by its external business ID.
      tags:
        - Businesses
      parameters:
        - $ref: '#/components/parameters/ExternalBusinessId'
      responses:
        '200':
          description: Business details retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Business'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Business not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    patch:
      operationId: updateBusiness
      summary: Update a business
      description: >-
        Updates the attributes of an existing business entity.
      tags:
        - Businesses
      parameters:
        - $ref: '#/components/parameters/ExternalBusinessId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BusinessRequest'
      responses:
        '200':
          description: Business updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Business'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Business not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /businesses/{external_business_id}/stores:
    post:
      operationId: createStore
      summary: Create a store
      description: >-
        Creates a new store location associated with a business. Stores
        represent individual pickup points that make deliveries.
      tags:
        - Stores
      parameters:
        - $ref: '#/components/parameters/ExternalBusinessId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StoreRequest'
      responses:
        '200':
          description: Store created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Store'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Business not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /businesses/{external_business_id}/stores/{external_store_id}:
    get:
      operationId: getStore
      summary: Get store details
      description: >-
        Retrieves the details of a specific store by its external store ID
        within a given business.
      tags:
        - Stores
      parameters:
        - $ref: '#/components/parameters/ExternalBusinessId'
        - $ref: '#/components/parameters/ExternalStoreId'
      responses:
        '200':
          description: Store details retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Store'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Store or business not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    patch:
      operationId: updateStore
      summary: Update a store
      description: >-
        Updates the attributes of an existing store location.
      tags:
        - Stores
      parameters:
        - $ref: '#/components/parameters/ExternalBusinessId'
        - $ref: '#/components/parameters/ExternalStoreId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StoreRequest'
      responses:
        '200':
          description: Store updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Store'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Store or business not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /addresses:
    get:
      operationId: getAddressSuggestions
      summary: Get address suggestions
      description: >-
        Returns address auto-completion suggestions based on partial address
        input and optional location coordinates.
      tags:
        - Addresses
      parameters:
        - name: query
          in: query
          required: true
          description: >-
            Partial address string to get suggestions for.
          schema:
            type: string
        - name: latitude
          in: query
          required: false
          description: >-
            Latitude coordinate to bias results toward a location.
          schema:
            type: number
            format: double
        - name: longitude
          in: query
          required: false
          description: >-
            Longitude coordinate to bias results toward a location.
          schema:
            type: number
            format: double
      responses:
        '200':
          description: Address suggestions retrieved successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AddressSuggestion'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /checkout_audit_signal:
    post:
      operationId: sendCheckoutAuditSignal
      summary: Send checkout audit signal
      description: >-
        Sends a checkout audit signal to DoorDash for tracking and analytics
        purposes related to the delivery checkout flow.
      tags:
        - Deliveries
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CheckoutAuditSignal'
      responses:
        '200':
          description: Checkout audit signal accepted
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        JWT token signed with your DoorDash developer credentials. The token
        must include developer_id, key_id, and aud claims.
  parameters:
    ExternalDeliveryId:
      name: external_delivery_id
      in: path
      required: true
      description: >-
        The unique external delivery ID provided when creating the delivery
        or quote.
      schema:
        type: string
    ExternalBusinessId:
      name: external_business_id
      in: path
      required: true
      description: >-
        The unique external identifier for the business.
      schema:
        type: string
    ExternalStoreId:
      name: external_store_id
      in: path
      required: true
      description: >-
        The unique external identifier for the store.
      schema:
        type: string
  schemas:
    QuoteRequest:
      type: object
      required:
        - external_delivery_id
        - pickup_address
        - dropoff_address
      properties:
        external_delivery_id:
          type: string
          description: >-
            A unique identifier for this delivery, provided by the caller.
        pickup_address:
          type: string
          description: >-
            The full street address for the pickup location.
        pickup_business_name:
          type: string
          description: >-
            The business name at the pickup location.
        pickup_phone_number:
          type: string
          description: >-
            The phone number at the pickup location.
        dropoff_address:
          type: string
          description: >-
            The full street address for the dropoff location.
        dropoff_business_name:
          type: string
          description: >-
            The business name at the dropoff location.
        dropoff_phone_number:
          type: string
          description: >-
            The phone number at the dropoff location.
        order_value:
          type: integer
          description: >-
            The total value of the order in cents.
        pickup_time:
          type: string
          format: date-time
          description: >-
            The requested pickup time in UTC ISO-8601 format.
        dropoff_time:
          type: string
          format: date-time
          description: >-
            The requested dropoff time in UTC ISO-8601 format.
    Quote:
      type: object
      properties:
        external_delivery_id:
          type: string
          description: >-
            The unique external delivery ID for this quote.
        fee:
          type: integer
          description: >-
            The delivery fee in cents.
        currency:
          type: string
          description: >-
            The currency code for the fee amount.
        delivery_time:
          type: string
          format: date-time
          description: >-
            The estimated delivery time in UTC ISO-8601 format.
        pickup_time:
          type: string
          format: date-time
          description: >-
            The estimated pickup time in UTC ISO-8601 format.
        expires_at:
          type: string
          format: date-time
          description: >-
            The time at which this quote expires, typically 5 minutes after
            creation.
    AcceptQuoteRequest:
      type: object
      properties:
        tip:
          type: integer
          description: >-
            Optional tip amount in cents to include with the delivery.
    DeliveryRequest:
      type: object
      required:
        - external_delivery_id
        - pickup_address
        - dropoff_address
      properties:
        external_delivery_id:
          type: string
          description: >-
            A unique identifier for this delivery, provided by the caller.
        pickup_address:
          type: string
          description: >-
            The full street address for the pickup location.
        pickup_business_name:
          type: string
          description: >-
            The business name at the pickup location.
        pickup_phone_number:
          type: string
          description: >-
            The phone number at the pickup location.
        pickup_instructions:
          type: string
          description: >-
            Special instructions for the Dasher at the pickup location.
        pickup_reference_tag:
          type: string
          description: >-
            A reference tag for the pickup, such as an order number.
        dropoff_address:
          type: string
          description: >-
            The full street address for the dropoff location.
        dropoff_business_name:
          type: string
          description: >-
            The business name at the dropoff location.
        dropoff_phone_number:
          type: string
          description: >-
            The phone number of the recipient at the dropoff location.
        dropoff_instructions:
          type: string
          description: >-
            Special instructions for the Dasher at the dropoff location.
        dropoff_contact_given_name:
          type: string
          description: >-
            The first name of the dropoff contact.
        dropoff_contact_family_name:
          type: string
          description: >-
            The last name of the dropoff contact.
        order_value:
          type: integer
          description: >-
            The total value of the order in cents.
        tip:
          type: integer
          description: >-
            The tip amount in cents.
        pickup_time:
          type: string
          format: date-time
          description: >-
            The requested pickup time in UTC ISO-8601 format.
        dropoff_time:
          type: string
          format: date-time
          description: >-
            The requested dropoff time in UTC ISO-8601 format.
        contains_alcohol:
          type: boolean
          description: >-
            Whether the order contains alcohol, which requires age verification.
        force_batch_id:
          type: string
          description: >-
            An identifier to group deliveries together for batch assignment
            to the same Dasher.
        external_business_id:
          type: string
          description: >-
            The external business ID to associate with this delivery.
        external_store_id:
          type: string
          description: >-
            The external store ID to associate with this delivery.
        items:
          type: array
          description: >-
            List of items included in the delivery.
          items:
            $ref: '#/components/schemas/DeliveryItem'
    DeliveryUpdateRequest:
      type: object
      properties:
        tip:
          type: integer
          description: >-
            Updated tip amount in cents.
        dropoff_instructions:
          type: string
          description: >-
            Updated dropoff instructions for the Dasher.
        dropoff_phone_number:
          type: string
          description: >-
            Updated phone number for the dropoff contact.
    Delivery:
      type: object
      properties:
        external_delivery_id:
          type: string
          description: >-
            The unique external delivery ID.
        delivery_status:
          type: string
          description: >-
            The current status of the delivery.
          enum:
            - created
            - confirmed
            - enroute_to_pickup
            - arrived_at_pickup
            - picked_up
            - enroute_to_dropoff
            - arrived_at_dropoff
            - delivered
            - cancelled
            - returned
        fee:
          type: integer
          description: >-
            The delivery fee in cents.
        currency:
          type: string
          description: >-
            The currency code for monetary amounts.
        tip:
          type: integer
          description: >-
            The tip amount in cents.
        order_value:
          type: integer
          description: >-
            The total value of the order in cents.
        pickup_address:
          type: string
          description: >-
            The full street address for the pickup location.
        pickup_business_name:
          type: string
          description: >-
            The business name at the pickup location.
        pickup_phone_number:
          type: string
          description: >-
            The phone number at the pickup location.
        pickup_instructions:
          type: string
          description: >-
            Special instructions for pickup.
        pickup_time_estimated:
          type: string
          format: date-time
          description: >-
            The estimated pickup time in UTC ISO-8601 format.
        pickup_time_actual:
          type: string
          format: date-time
          description: >-
            The actual pickup time in UTC ISO-8601 format.
        dropoff_address:
          type: string
          description: >-
            The full street address for the dropoff location.
        dropoff_business_name:
          type: string
          description: >-
            The business name at the dropoff location.
        dropoff_phone_number:
          type: string
          description: >-
            The phone number at the dropoff location.
        dropoff_instructions:
          type: string
          description: >-
            Special instructions for dropoff.
        dropoff_time_estimated:
          type: string
          format: date-time
          description: >-
            The estimated dropoff time in UTC ISO-8601 format.
        dropoff_time_actual:
          type: string
          format: date-time
          description: >-
            The actual dropoff time in UTC ISO-8601 format.
        dropoff_contact_given_name:
          type: string
          description: >-
            The first name of the dropoff contact.
        dropoff_contact_family_name:
          type: string
          description: >-
            The last name of the dropoff contact.
        dasher_id:
          type: integer
          description: >-
            The unique identifier for the assigned Dasher.
        dasher_name:
          type: string
          description: >-
            The first name of the assigned Dasher.
        dasher_phone_number:
          type: string
          description: >-
            The phone number of the assigned Dasher.
        dasher_location:
          $ref: '#/components/schemas/Location'
        tracking_url:
          type: string
          format: uri
          description: >-
            A URL for tracking the delivery in real time.
        contains_alcohol:
          type: boolean
          description: >-
            Whether the order contains alcohol.
        force_batch_id:
          type: string
          description: >-
            The batch identifier for grouped deliveries.
        created_at:
          type: string
          format: date-time
          description: >-
            The timestamp when the delivery was created.
        updated_at:
          type: string
          format: date-time
          description: >-
            The timestamp when the delivery was last updated.
    DeliveryItem:
      type: object
      properties:
        name:
          type: string
          description: >-
            The name of the item.
        description:
          type: string
          description: >-
            A description of the item.
        quantity:
          type: integer
          description: >-
            The quantity of this item.
          minimum: 1
        external_id:
          type: string
          description: >-
            An external identifier for the item.
        price:
          type: integer
          description: >-
            The price of the item in cents.
    Location:
      type: object
      properties:
        lat:
          type: number
          format: double
          description: >-
            Latitude coordinate.
        lng:
          type: number
          format: double
          description: >-
            Longitude coordinate.
    Business:
      type: object
      properties:
        external_business_id:
          type: string
          description: >-
            The unique external identifier for the business.
        name:
          type: string
          description: >-
            The name of the business.
        description:
          type: string
          description: >-
            A description of the business.
    BusinessRequest:
      type: object
      required:
        - external_business_id
        - name
      properties:
        external_business_id:
          type: string
          description: >-
            A unique external identifier for the business.
        name:
          type: string
          description: >-
            The name of the business.
        description:
          type: string
          description: >-
            A description of the business.
    Store:
      type: object
      properties:
        external_business_id:
          type: string
          description: >-
            The external business ID this store belongs to.
        external_store_id:
          type: string
          description: >-
            The unique external identifier for the store.
        name:
          type: string
          description: >-
            The name of the store.
        phone_number:
          type: string
          description: >-
            The phone number for the store.
        address:
          type: string
          description: >-
            The full street address of the store.
    StoreRequest:
      type: object
      required:
        - external_store_id
        - name
        - address
      properties:
        external_store_id:
          type: string
          description: >-
            A unique external identifier for the store.
        name:
          type: string
          description: >-
            The name of the store.
        phone_number:

# --- truncated at 32 KB (33 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/doordash/refs/heads/main/openapi/doordash-drive-openapi.yml