Skip to main content
POST
List Shipper Quotes

Authorizations

x-arms-api-key
string
header
required
x-arms-assume-user
string
header
required

Body

application/json
aar_car_type_pattern
string

Optional exact AAR/UMET car type pattern (for example "A-4" for plug doors) used for quote equipment assumptions and ARCT condition evaluation.

car_types
enum<string>[]

Optional car type overrides used for rating/equipment assumptions. Deprecated for new clients in favor of equipment_profiles, which also supports special quote-only types and additional measurement ranges. When provided, quote search matches rates for any selected car type.

Available options:
ALL_CAR_TYPES,
BI_LEVEL,
BOX_CAR,
BULKHEAD,
CLOSED,
CLOSED_BI_LEVEL,
CLOSED_TRI_LEVEL,
COIL,
COVERED_COIL,
COVERED_GONDOLA,
CUSHIONED_BOX_CAR,
FLAT_PEDESTAL,
GONDOLA,
GRAVITY_FLOW,
INSULATED_BOX_CAR,
MECHANICAL_REFRIGERATOR,
OPEN,
OPEN_COIL_CARS,
OPEN_GONDOLA,
OPEN_HOPPER,
PLUG_DOORS,
TRI_LEVEL,
TRIPLE_CROSS_HOPPER
contents
object
contract_cifs
string[]

Contract CIF filters. If provided, matching contract quotes are included in addition to tariff results.

destination
object
destination_cifs
string[]

Customer CIFs at the destination; SCRS counterpart of origin_cifs for destinations.

destination_unknown
boolean

Rule 11 segment pricing counterpart of origin_unknown: continuation beyond the destination gateway is unknown and unpriced. Same geography handling and junction-narrowing as origin_unknown. Requires method_of_payment = RULE_11.

destinations
object[]

List of candidate destination locations. Prefer this over the single destination input.

equipment_ownership_statuses
enum<string>[]

Optional equipment ownership status filters. When provided, quote search matches rates whose EQOS conditions include any of the selected statuses.

Equipment ownership status categories used in EQOS shipment conditions.

  • HIGHWAY_CARRIER: H - Highway carrier
  • SHIPPER_OWNED_OR_LEASED: S - Shipper owned or leased
  • STEAMSHIP_LINES: O - Steamship lines
  • RAILROAD_OWNED_OR_LEASED: R - Railroad owned or leased
Available options:
HIGHWAY_CARRIER,
SHIPPER_OWNED_OR_LEASED,
STEAMSHIP_LINES,
RAILROAD_OWNED_OR_LEASED
equipment_profile_names
string[]

Equipment filters selected by name from your saved quote preferences, so a caller that already has equipment saved does not have to restate it. Read the available names from GetQuotePreferences.favorite_equipment_profile_sets.

Each entry names either:

  • a saved profile (EquipmentProfileSet.profiles[].name, e.g. "60HCBC"), which selects that one profile; or
  • a saved set (EquipmentProfileSet.name, e.g. "Boxcars"), which selects EVERY profile in that set. Profile names are resolved first, so when a profile and a set share a name the profile wins. Matching ignores case and surrounding whitespace.

Resolved profiles are added to whatever equipment_profiles contains, and the search then matches rates for ANY selected profile — exactly as if the saved profiles had been spelled out inline. Duplicates (naming a set and one of its members) collapse.

A name that matches no saved profile or set fails the request with INVALID_ARGUMENT rather than being skipped, because silently dropping it would widen the search instead of narrowing it. Naming a set that has no profiles fails the same way. Like equipment_profiles, this field cannot be combined with aar_car_type_pattern.

equipment_profiles
object[]

Optional equipment profile filters, spelled out inline. When provided, quote search matches rates for any selected profile.

Prefer equipment_profile_names when the equipment is already saved in your quote preferences — there is no need to copy a saved profile's car type, measurements, etc. into the request. Use this field for equipment that is NOT saved, or to override a saved profile for one search.

As a legacy shorthand, an entry that sets ONLY name (no car_type / special_car_type) is resolved against your saved profiles exactly as if the name had been sent in equipment_profile_names. An entry that sets a car type is taken literally and its name is ignored, so none of the saved profile's own fields are merged in.

exclude_carriers
string[]

Carriers (reporting marks / SCAC, for example "BNSF", "UP") to exclude from routing. Any candidate route that involves one of these carriers on any leg is dropped from the results. Empty means no carrier exclusion is applied. Compared case-insensitively.

exclude_junctions
string[]

Junction / gateway codes (for example "DIANN") to exclude from routing. Any candidate route that interchanges through one of these junctions is dropped from the results. Empty means no junction exclusion is applied. Compared case-insensitively.

method_of_payment
enum<string>
Available options:
PREPAID,
COLLECT,
RULE_11
number_of_cars
integer<int32>

Number of cars requested for the movement. Omitted/0 defaults to 1.

origin
object
origin_cifs
string[]

Customer CIFs at the origin. When provided, candidate origin stations are filtered to those onto which at least one of these customers may switch traffic under SCRS (Serving Carrier Reciprocal Switch) rules. Empty means no SCRS origin restriction is applied.

origin_unknown
boolean

Rule 11 segment pricing: the true origin of the movement is unknown; the origin geographies (any supported form — city/state, FSAC, SPLC, or junction) locate the KNOWN gateway where the movement enters the priced portion. The location is narrowed to its stations at an interchange junction; a location with no junction station fails with INVALID_ARGUMENT (LOCATION_HAS_NO_GATEWAY). The priced portion is rated as part of a larger Rule 11 move arriving via that gateway (prior movement unpriced). Requires method_of_payment = RULE_11. May be combined with destination_unknown to price a bridge segment between two gateways.

origins
object[]

List of candidate origin locations. This should be at most a handful, preferably fewer than 10. Prefer this over the single origin input.

route
object
route_match_mode
enum<string>

How a requested route (ListQuotesRequest.route) limits the routes a quote search returns.

The requested route is read as a sequence of carrier and junction tokens — "CSXT-CHLTE-NS" is the three tokens CSXT, CHLTE, NS — and every token supplied must match under either mode. The sequence alternates carrier and interchange junction, so leaving a token out is not a wildcard: "CSXT-NS" asks for NS as CSXT's interchange junction, and therefore matches neither "CSXT-CHLTE-NS" nor a two-carrier CSXT-to-NS routing.

Switch carriers are the one exception, under both modes. The requested route is compared against the whole physical movement — the same carrier sequence Quote.route reports, switch carriers included — and every switch carrier on it is optional: name all of them, some of them, or none. For a movement SW1-SW2-RR1 whose SW1 and SW2 are switch carriers, each of "RR1", "SW1-RR1", "SW2-RR1" and "SW1-SW2-RR1" matches, while "SW3-RR1" and "SW1-RR2" do not — a switch carrier that IS named must be on the movement, in order. This is what lets a route string copied out of a response's Quote.route be sent straight back in a request, and it is why an exact match on "RR1" still matches a movement that begins or ends with switching. Line-haul carriers are never optional.

One switch carrier on a movement cannot be named: one the quote reports no leg for. Deriving switch carriers can put a bridge on the route that priced nothing — it is drawn because dropping it would describe an interchange that cannot physically happen, but the quote shows no leg, no charge and no mileage for it, and its junctions are where siting that absent leg put them rather than where any rate says the car changed hands. Naming it, or a junction it contributed, matches nothing; leaving it out is unaffected, exactly as for any other switch carrier. So the round trip above holds for every carrier a quote has a leg for, and only for those.

A requested route naming only switch carriers constrains nothing on the line haul and matches nothing. Name at least one line-haul carrier.

  • ROUTE_MATCH_MODE_STARTS_WITH: The requested route is a prefix: a route matches when it begins with the requested tokens, and may continue past them onto further carriers and junctions. "UP" returns every route that starts on UP; "CSXT-CHLTE-NS" also returns CSXT-CHLTE-NS-XXXXX-CN and any other continuation.
  • ROUTE_MATCH_MODE_EXACT: The requested route is the whole route: a route matches only when its carrier/junction sequence is exactly the one requested, so the movement ends where the request ends. "UP" returns only UP-local movements; "CSXT-CHLTE-NS" returns only that two-carrier routing. Switching is the exception described above: the movement may still begin or end with switch carriers that were not named, so an exact "UP" also returns a UP movement bracketed by origin and delivery switches.
Available options:
ROUTE_MATCH_MODE_STARTS_WITH,
ROUTE_MATCH_MODE_EXACT
ship_date
string

Desired shipment date used for applicability/rating in ISO8601 format. Use YYYY-MM-DD (for example: "2026-03-03").

Response

A successful response.

quotes
object[]

Candidate quotes returned for the request.