Get quote for a multi-stops FTL shipment
Get a quote for a Full Truck Load (FTL) shipment with multiple stops (transit points).
This endpoint allows you to get pricing for routes with intermediate pickup/delivery points between the origin and final destination. The pricing service calculates the total cost for the entire multi-stop route.
Requirements:
- At least 1 transit stop is required (otherwise use the standard /freights/quote endpoint)
- Maximum 18 transit stops (20 total stops including pickup and delivery)
- Only US ZIP codes are accepted at the moment (5-digit or ZIP+4). country "CA" passes the country check but Canadian postal codes fail the zipcode validation, so Canada cannot be quoted through multi-stops yet.
Rate limit: this endpoint counts towards the FTL quoting rate limit of your API key (per UTC hour and per UTC day). Above the limit the API answers 429 rate_limit_exceeded with a Retry-After header.
Validation: every validation error (including a missing required field) is returned as 400 invalid_field_data with the failing field in the message.
Request parameters
| Name | Type | Required/Optional | Description |
|---|---|---|---|
| pickupDate | String | Required | The earliest pickup date in YYYY-MM-DD format, in the timezone of the pickup location. |
| pickupInfo | Object | Required | Pickup stop details. |
| pickupInfo.zipcode | String | Required | The postal code of the pickup location (US 5-digit or ZIP+4). |
| pickupInfo.country | String | Optional | Country code (ISO 3166-1 alpha-2). Defaults to "US". See the US-only note above. |
| deliveryInfo | Object | Required | Final delivery stop details. |
| deliveryInfo.zipcode | String | Required | The postal code of the final delivery location (US 5-digit or ZIP+4). |
| deliveryInfo.country | String | Optional | Country code (ISO 3166-1 alpha-2). Defaults to "US". See the US-only note above. |
| transits | Array<Object> | Required | List of intermediate transit stops in route order. Min 1, max 18. |
| transits[].zipcode | String | Required | The postal code of the transit stop (US 5-digit or ZIP+4). |
| transits[].country | String | Optional | Country code (ISO 3166-1 alpha-2). Defaults to "US". See the US-only note above. |
| listItems | Array<Item> | Required | The list of commodities being shipped (used for pricing the entire route). 1 to 100 items. |
| pickupServices | Array<ServiceOption> | Optional | Pickup services required at the pickup location (max 20). |
| deliveryServices | Array<ServiceOption> | Optional | Delivery services required at the delivery location (max 20). |
| additionalServices | Array<ServiceOption> | Optional | Any additional services for the shipment (max 20). |
| shipmentType | String | Optional | Only FTL is accepted (default: FTL); any other value is rejected with 400. |
| vehicleType | Object | Optional | Vehicle type specification. |
| vehicleType.code | String | Required when vehicleType is provided | Vehicle code (e.g. DRY_VAN_53, STRAIGHT_TRUCK_26, CARGO_VAN). |
| Field | Constraint |
|---|---|
| height | 0.1 - 85 |
| length | 0.1 - 636 |
| width | 0.1 - 102 |
| quantity | integer, 1 - 9999 |
| totalWeight | 0.01 - 80000 |
| name | max 200 characters; notes max 500; freightClass/packaging max 50 |
| Name | Type | Description |
|---|---|---|
| quote_id | String | The unique ID for this quote (WM + ULID, 28 characters). Legacy PRICING_MULTI_ ids are still accepted when booking. |
| total_charge | Number | Total price for the entire multi-stop route (USD). |
| transit_time | Number | Estimated transit time in seconds. |
| transit_time_without_team | Number | Estimated transit time in seconds when the load is driven by a single driver instead of a team. |
| rate_detail | Object | Detailed rate breakdown. |
Request
- Base URL: https://stg.wearewarp.com/api/v1
- URL: https://stg.wearewarp.com/api/v1/freights/quote/multi-stops
- Auth: API key in header apikey
Request body
Example request
{
"pickupDate": "2026-03-15",
"pickupInfo": {
"zipcode": "90021"
},
"deliveryInfo": {
"zipcode": "80238"
},
"transits": [
{
"zipcode": "75201"
}
],
"listItems": [
{
"name": "Electronics Pallet",
"height": 48,
"length": 48,
"width": 48,
"sizeUnit": "IN",
"quantity": 1,
"totalWeight": 500,
"weightUnit": "lbs"
}
]
}Response
successful creation
Example response
{
"quote_id": "WM01KH5PB2V9QJ6Z8M4T3R7X1C0D",
"total_charge": 4425.57,
"transit_time": 118800,
"transit_time_without_team": 158400
}Changes
No recorded changes to this operation across all 1 revision of this API.