Quote Management

Request a rate quote

This endpoint is implemented by the rate provider and called by Augment. Every other endpoint in this reference operates in the opposite direction, so the distinction warrants emphasis: Augment acts as the HTTP client, and cannot retrieve quotes until the endpoint is available on the provider side. The path and base URL shown above are placeholders for the values the provider assigns.

Each request describes a single shipment and expects the rates that apply to it. mode, rateType, two stops carrying a city and a state, and equipment.equipmentType are always present. The remaining fields are included when Augment holds a value and omitted when it does not, so an omitted optional field should be read as unknown rather than as a default. An omitted isHazmat, for example, does not indicate that the freight is non-hazardous.

dimensions is optional, but Augment includes it whenever a value is available, so that the rate provider rather than Augment determines whether a shipment is legal or oversize. Where oversize freight falls outside the scope of an initial build, dimensions may be disregarded and the field reserved for later use.

Where a shipment cannot be priced, the response must be 200 with an empty rates array and a populated noRateReason. This condition must not be reported with an error status: an error prevents Augment from distinguishing between "no rate exists" and "the endpoint is unavailable", and the two require opposite handling. 4xx and 5xx responses are reserved for malformed requests, authentication failures, and genuine faults.

One request is sent per rep. When a customer email reaches several of your reps, Augment sends one request for each, with its own augmentQuoteId and that rep as QUOTE_OWNER. Create one quote per request and do not merge them.

A request that repeats an augmentQuoteId already sent is an update to that quote, not a new quote. Augment resends it when the customer replies on the same thread with changes. Treat the call as idempotent: apply the latest values and return the same externalId.

post/rates/quote

Request

Request body

mode'DRAYAGE' | 'EXPEDITE' | 'FTL' | 'LTL' | 'PARTIAL' required

Transportation mode. Same values as Load.mode.

rateType'CONTRACT' | 'DEDICATED' | 'PROJECT' | 'SPOT' required

The commercial basis of the rate being asked for. Same values as Load.rateType.

commoditystring nullable

Free-text description of the freight

pickupDatestring date nullable

Requested pickup day

totalMilesnumber nullable

Augment's mileage estimate, when it has one. Advisory only: rating should use the provider's own mileage, which is then returned on the response.

tarpSizestring nullable

Tarp size requirement, when the freight needs tarping

isHazmatboolean nullable

Whether the shipment carries hazardous materials. Missing means unknown, not false.

hazmatUnNumberstring nullable

UN number for the hazardous material, UN followed by four digits. Sent only when isHazmat is true and the source document carried the number.

accessorialsAccessorialsEnum[] nullable

Accessorial codes Augment already knows the shipment needs, such as TARPS or TWIC. Advisory only. You return the priced accessorials on each rate and are not limited to what's listed here.

customerNamestring nullable

The shipper the quote is for, when a customer rate applies

augmentQuoteIdstring required

Augment's id for this quote. Echo it back unchanged. Treat it as an opaque string.

numberTruckloadsinteger nullable

Number of truckloads on this lane. Missing means 1. One request covers one lane; several truckloads on the same lane are counted here rather than sent as separate requests.

wellspaceInchesinteger nullable

Well space needed, in whole inches, for drop-deck freight. A separate field rather than part of dimensions, because it describes the trailer requirement, not the freight.

customDataobject nullable

Additional fields Augment can reliably parse from the email, agreed with each provider during setup, such as a customer-specific code. Keys and values are defined per provider. Ignore any key you do not use.

Example request

{
  "hazmatUnNumber": "UN1090",
  "accessorials": [
    "AFTER_HOURS"
  ]
}

Response

The applicable rates. Also the response for a shipment that cannot be priced: an empty rates array plus a noRateReason.

augmentQuoteIdstring required

The augmentQuoteId from the request, echoed back unchanged

externalIdstring nullable

Your id for the quote this request created, such as the TMS quote number. Augment stores it against augmentQuoteId.

quotedAtstring date-time required

When the rate was produced, in UTC

currency'USD' | 'CAD' required

Currency for every money field in the response. Cross-border lanes are in scope, so CAD is supported.

totalMilesnumber nullable

The mileage the rates were actually priced against. Augment prefers this over the estimate it sent, and extends PER_MILE accessorials with it.

noRateReason'LANE_NOT_SERVICED' | 'NO_CAPACITY' | 'EQUIPMENT_NOT_SUPPORTED' | 'HAZMAT_NOT_SUPPORTED' | 'OVERSIZE_OUT_OF_SCOPE' | 'COMMODITY_RESTRICTED' | 'CUSTOMER_NOT_FOUND' | 'MISSING_REQUIRED_INPUT' | 'RATE_UNAVAILABLE' | 'OTHER' | 'null' nullable

Why there is no rate. Required when rates is empty, and null whenever rates has at least one entry.

An enum rather than free text so Augment can route the quote without parsing a message. MISSING_REQUIRED_INPUT is the only value Augment can act on automatically: the request was well formed but did not carry a value the provider requires, so Augment can obtain it from the customer and retry. Every other value is final for that shipment and routes the quote to a rep.

noRateDetailstring nullable

Optional free text expanding on noRateReason, shown to the rep working the quote. Augment does not parse it.

Example response

{
  "rates": [
    {
      "source": "ATS_SPECIALIZED",
      "accessorials": [
        {
          "code": "AFTER_HOURS"
        }
      ]
    }
  ]
}

Changes

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