v1

latestOpenAPI 3.1.0Proprietary2026-08-06177398877.4 KB
Quotes

Get a quote

Retrieve a quote by ID or key.

The response includes embedded order details (route, freight, equipment).

get/quotes/{id}

Path parameters

idstring required

Resource ID (UUID) or client key

Query parameters

by'id' | 'key'

Specify lookup type for faster retrieval. If omitted, defaults to looking up by ID first, then falls back to client key if not found. Use by=key when you know you're providing a client key for best performance.

Response

Quote retrieved successfully

idstring uuid required

Unique identifier

keystring required

Human-readable quote ID (e.g., "Q003602")

side'SELL' | 'BUY' required

Quote direction.

  • SELL: Selling to shipper (customer quote)
  • BUY: Buying from carrier (carrier quote)
status'DRAFT' | 'REQUESTED' | 'QUOTED' | 'RECEIVED_REPLY' | 'SENT_REPLY' | 'RECEIVED_COUNTER' | 'SENT_COUNTER' | 'WON' | 'LOST' | 'PASS' | 'CANCELED' required

Current status in the quote lifecycle.

Initial states:

  • DRAFT: Quote being drafted
  • REQUESTED: Customer requested a quote (needs pricing)

Active states:

  • QUOTED: Price sent to customer
  • RECEIVED_REPLY: Received reply from customer
  • SENT_REPLY: Sent reply to customer
  • RECEIVED_COUNTER: Received counter-offer
  • SENT_COUNTER: Sent counter-offer

Final states:

  • WON: Customer accepted the quote
  • LOST: Quote not accepted
  • PASS: Broker declined to quote
  • CANCELED: Quote canceled
amountnumber nullable

Quoted price

targetnumber nullable

Target price for margin calculation

marginnumber nullable

Calculated margin percentage

expiresAtstring date-time nullable

Quote expiration timestamp

lostReason'EXPIRED' | 'NO_REASON' | 'NO_RESPONSE' | 'TOO_HIGH' | 'TOO_SLOW' | 'TRUCK_NOT_AVAILABLE' | 'OTHER'

Reason why the quote was lost.

  • EXPIRED: Quote expired without response
  • NO_REASON: No specific reason given
  • NO_RESPONSE: Customer didn't respond
  • TOO_HIGH: Price was too high
  • TOO_SLOW: Response was too slow
  • TRUCK_NOT_AVAILABLE: Capacity not available
  • OTHER: Other reason (see lostReasonText)
lostReasonTextstring nullable

Additional text for lost reason

closedTimestring date-time nullable

When the quote was closed (won/lost)

shipmentIdstring uuid nullable

Shipment ID if converted

shipmentKeystring nullable

Shipment friendly ID if converted

createdAtstring date-time required
updatedAtstring date-time nullable

Example response

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "key": "Q003602",
  "amount": 2500,
  "target": 2200,
  "margin": 12,
  "customer": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "key": "ERP-CUSTOMER-ACME",
    "name": "Acme Manufacturing Corp",
    "friendlyId": "A123456",
    "status": "ACTIVE",
    "phoneNumber": "+1-555-123-4567",
    "website": "https://acme-manufacturing.com",
    "createdAt": "2025-01-15T10:00:00Z",
    "updatedAt": "2025-01-15T14:30:00Z"
  },
  "carrier": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "key": "ERP-CARRIER-SWIFT",
    "name": "Swift Transportation",
    "phoneNumber": "+1-555-987-6543",
    "email": "dispatch@swifttrans.com",
    "createdAt": "2025-01-15T10:00:00Z",
    "updatedAt": "2025-01-15T14:30:00Z"
  },
  "assignee": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "key": "ERP-USER-12345",
    "email": "john.doe@example.com",
    "name": "John Doe",
    "phone": "+1-555-123-4567",
    "phoneExt": "123",
    "status": "ACTIVE",
    "avatarId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
    "createdAt": "2025-01-15T10:00:00Z",
    "updatedAt": "2025-01-15T14:30:00Z"
  }
}