---
title: "Page a carrier’s benchmark violations"
method: GET
path: "/v1/carriers/{dot_number}/safety-benchmark/violations"
---

# Page a carrier’s benchmark violations

`GET /v1/carriers/{dot_number}/safety-benchmark/violations`

## Request

- Base URL: `https://api.runalphaloops.com`
- URL: `https://api.runalphaloops.com/v1/carriers/{dot_number}/safety-benchmark/violations`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/runalphaloops/apis/alphaloops-fmcsa-carrier-data-api/docs/v1/carriers/:dot_number/safety-benchmark/violations/get.ts> (a function with typed inputs; its response is checked against the schema)

The violations section of the safety benchmark on its own, paginated. Same peer framing and row shape as the parent endpoint, sorted worst over-index first.

## Path parameters

- `dot_number` string, required

## Query parameters

- `peer_group` string
- `peer_key` string
- `limit` integer
- `page` integer

## Response `200`

One page of violation standings

- SafetyBenchmarkViolationsPage
  - `dot_number` integer
  - `as_of` string, date, nullable
  - `peer_group` ResolvedPeerGroup: The peer frame the comparison was placed in.
    - `group_type` string
    - `label` string
    - `peer_key` string, nullable: The carrier’s bucket within the lens; null when unresolvable
    - `n` integer, nullable: Bucket size
    - `reliable` boolean: n >= 384; thin buckets are returned flagged, never hidden
    - `available` boolean: false when the carrier’s profile is missing an axis this lens needs — the fixed grade still returns, only the comparison is omitted
  - `violations` SafetyBenchmarkViolation[]
    - `unit` string, nullable
    - `unit_id` string
    - `family` string, nullable
    - `basic` string, nullable: FMCSA BASIC category
    - `severity` number, nullable
    - `eligible_denominator` boolean: true when both sides used the eligible-inspection denominator (vehicle-condition families are only citable at CVSA levels 1/2/5)
    - `carrier` object
      - `times_cited` integer, nullable
      - `last_cited_date` string, date, nullable
      - `days_since` integer, nullable
      - `trend_direction` string, nullable
      - `trend_slope_per_yr` number, nullable
      - `rate_per_1k` number, nullable: The rate the carrier is judged on, per the eligible_denominator rule
      - `total_inspections` integer, nullable
      - `q_citations` number[], nullable: Trailing quarters, oldest first
      - `q_inspections` number[], nullable
      - `q_inspections_eligible` number[], nullable
    - `peer` object, nullable: null when the lens resolves no bucket for this family
      - `rate_per_1k` number, nullable
      - `rate_per_1k_eligible` number, nullable
      - `oos_pct` number, nullable
      - `group_carriers` integer, nullable
      - `group_inspections` integer, nullable
      - `low_sample` boolean
      - `q_rate_per_1k` number[], nullable
      - `q_starts` string[], nullable
    - `over_index` number, nullable: carrier rate ÷ peer rate: 1.0 = at peer, 2.0 = double. Always computed from matched denominators; null when the peer side is missing.
  - `pagination` Pagination
    - `page` integer
    - `limit` integer
    - `total_results` integer
    - `total_pages` integer

## Other responses

- `400`: Invalid parameters
- `401`: Invalid or missing API key
- `404`: Carrier has no safety benchmark
- `429`: Too many requests. Check X-RateLimit-Remaining and Retry-After headers.

## Changes

- **2026-08-18** `ae58c064a7af`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/runalphaloops/apis/alphaloops-fmcsa-carrier-data-api/changes/v1/carriers/:dot_number/safety-benchmark/violations/get.md)

---

[API](https://skmtc.dev/runalphaloops/apis/alphaloops-fmcsa-carrier-data-api.md) - [All operations](https://skmtc.dev/runalphaloops/apis/alphaloops-fmcsa-carrier-data-api/llms.txt) - [OpenAPI document](https://skmtc.dev/runalphaloops/apis/alphaloops-fmcsa-carrier-data-api/revisions/ae58c064a7af?raw)
