Multi-Stops

Book a multi-stops FTL shipment

Book a multi-stop FTL shipment using a previous multi-stops quote ID.

This endpoint creates an order with multiple shipments (legs), each representing a pickup-to-delivery segment within the overall route. All stops that were included in the original quote must be used in the booking.

Requirements:

  • A valid, unexpired multi-stops quoteId from /freights/quote/multi-stops
  • At least 2 shipments (otherwise use the standard /freights/booking endpoint), at most 19
  • All zipcodes from the original quote must appear in the booking shipments
  • Within each shipment, pickupInfo.stopIndex must be less than deliveryInfo.stopIndex
  • Addresses must be US: state is the 2-letter code and zipcode is 5-digit or ZIP+4
  • windowTime / appointmentInfo from and to are strings in the format YYYY-MM-DDTHH:mm:ss with optional milliseconds (up to 3 digits) and an optional trailing Z (e.g. 2026-03-15T08:00:00Z or 2026-03-15T08:00:00.000Z); time zone offsets such as +07:00 are not accepted
  • Items follow the same limits as the multi-stops quote (height <= 85, length <= 636, width <= 102, quantity 1-9999, totalWeight <= 80000, 1-100 items per shipment)

Validation: every validation error (including a missing required field) is returned as 400 invalid_field_data with the failing field in the message.

How stopIndex works:

  • stopIndex is a relative sorting key that determines the order the driver visits each stop
  • Values don't need to be contiguous (e.g., 0, 5, 10 is valid)
  • Same stopIndex value means the driver visits the same physical location once for multiple tasks
  • Example: A route LA → Dallas → NYC with pickup at Dallas and delivery at Dallas:
    • Shipment 1: pickup (stopIndex: 0, LA) → delivery (stopIndex: 1, Dallas)
    • Shipment 2: pickup (stopIndex: 2, Dallas) → delivery (stopIndex: 3, NYC)

Request parameters

NameTypeRequired/OptionalDescription
quoteIdStringRequiredThe quote ID from a previous multi-stops quote request.
shipmentsArray<Shipment>RequiredList of shipment legs (min 2, max 19).
shipments[].pickupInfoMultiStopsStopInfoRequiredPickup stop details including stopIndex.
shipments[].deliveryInfoMultiStopsStopInfoRequiredDelivery stop details including stopIndex.
shipments[].listItemsArray<Item>RequiredCommodities for this leg.
shipments[].pickupServicesArray<ServiceOption>OptionalPickup services for this leg.
shipments[].deliveryServicesArray<ServiceOption>OptionalDelivery services for this leg.
shipments[].additionalServicesArray<ServiceOption>OptionalAdditional services for this leg.
shipmentTypeStringOptionalOnly FTL is accepted (default: FTL); any other value is rejected with 400.
vehicleTypeObjectOptionalVehicle type specification.
<br/> **MultiStopsStopInfo** extends StopInfo with:
NameTypeRequired/OptionalDescription
stopIndexNumberRequiredInteger (0-999). Relative order of this stop in the route.
All fields from StopInfo (contactName, contactPhone, address, windowTime, instructions, refNum, etc.)
<br/> **Response**
NameTypeDescription
messageStringResult message (e.g. "Success").
trackingNumberStringThe tracking number of the order (same as orderNumber).
orderIdStringThe ID of the created order.
orderNumberStringThe display number of the order.
shipmentsArrayList of created shipments.
shipments[].trackingNumberStringTracking number for this shipment (currently the shipment code, same as shipmentNumber).
shipments[].shipmentIdStringID of the shipment.
shipments[].shipmentNumberStringDisplay number of the shipment.
shipments[].refNumStringReference numbers.
post/freights/booking/multi-stops

Request

  • Base URL: https://stg.wearewarp.com/api/v1
  • URL: https://stg.wearewarp.com/api/v1/freights/booking/multi-stops
  • Auth: API key in header apikey

Request body

quoteIdstring required

Quote ID from a previous multi-stops quote request

shipmentType'FTL'

Shipment type. Only FTL is accepted; any other value is rejected with 400.

Example request

{
  "quoteId": "WM01KH5PB2V9QJ6Z8M4T3R7X1C0D",
  "shipments": [
    {
      "pickupInfo": {
        "stopIndex": 0,
        "contactName": "John Doe",
        "contactPhone": "3105551234",
        "locationName": "LA Warehouse",
        "address": {
          "street": "100 S Main St",
          "city": "Los Angeles",
          "state": "CA",
          "zipcode": "90021"
        },
        "windowTime": {
          "from": "2026-03-15T08:00:00Z",
          "to": "2026-03-15T17:00:00Z"
        },
        "instructions": "Dock 3",
        "refNum": "PO-001"
      },
      "deliveryInfo": {
        "stopIndex": 1,
        "contactName": "Jane Smith",
        "contactPhone": "2145551234",
        "locationName": "Dallas Distribution Center",
        "address": {
          "street": "200 Elm St",
          "city": "Dallas",
          "state": "TX",
          "zipcode": "75201"
        },
        "windowTime": {
          "from": "2026-03-16T08:00:00Z",
          "to": "2026-03-16T17:00:00Z"
        },
        "refNum": "DO-001"
      },
      "listItems": [
        {
          "name": "Electronics Pallet",
          "height": 48,
          "length": 48,
          "width": 48,
          "sizeUnit": "IN",
          "quantity": 1,
          "totalWeight": 500,
          "weightUnit": "lbs"
        }
      ]
    },
    {
      "pickupInfo": {
        "stopIndex": 2,
        "contactName": "Jane Smith",
        "contactPhone": "2145551234",
        "locationName": "Dallas Distribution Center",
        "address": {
          "street": "200 Elm St",
          "city": "Dallas",
          "state": "TX",
          "zipcode": "75201"
        },
        "windowTime": {
          "from": "2026-03-16T10:00:00Z",
          "to": "2026-03-16T18:00:00Z"
        },
        "refNum": "PO-002"
      },
      "deliveryInfo": {
        "stopIndex": 3,
        "contactName": "Bob Wilson",
        "contactPhone": "2125551234",
        "locationName": "NYC Receiving",
        "address": {
          "street": "300 Broadway",
          "city": "New York",
          "state": "NY",
          "zipcode": "80238"
        },
        "windowTime": {
          "from": "2026-03-17T08:00:00Z",
          "to": "2026-03-17T17:00:00Z"
        },
        "refNum": "DO-002"
      },
      "listItems": [
        {
          "name": "Furniture",
          "height": 60,
          "length": 72,
          "width": 48,
          "sizeUnit": "IN",
          "quantity": 2,
          "totalWeight": 800,
          "weightUnit": "lbs"
        }
      ]
    }
  ]
}

Response

successful creation

messagestring
trackingNumberstring

The tracking number of the order (same as orderNumber)

orderIdstring

The ID of the created order

orderNumberstring

The display number of the order

Example response

{
  "message": "Success",
  "trackingNumber": "123456",
  "orderId": "01H3W439G5J5Y282KQFQTAQGTD",
  "orderNumber": "123456",
  "shipments": [
    {
      "trackingNumber": "2E2EWQATEF8K",
      "shipmentId": "01H4YJBE0NP5NGEN3W07Z6YPM4",
      "shipmentNumber": "123457",
      "refNum": "PO-001, DO-001"
    },
    {
      "trackingNumber": "3F3FXRBUEG9L",
      "shipmentId": "01H4YJBE0NP5NGEN3W07Z6YPM5",
      "shipmentNumber": "123458",
      "refNum": "PO-002, DO-002"
    }
  ]
}

Changes

No recorded changes to this operation across all 1 revision of this API.