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
| Name | Type | Required/Optional | Description |
|---|---|---|---|
| quoteId | String | Required | The quote ID from a previous multi-stops quote request. |
| shipments | Array<Shipment> | Required | List of shipment legs (min 2, max 19). |
| shipments[].pickupInfo | MultiStopsStopInfo | Required | Pickup stop details including stopIndex. |
| shipments[].deliveryInfo | MultiStopsStopInfo | Required | Delivery stop details including stopIndex. |
| shipments[].listItems | Array<Item> | Required | Commodities for this leg. |
| shipments[].pickupServices | Array<ServiceOption> | Optional | Pickup services for this leg. |
| shipments[].deliveryServices | Array<ServiceOption> | Optional | Delivery services for this leg. |
| shipments[].additionalServices | Array<ServiceOption> | Optional | Additional services for this leg. |
| shipmentType | String | Optional | Only FTL is accepted (default: FTL); any other value is rejected with 400. |
| vehicleType | Object | Optional | Vehicle type specification. |
| Name | Type | Required/Optional | Description |
|---|---|---|---|
| stopIndex | Number | Required | Integer (0-999). Relative order of this stop in the route. |
| All fields from StopInfo (contactName, contactPhone, address, windowTime, instructions, refNum, etc.) |
| Name | Type | Description |
|---|---|---|
| message | String | Result message (e.g. "Success"). |
| trackingNumber | String | The tracking number of the order (same as orderNumber). |
| orderId | String | The ID of the created order. |
| orderNumber | String | The display number of the order. |
| shipments | Array | List of created shipments. |
| shipments[].trackingNumber | String | Tracking number for this shipment (currently the shipment code, same as shipmentNumber). |
| shipments[].shipmentId | String | ID of the shipment. |
| shipments[].shipmentNumber | String | Display number of the shipment. |
| shipments[].refNum | String | Reference 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
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
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.