DoorDash Drive Classic API

The DoorDash Drive Classic API is the legacy version of the Drive API, designed for large enterprises and middleware providers who require extensive configuration and customizability for their delivery integrations. It provides endpoints for managing businesses, stores, and deliveries through DoorDash's logistics platform. The API uses JWT-based Bearer token authentication and operates at the v1 endpoint path.

OpenAPI Specification

doordash-drive-classic-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: DoorDash Drive Classic API
  description: >-
    The DoorDash Drive Classic API is the legacy version of the Drive API,
    designed for large enterprises and middleware providers who require
    extensive configuration and customizability for their delivery
    integrations. It provides endpoints for managing businesses, stores,
    and deliveries through DoorDash's logistics platform. While still
    supported, DoorDash recommends new integrations use the newer Drive
    API (v2) instead.
  version: '1.0'
  contact:
    name: DoorDash Developer Support
    url: https://developer.doordash.com/en-US/
  termsOfService: https://www.doordash.com/terms/
externalDocs:
  description: DoorDash Drive Classic API Documentation
  url: https://developer.doordash.com/en-US/docs/drive_classic/overview/about_drive_classic/
servers:
  - url: https://openapi.doordash.com/drive/v1
    description: Production Server
tags:
  - name: Businesses
    description: >-
      Manage business entities that represent legal entities or owners.
  - name: Deliveries
    description: >-
      Create, retrieve, update, cancel, and estimate deliveries using the
      classic API endpoints.
  - name: Stores
    description: >-
      Manage store locations associated with businesses.
security:
  - bearerAuth: []
paths:
  /estimates:
    post:
      operationId: createDeliveryEstimate
      summary: Create a delivery estimate
      description: >-
        Requests time and fee estimates for a delivery. Can also be used to
        check if an area is serviced by DoorDash. Time values must be provided
        in UTC ISO-8601 format.
      tags:
        - Deliveries
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EstimateRequest'
      responses:
        '200':
          description: Delivery estimate created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Estimate'
        '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:
    post:
      operationId: createDelivery
      summary: Create a delivery
      description: >-
        Creates a new delivery request. DoorDash will assign a Dasher to
        fulfill the delivery. Time values must be provided in UTC format.
        The API recommends up to 3 retries with exponential backoff.
      tags:
        - Deliveries
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClassicDeliveryRequest'
      responses:
        '200':
          description: Delivery created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClassicDelivery'
        '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/ClassicDelivery'
        '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. 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/ClassicDeliveryUpdateRequest'
      responses:
        '200':
          description: Delivery updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClassicDelivery'
        '400':
          description: Invalid update parameters
          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. Cancellation restrictions apply based on
        the current delivery status.
      tags:
        - Deliveries
      parameters:
        - $ref: '#/components/parameters/ExternalDeliveryId'
      responses:
        '200':
          description: Delivery cancelled successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClassicDelivery'
        '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 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.
      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'
  /businesses/{external_business_id}/stores/{external_store_id}:
    get:
      operationId: getStore
      summary: Get store details
      description: >-
        Retrieves the details of a specific store within a 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'
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        JWT token signed with your DoorDash developer credentials.
  parameters:
    ExternalDeliveryId:
      name: external_delivery_id
      in: path
      required: true
      description: >-
        The unique external delivery ID provided when creating the delivery.
      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:
    EstimateRequest:
      type: object
      required:
        - pickup_address
        - dropoff_address
      properties:
        pickup_address:
          type: string
          description: >-
            The full street address for the pickup location.
        dropoff_address:
          type: string
          description: >-
            The full street address for the dropoff location.
        pickup_time:
          type: string
          format: date-time
          description: >-
            The requested pickup time in UTC ISO-8601 format.
        order_value:
          type: integer
          description: >-
            The total value of the order in cents.
    Estimate:
      type: object
      properties:
        fee:
          type: integer
          description: >-
            The estimated delivery fee in cents.
        currency:
          type: string
          description: >-
            The currency code for the fee amount.
        pickup_time:
          type: string
          format: date-time
          description: >-
            The estimated pickup time.
        dropoff_time:
          type: string
          format: date-time
          description: >-
            The estimated dropoff time.
        delivery_duration:
          type: integer
          description: >-
            The estimated delivery duration in seconds.
    ClassicDeliveryRequest:
      type: object
      required:
        - external_delivery_id
        - pickup_address
        - dropoff_address
      properties:
        external_delivery_id:
          type: string
          description: >-
            A unique identifier for this delivery.
        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 pickup.
        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 the Dasher at dropoff.
        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.
        dropoff_time:
          type: string
          format: date-time
          description: >-
            The requested dropoff time in UTC.
        contains_alcohol:
          type: boolean
          description: >-
            Whether the order contains alcohol.
        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.
    ClassicDeliveryUpdateRequest:
      type: object
      properties:
        tip:
          type: integer
          description: >-
            Updated tip amount in cents.
        dropoff_instructions:
          type: string
          description: >-
            Updated dropoff instructions.
        dropoff_phone_number:
          type: string
          description: >-
            Updated dropoff phone number.
    ClassicDelivery:
      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.
        tip:
          type: integer
          description: >-
            The tip amount in cents.
        pickup_address:
          type: string
          description: >-
            The pickup address.
        dropoff_address:
          type: string
          description: >-
            The dropoff address.
        pickup_time_estimated:
          type: string
          format: date-time
          description: >-
            The estimated pickup time.
        pickup_time_actual:
          type: string
          format: date-time
          description: >-
            The actual pickup time.
        dropoff_time_estimated:
          type: string
          format: date-time
          description: >-
            The estimated dropoff time.
        dropoff_time_actual:
          type: string
          format: date-time
          description: >-
            The actual dropoff time.
        dasher_id:
          type: integer
          description: >-
            The assigned Dasher's ID.
        dasher_name:
          type: string
          description: >-
            The assigned Dasher's first name.
        tracking_url:
          type: string
          format: uri
          description: >-
            A URL for tracking the delivery.
        created_at:
          type: string
          format: date-time
          description: >-
            When the delivery was created.
        updated_at:
          type: string
          format: date-time
          description: >-
            When the delivery was last updated.
    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:
          type: string
          description: >-
            The phone number for the store.
        address:
          type: string
          description: >-
            The full street address of the store.
    Error:
      type: object
      properties:
        message:
          type: string
          description: >-
            A human-readable error message.
        code:
          type: string
          description: >-
            A machine-readable error code.
        field_errors:
          type: array
          description: >-
            A list of field-level validation errors.
          items:
            type: object
            properties:
              field:
                type: string
                description: >-
                  The field with the error.
              error:
                type: string
                description: >-
                  The error message.