Get Carrier Risk Indices
carrier_scoreGet the CarrierScore risk indices for a carrier by US DOT number: two first-class, separately validated indices (0-100, HIGHER = RISKIER), each with a full component breakdown.
This is the core "is this carrier safe to book?" signal for AI booking agents. Served methodology v0.5 returns TWO indices, both population-relative and built from point-in-time public FMCSA data:
inspection_risk — inspection / compliance risk: violations and out-of-service rates per roadside inspection (24-month chronic, 6-month acute). Historically validated against the carrier's future out-of-service rate (validation block on the index).
crash_risk — crash risk: reportable crashes, fatal/injury crashes and tow-away crashes per roadside inspection (24 months). Historically validated against future reportable crashes (validation block on the index). Present BOTH indices; do not collapse them into one number. Hard flags (active out-of-service order, no active insurance filing, high-confidence reincarnated-carrier link) add explicit surcharges — a carrier with any flag deserves extra scrutiny regardless of index values.
Returns JSON: { dot_number, legal_name, inspection_risk: { label, description, score, base, surcharge, percentile_basis, band, band_note, data_sufficiency, components: { : { label, value, percentile, weight } }, validation: { auc_holdout, label, holdout_origins, post_selection_origin, source, text } }, crash_risk: { ...same shape... }, legacy_composite: { score, base_score, surcharge, rule, rule_text, validated: false, note }, carrier_score (backward-compatible: == legacy_composite.score under v0.5), base_score, surcharge, score_version ("0.5"), methodology_note, components (flat, backward-compatible), flags: string[], data_sufficiency (0-1, share of the components resting on observed vs neutral-imputed data), scored_as_of, disclaimer }. Older opt-in methodologies keep their shapes: v0 (six components), v0.3 (sub_indices), v0.4 (indices + composite).
Interpreting for booking decisions: treat the indices as documented decision-support evidence, not an approve/deny verdict. legacy_composite / carrier_score is NOT validated and is kept only so older integrations keep working — never present it as the carrier's risk score. Low data_sufficiency means limited inspection history — common for new carriers, itself a risk signal. Always relay each index's validation text and the disclaimer when presenting the result.
Errors: 404 if the DOT is not in the scored population; 503 if scores have not been computed yet.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| dot_number | Yes | US DOT number of the carrier, digits only (e.g. "1234567") |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| flags | Yes | Hard flags (OOS order, no insurance, reincarnation link) | |
| indices | No | v0.4 only: inspection_risk / crash_risk first-class indices (0-100), each with components, percentile basis and band | |
| composite | No | v0.4 only: how the headline carrier_score is derived from the two indices | |
| surcharge | No | Additional points from hard flags | |
| base_score | No | Score before hard-flag surcharges (v0.5: legacy composite base) | |
| components | Yes | Flat component map keyed by component name (v0.5: within-index weights of both indices, for backward compatibility; the per-index components live under inspection_risk / crash_risk) | |
| crash_risk | No | v0.5 (served default): CRASH RISK index 0-100 (higher = riskier) — crashes, fatal/injury and tow-away crashes per roadside inspection relative to the population; validated against future reportable crashes. Read this second. | |
| disclaimer | No | Methodology disclaimer — relay verbatim | |
| dot_number | Yes | US DOT number | |
| legal_name | No | ||
| sub_indices | No | v0.3 only: inspection_risk / crash_risk sub-indices (0-100) and their weights | |
| scored_as_of | No | Date of the scoring run (YYYY-MM-DD) | |
| carrier_score | No | 0-100, higher = riskier. Under v0.5 this equals legacy_composite.score (kept for backward compatibility); under v0/v0.3/v0.4 it is that version's headline score | |
| score_version | No | Documented methodology version ("0.5" is the served default; "0", "0.3", "0.4" are opt-in) | |
| inspection_risk | No | v0.5 (served default): INSPECTION / COMPLIANCE RISK index 0-100 (higher = riskier) — violations and out-of-service rates per roadside inspection relative to the population; validated against future out-of-service rate. Read this first. | |
| data_sufficiency | No | 0-1: share of the score resting on observed vs neutral-imputed data | |
| legacy_composite | No | v0.5: backward-compatible legacy composite (0.70 x higher index + 0.30 x lower index + surcharges). Not validated, not the headline — do not present it as the carrier's risk score. | |
| methodology_note | No | One-line description of the weighting used |