Creating Quotes
Get pricing estimates for vehicle transport before creating an order.
Prerequisites: The authenticated user must be associated with a customer (have the
customer role). The customer is automatically determined from your API token — no customer ID is needed in the request body. See Creating Customers.
Endpoint
POST
/api/customer/quote
Required Fields
| Field | Type | Notes |
|---|---|---|
| origin.state | string | Required. |
| origin.postal_code | string | Required. Numeric. |
| origin.city | string | Optional. |
| destination.state | string | Required. |
| destination.postal_code | string | Required. Numeric. |
| destination.city | string | Optional. |
| location_type | string | Optional. |
| vehicles | array | Required. At least one vehicle. Maximum of 36 vehicles per quote. |
| vehicles.*.vin | string | Required. |
| vehicles.*.year | string | Required with make and model. |
| vehicles.*.make | string | Required with year and model. |
| vehicles.*.model | string | Required with year and make. |
| vehicles.*.type | string | Required with year/make/model. Enum: car, motorcycle, van, suv, truck, oversized, other. |
| vehicles.*.inoperable | boolean | Required. |
Example
POST /api/customer/quote
Content-Type: application/json
Authorization: Bearer your-api-token
{
"origin": {
"state": "GA",
"postal_code": "30301"
},
"destination": {
"state": "FL",
"postal_code": "33101"
},
"vehicles": [
{
"vin": "1HGBH41JXMN109186",
"year": "2024",
"make": "Honda",
"model": "Accord",
"type": "car",
"inoperable": false
}
]
}
Response (200 OK)
VIN is accepted in the request and used to decode vehicle details, but is not included in the response. Retain the VIN from your request if you need it when creating an order.
{
"status": true,
"status_code": 200,
"data": {
"id": "q7k3m9x2n4p1q",
"status": "active",
"expires_at": "2026-04-11T12:00:00+00:00",
"origin": { "city": "Atlanta", "state": "GA", "postal_code": "30301" },
"destination": { "city": "Miami", "state": "FL", "postal_code": "33101" },
"distance": 662.5,
"vehicles": [
{
"id": "v1a2b3nanoid",
"quote_id": "q7k3m9x2n4p1q",
"year": 2024,
"make": "Honda",
"model": "Accord",
"type": "car",
"inoperable": false,
"quoted_price": 595.00
}
],
"price_options": [
{ "type": "economy", "delivery_time": "7 business days", "price": 595.00, "delivery_eta": "04/22/26" },
{ "type": "expedited", "delivery_time": "4 business days", "price": 745.00, "delivery_eta": "04/17/26" },
{ "type": "enclosed", "delivery_time": "5 business days", "price": 895.00, "delivery_eta": "04/20/26" }
],
"checkout_url": "https://...",
"email_url": "https://..."
}
}
Quote Expiration: Quotes are valid for 30 days from creation. When quote expiration is enabled for your environment, the
status and expires_at fields are included in quote responses. After expiration, status becomes expired and the quote can no longer be used to create an order.
Retrieving a Quote
GET
/api/customer/quote/{quote_id}
Use the id (nano_id) from the creation response.
Next Steps
- → Create an order using this quote to lock in pricing
- → Create an order without a quote for direct submissions