Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/doordash-parcel-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.0.0
info:
title: Parcel API
x-logo:
url: >-
https://doordash-static.s3-us-west-2.amazonaws.com/media/drive/drive-logo.png
backgroundColor: '#FFFFFF'
altText: Doordash Drive
href: https://developer.doordash.com/
version: 0.3.6
description: >
Last updated: Jun 23, 2026
### Release Notes
- Add optional `pickup_business_name` field on parcel delivery requests.
Optional name of the place, overrides name of store when provided. Shown to
Dashers to help find the location and to the customer as the store name in
SMS and tracking page.
- Add optional `shipping_label_config` and `shipping_label_metadata` fields
on parcel delivery requests. `shipping_label_config` (when set) fully
specifies the per-order label format, print density, and label size,
replacing the business-level shipping label configuration.
`shipping_label_metadata.label_business_name` (when set) replaces the
business name printed on the rendered label.
- Fix API title from "Drive API" to "Parcel API"
- Remove non-parcel required fields (pickup_reference_tag, shopping_options)
from request schemas
- Add dropoff_email_address to parcel delivery requests
servers:
- url: https://openapi.doordash.com
variables: {}
paths:
/drive/v2/quotes:
post:
summary: Delivery Quote
tags:
- Delivery
description: Get a quote on delivery fee and validate coverage.
operationId: DeliveryQuote
parameters: []
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DeliveryQuoteInput'
required: true
responses:
'200':
description: Ok
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/DeliveryResponseParcel'
'400':
description: Request Validation Failed
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/validation_field_error'
'403':
description: Operation not authorized
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/authorization_error'
'409':
description: Duplicate delivery ID
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/DuplicateDeliveryIdError'
'422':
description: Delivery is not allowed
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/InvalidDeliveryError'
'500':
description: Internal service failure, please try again later
content:
application/json:
schema:
$ref: '#/components/schemas/server_fault'
deprecated: false
/drive/v2/quotes/{external_delivery_id}/accept:
post:
summary: Accept Delivery Quote
tags:
- Delivery
description: Accept Delivery Quote
operationId: DeliveryQuoteAccept
parameters:
- $ref: '#/components/parameters/ExternalDeliveryIdPath'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DeliveryQuoteAcceptInput'
required: false
responses:
'200':
description: Ok
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/DeliveryResponseParcel'
'400':
description: Request Validation Failed
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/validation_field_error'
'403':
description: Operation not authorized
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/authorization_error'
'404':
description: Unknown delivery ID
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/unknown_delivery_error'
'409':
description: Duplicate delivery ID
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/DuplicateDeliveryIdError'
'500':
description: Internal service failure, please try again later
content:
application/json:
schema:
$ref: '#/components/schemas/server_fault'
deprecated: false
/drive/v2/deliveries:
post:
summary: Create Delivery
tags:
- Delivery
description: Create Delivery
operationId: CreateDelivery
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DeliveryQuoteInput'
required: true
responses:
'200':
description: Ok
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/DeliveryResponseParcel'
'400':
description: Request Validation Failed
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/validation_field_error'
'403':
description: Operation not authorized
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/authorization_error'
'409':
description: Duplicate delivery ID
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/DuplicateDeliveryIdError'
'422':
description: Delivery is not allowed
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/InvalidDeliveryError'
'500':
description: Internal service failure, please try again later
content:
application/json:
schema:
$ref: '#/components/schemas/server_fault'
deprecated: false
/drive/v2/deliveries/{external_delivery_id}:
get:
summary: Get Delivery Status
tags:
- Delivery
description: Get delivery status and details
operationId: GetDelivery
parameters:
- $ref: '#/components/parameters/ExternalDeliveryIdPath'
responses:
'200':
description: Ok
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/DeliveryResponseParcel'
'400':
description: Request Validation Failed
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/validation_field_error'
'403':
description: Operation not authorized
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/authorization_error'
'404':
description: Unknown delivery ID
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/unknown_delivery_error'
'500':
description: Internal service failure, please try again later
content:
application/json:
schema:
$ref: '#/components/schemas/server_fault'
deprecated: false
/drive/v2/deliveries/{external_delivery_id}/cancel:
put:
summary: Cancel Delivery
tags:
- Delivery
description: Cancel delivery
operationId: CancelDelivery
parameters:
- $ref: '#/components/parameters/ExternalDeliveryIdPath'
responses:
'200':
description: Ok
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/DeliveryResponseParcel'
'400':
description: Request Validation Failed
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/validation_field_error'
'403':
description: Operation not authorized
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/authorization_error'
'404':
description: Unknown delivery ID
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/unknown_delivery_error'
'409':
description: Cancel is not allowed
headers: {}
content:
application/json:
schema:
$ref: '#/components/schemas/CancelNotAllowedError'
'500':
description: Internal service failure, please try again later
content:
application/json:
schema:
$ref: '#/components/schemas/server_fault'
deprecated: false
components:
schemas:
DeliveryQuoteInput:
title: DeliveryQuoteInput
description: Request body for quote endpoint
allOf:
- $ref: '#/components/schemas/DeliveryEmptyBase'
- $ref: '#/components/schemas/DeliveryBaseParcel'
- $ref: '#/components/schemas/DeliveryPickupDetailsParcel'
- $ref: '#/components/schemas/DeliveryDropoffDetailsParcel'
- $ref: '#/components/schemas/DeliveryValueDetails'
- $ref: '#/components/schemas/DeliveryItemsDetailsParcel'
- $ref: '#/components/schemas/DeliveryOptionsParcel'
required:
- order_fulfillment_method
- pickup_external_business_id
- dropoff_address
- dropoff_phone_number
- items
- dropoff_contact_given_name
- dropoff_contact_family_name
type: object
CreateDeliveryInput:
title: CreateDeliveryInput
allOf:
- $ref: '#/components/schemas/DeliveryEmptyBase'
- $ref: '#/components/schemas/DeliveryBaseParcel'
- $ref: '#/components/schemas/DeliveryPickupDetailsParcel'
- $ref: '#/components/schemas/DeliveryDropoffDetailsParcel'
- $ref: '#/components/schemas/DeliveryValueDetails'
- $ref: '#/components/schemas/DeliveryItemsDetailsParcel'
- $ref: '#/components/schemas/DeliveryOptionsParcel'
required:
- external_delivery_id
- pickup_external_business_id
- order_fulfillment_method
- dropoff_address
- dropoff_phone_number
- items
- dropoff_contact_given_name
- dropoff_contact_family_name
type: object
DeliveryQuoteAcceptInput:
title: DeliveryQuoteAcceptInput
description: Request body for quote accept endpoint
type: object
properties:
tip:
$ref: '#/components/schemas/Tip'
shipping_label_config:
$ref: '#/components/schemas/ShippingLabelConfig'
shipping_label_metadata:
$ref: '#/components/schemas/ShippingLabelMetadata'
DeliveryEmptyBase:
title: DeliveryEmptyBase
description: Placeholder to get codegen to do what's needed.
type: object
ExternalDeliveryId:
type: string
pattern: /[a-zA-Z0-9-._~]+/
description: Unique ID generated by the caller for the delivery.
example: D-1763
OrderFulfillmentMethodParcel:
type: string
description: Type of fulfillment required for the Delivery
enum:
- parcel
OriginFacilityId:
type: string
description: Merchant warehouse id for the midmile
example: MERCHANTA-CA-1
DeliveryBaseParcel:
title: DeliveryBase
description: Delivery status and details.
required:
- external_delivery_id
- order_fulfillment_method
type: object
properties:
external_delivery_id:
$ref: '#/components/schemas/ExternalDeliveryId'
order_fulfillment_method:
$ref: '#/components/schemas/OrderFulfillmentMethodParcel'
origin_facility_id:
$ref: '#/components/schemas/OriginFacilityId'
PickupAddressName:
type: string
description: >-
Optional name of the place, overrides name of store when provided. Shown
to Dashers to help find the location and to Customer as the store name
in SMS and tracking page.
example: Wells Fargo SF Downtown
ExternalBusinessIdParcel:
type: string
description: The String Identifier for your business provided to you by doordash
example: ase-243-dzs
DeliveryPickupDetailsParcel:
title: DeliveryPickupDetails
description: Delivery pickup details.
type: object
properties:
pickup_business_name:
$ref: '#/components/schemas/PickupAddressName'
pickup_external_business_id:
$ref: '#/components/schemas/ExternalBusinessIdParcel'
DropoffAddress:
type: string
description: Comma-separated full address, in the order appropriate for your locale.
example: 901 Market Street 6th Floor San Francisco, CA 94103
DropoffAddressName:
type: string
description: Optional name of the place, to help Dashers find the location.
example: The Avery Condominium
DropoffLocation:
title: Location
type: object
description: >-
[Pre-release field: submit a ticket in the Developer Portal or reach out
to your DoorDash contact if you would like to provide precise location
information.] The precise location, as latitude and longitude, of the
drop-off. If your request includes both location and address, location
will be used for Dasher navigation only; address will be used for fee
and serviceability checks.
required:
- lat
- lng
properties:
lat:
type: number
format: double
description: Latitude of the location
example: 123.1312343
lng:
type: number
format: double
description: Longitude of the location
example: -37.2144343
DropoffPhoneNumber:
title: Drop-off Phone number
type: string
description: >-
The phone number for the Dasher to call if there are any issues with the
delivery. Should include the country code. Must adhere to E.164
international phone number standard
example: '+16505555555'
DropoffInstructions:
type: string
pattern: /^[A-Za-z0-9_-]{3,64}$/
description: Instructions for the Dasher to follow when picking up the order.
example: Enter gate code 1234 on the callbox.
GivenName:
type: string
pattern: '[^~`@#\$%\^&\*\+=\?;\[{\]\}]'
description: Given/first name of the contact.
example: John
FamilyName:
type: string
pattern: '[^~`@#\$%\^&\*\+=\?;\[{\]\}]'
description: Family/last name of the contact.
example: Doe
SendNotifications:
type: boolean
description: >-
Whether the contact will receive notifications from DoorDash for this
delivery. The default is true.
example: true
DropoffEmailAddress:
type: string
description: Email address of the dropoff contact.
example: john.doe@example.com
PinCodeType:
type: string
description: >-
An enum that specifies the pin code value type. The values that can be
specified are 'customer_phone_number' (pin code for dropoff verification
is the customer phone number's last 4 digits),
'merchant_provided_number' (pin code for dropoff verification is the
merchant provided 4 digit number), 'random_number' (pin code for dropoff
verification is the random 4 digit number generated by DD). The default
is 'customer_phone_number' if pin_code is enabled in the
proof_of_delivery.
enum:
- random_number
- customer_phone_number
- merchant_provided_number
example: customer_phone_number
PinCodeValue:
type: string
pattern: /^\d{4}$/
description: >-
The string identifier that implies the pin code to use during dropoff or
return verification. This value should be sent only when the PinCodeType
is 'merchant_provided_number'.
example: '1234'
DropoffPinCodeVerificationMetadata:
title: DropoffPinCodeVerificationMetadata
type: object
description: >-
An object that specifies the dropoff pin code verification related
details for this order. When "pin_code" is set in
"dropoff_options.proof_of_delivery", the object must include relevant
pin code data. Conversely, if "pin_code" is not set as
"proof_of_delivery", the object should exclude any pin code data. Pin
Code can be enabled only for orders that are non-contactless and not
unattended deliveries. Please reach out to Doordash to enable this
feature for your business.
properties:
pin_code_type:
$ref: '#/components/schemas/PinCodeType'
pin_code_value:
$ref: '#/components/schemas/PinCodeValue'
DropoffAddressComponents_US:
type: object
title: United States
description: Drop-off Address broken down by components for US
properties:
street_address:
type: string
nullable: true
description: >-
The street address of the drop-off location. If you have multiple
lines, concatenate them with a comma
example: 901 Market Street
sub_premise:
type: string
nullable: true
description: Used to denote the unit number, suite number or apartment number
example: Apt. 121
city:
type: string
nullable: true
description: City for the address
example: San Francisco
state:
type: string
nullable: true
description: >-
State for the address. 2 letter state codes for US addresses. For
instance, “CA” for California
example: CA
zip_code:
type: string
nullable: true
description: Zip code for the address. 5 digit zip code for US addresses.
example: 94103
country:
type: string
nullable: true
description: >-
Country needs to be passed as an ISO 3166 Alpha 2 code. If it is not
a valid ISO ALPHA 2 code, you would receive a validation error. “US”
for United States of America. “PR” for Puerto Rico
example: US
DropoffAddressComponents_CA:
type: object
title: Canada
description: Drop-off Address broken down by components for CA
properties:
street_address:
type: string
nullable: true
description: >-
The street address of the drop-off location. If you have multiple
lines, concatenate them with a comma
example: 358 Industry Drive
sub_premise:
type: string
nullable: true
description: Used to denote the unit number, suite number or apartment number
example: Apt. 121
city:
type: string
nullable: true
description: City for the address
example: Toronto
province:
type: string
nullable: true
description: >-
Province for the address. 2 letter province codes for Canadian
addresses. For instance, “ON” for Ontario
example: 'ON'
postal_code:
type: string
nullable: true
description: Postal code for the address
example: M4C-1V7
country:
type: string
nullable: true
description: >-
Country needs to be passed as an ISO 3166 Alpha 2 code. If it is not
a valid ISO ALPHA 2 code, you would receive a validation error. “CA”
for Canada
example: CA
DropoffAddressComponents_AU:
type: object
title: Australia
description: Drop-off Address broken down by components for AU
properties:
street_address:
type: string
nullable: true
description: >-
The street number and address of the drop-off location. If you have
multiple lines, concatenate them with a comma. Do not include the
unit number or slashes in the street address. Please pass them in
the sub_premise field. For example, if the address is 21/17 Jones
St, pass 17 Jones St
example: 17 Jones St
sub_premise:
type: string
nullable: true
description: >-
Used to denote the unit number, flat number, suite number, or
apartment number
example: Apt. 121
locality:
type: string
nullable: true
description: Delivery suburb / town for the address
example: North Sydney
territory:
type: string
nullable: true
description: >-
State code for the address. Use the state abbreviation. For instance
NSW for New South Wales, VIC for Victoria, etc.
example: NSW
postal_code:
type: string
nullable: true
description: Postal code for the address
example: 2060
country:
type: string
nullable: true
description: >-
Country needs to be passed as an ISO 3166 Alpha 2 code. If it is not
a valid ISO ALPHA 2 code, you would receive a validation error. “AU”
for Australia
example: AU
DropoffAddressComponents_NZ:
type: object
title: New Zealand
description: Drop-off Address broken down by components for NZ
properties:
street_address:
type: string
nullable: true
description: >-
The street address of the drop-off location. If you have multiple
lines, concatenate them with a comma
example: 236 Majoribanks Street
sub_premise:
type: string
nullable: true
description: >-
Used to denote the unit number, flat number, suite number, or
apartment number
example: Apt. 121
sub_locality:
type: string
nullable: true
description: Delivery suburb / town for the address
example: Mount Victoria
locality:
type: string
nullable: true
description: Locality for the address
example: Wellington
postal_code:
type: string
nullable: true
description: Postal code for the address
example: 6011
country:
type: string
nullable: true
description: >-
Country needs to be passed as an ISO 3166 Alpha 2 code. If it is not
a valid ISO ALPHA 2 code, you would receive a validation error. “NZ”
for New Zealand
example: NZ
DeliveryDropoffDetailsParcel:
title: DeliveryDropoffDetails
description: Delivery drop off details.
type: object
properties:
dropoff_address:
$ref: '#/components/schemas/DropoffAddress'
dropoff_business_name:
$ref: '#/components/schemas/DropoffAddressName'
dropoff_location:
$ref: '#/components/schemas/DropoffLocation'
dropoff_phone_number:
$ref: '#/components/schemas/DropoffPhoneNumber'
dropoff_instructions:
$ref: '#/components/schemas/DropoffInstructions'
dropoff_contact_given_name:
$ref: '#/components/schemas/GivenName'
dropoff_contact_family_name:
$ref: '#/components/schemas/FamilyName'
dropoff_contact_send_notifications:
$ref: '#/components/schemas/SendNotifications'
dropoff_email_address:
$ref: '#/components/schemas/DropoffEmailAddress'
dropoff_pin_code_verification_metadata:
title: DropoffPinCodeVerificationMetadata
description: >-
The Dropoff Pin Code verification related data. Please reach out to
Doordash to enable this feature for your business.
$ref: '#/components/schemas/DropoffPinCodeVerificationMetadata'
dropoff_address_components:
title: DropoffAddressComponents
description: The Dropoff address broken down into independent components.
oneOf:
- $ref: '#/components/schemas/DropoffAddressComponents_US'
- $ref: '#/components/schemas/DropoffAddressComponents_CA'
- $ref: '#/components/schemas/DropoffAddressComponents_AU'
- $ref: '#/components/schemas/DropoffAddressComponents_NZ'
OrderValue:
minimum: 0
type: integer
description: >-
The subtotal for all items in the order, excluding tax/tip, in the
lowest currency denomination (e.g. cents). i.e. $19.99 = 1999.
format: int32
example: 1999
Currency:
type: string
description: Currency of the order
example: USD
DeliveryValueDetails:
title: DeliveryValueDetails
description: >-
The subtotal for all items in the order, excluding tax/tip. Use cents or
the equivalent lowest currency denomination (e.g. $19.99 = 1999).
type: object
properties:
order_value:
$ref: '#/components/schemas/OrderValue'
currency:
$ref: '#/components/schemas/Currency'
DangerousGoods:
title: DangerousGoods
type: object
description: >-
Hazardous materials (hazmat) information for an item shipped under
applicable dangerous-goods regulations.
required:
- proper_shipping_name
- commodity_level_code
properties:
proper_shipping_name:
type: string
description: >-
Official proper shipping name of the hazardous material as defined
by the applicable regulatory authority (DOT/IATA/IMDG).
maxLength: 200
example: ACETYL METHYL CARBINOL
commodity_level_code:
type: string
description: >-
Indicates the regulatory treatment level for this hazardous
commodity.
example: limited_quantity
enum:
- limited_quantity
un_number:
type: string
description: >-
Four-digit UN identification number assigned to the hazardous
substance. Must be provided in the format "UN" followed by exactly
four digits.
pattern: ^UN\d{4}$
example: UN2621
class_number:
type: string
description: One of the nine HAZMAT shipping classes and sub classes
example: '3'
amount:
type: number
format: double
description: >-
Net quantity of hazardous material per package, expressed in the
unit defined by `amount_measurement_type`.
minimum: 0
example: 10
amount_measurement_type:
type: string
description: Unit of measure for the `amount` field.
example: KGS
enum:
- KGS
- LBS
- L
- ML
packaging_group_type:
type: string
description: >-
Packing group indicating the degree of danger of the substance.
Group I = great danger, Group II = medium danger, Group III = minor
danger. Not applicable to all hazard classes (e.g. explosives,
gases).
example: III
enum:
- I
- II
- III
transportation_mode:
type: string
description: >-
Mode of transport under which the dangerous goods declaration
applies.
example: ground
enum:
- ground
quantity:
type: integer
format: int32
description: Number of these items in the entire package.
minimum: 1
example: 1
DeliveryItemParcel:
title: DeliveryItem
description: Details about an individual item in the order.
type: object
required:
- name
- quantity
properties:
name:
type: string
description: Name of the item being delivered.
pattern: /^.{1,100}$/
example: Mega Bean and Cheese Burrito
description:
type: string
description: Description of the item being delivered.
pattern: /^.{1,500}$/
example: >-
Mega Burrito contains the biggest beans of the land with extra
cheese.
quantity:
type: integer
format: int32
description: Quantity of the item being delivered.
minimum: 1
maximum: 100
example: 2
volume:
type: number
format: double
minimum: 0
maximum: 999.9995
description: >-
Unit volume of 1 instance of this item, in cubic feet, with or
without a decimal point. The overall volume of this item is
calculated by multiplying this field by quantity.
example: 5.3
weight:
type: number
format: double
minimum: 0
maximum: 999.9995
description: >-
Unit weight of 1 instance of this item, in pounds (lbs), with or
without a decimal point. The overall weight of this item is
calculated by multiplying this field by quantity.
example: 2.8
length:
type: number
format: double
minimum: 0
description: >-
Unit length of 1 instance of this item, in inches, with or without a
decimal point.
example: 2.8
width:
type: number
format: double
minimum: 0
description: >-
Unit width of 1 instance of this item, in inches, with or without a
decimal point.
example: 2.8
height:
type: number
format: double
minimum: 0
description: >-
Unit height of 1 instance of this item, in inches, with or without a
decimal point.
example: 2.8
price:
type: integer
format: int32
minimum: 0
maximum: 9999999
description: >-
Unit price of 1 instance of this item in the lowest currency
denomination (e.g. cents). i.e. $5.99 = 599. The overall price of
this item is calculated by multiplying this field by quantity.
example: 1000
external_id:
type: string
description: >-
Unique ID generated by the caller for the item and will get printed
on the label.
pattern: /^.{1,100}$/
example: 123-123443434b
dangerous_goods:
type: array
description: >
Optional list of hazardous-materials declarations for the item.
Provide this field when the item contains regulated dangerous goods
(e.g. aerosols, lithium batteries). When any entry has
`commodity_level_code: limited_quantity` a diamond-shaped LQ hazmat
icon will be rendered on the shipping label.
items:
$ref: '#/components/schemas/DangerousGoods'
DeliveryItemsDetailsParcel:
title: DeliveryItemsDetails
description: Details about the individual items included in the order.
type: object
properties:
items:
type: array
description: The items included in the order.
items:
$ref: '#/components/schemas/Delive
# --- truncated at 32 KB (84 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/doordash/refs/heads/main/openapi/_original/doordash-parcel-openapi.yml