Skip to main content

Create Delivery

POST /drive/v2/deliveries is the core endpoint used to create a parcel in DashLink. It is functionally identical to accepting a quote, except it does not allow a preview of the fee or serviceability beforehand.


Endpoint​

POST /drive/v2/deliveries

This endpoint:

  • Creates an active parcel delivery
  • Generates or confirms the tracking code
  • Validates the full request payload
  • Triggers address correction
  • Returns a base64 shipping label
  • Initiates the delivery lifecycle

See the Drive API Reference for the full schema.


Required fields (detailed)​

The following fields are required and governed by strict rules:

Tracking & Account fields​

  • order_fulfillment_method must be "parcel"
  • pickup_external_business_id — assigned by DashLink onboarding
  • origin_facility_id — identifies the warehouse/store
  • external_delivery_id —
    • Required if shipper-generated tracking codes are used
    • Must be 15–35 characters, unique, no leading zeros
    • Prefix must be DashLink-approved
    • Empty string signals DashLink to generate the code

Recipient & address fields​

  • dropoff_contact_given_name (≤25 chars)
  • dropoff_contact_family_name (≤25 chars)
    • If your system cannot split the first and last name, repeat the whole name in both fields
    • The label will print the duplicated name but the delivery still works
  • dropoff_phone_number in E.164 format
  • dropoff_address (full string used for label printing)
  • dropoff_address_components (structured address required)
  • Optional: dropoff_location.lat/lng (overrides geocoding)

Parcel metadata (items[])​

DashLink supports exactly one item per parcel:

  • name (≤50 chars)
  • description (≤50 chars)
  • external_id (used for operator-level metadata; required for multi-drop grouping)
  • quantity = 1
  • Dimensions:
    • height
    • width
    • length
    • weight
  • Optional:
    • volume = (H × W × L) / 1728

Dropoff behavior​

  • contactless_dropoff (default: true)
  • dropoff_requires_signature (mutually exclusive with contactless_dropoff)

Response fields​

The response includes:

  • Final tracking identifiers:
    • external_delivery_id
    • pickup_reference_tag
    • items[].barcode
  • Corrected dropoff_address_components
  • Estimated pickup & delivery windows
  • Fee
  • Tracking URL
  • Shipping label (if configured)
  • POD/vehicle metadata (pulled in via the status endpoint)

Action for undeliverable parcels​

All parcel shipments use:

"action_if_undeliverable": "return_to_pickup"

Parcels are never disposed or left behind unless configured differently.


When to use create-delivery directly​

Use this endpoint instead of quotes when:

  • You already trust your serviceability logic
  • You don’t need to preview fees
  • You want to simplify your integration to a single step
  • You run a synchronous realtime workflow