---
title: "Get carrier compliance rules by USDOT (single or batch)"
method: GET
path: "/compliance-rules"
tags: ["Compliance Rules"]
---

# Get carrier compliance rules by USDOT (single or batch)

`GET /compliance-rules`

Returns carrier compliance rules for one or more USDOT numbers.
- Single mode: provide `usdot_number`. The response shape is a single
  object with `rules` and `rule_status` and is fully backward compatible
  with the existing API.
- Batch mode: provide `usdot_numbers` as a comma-separated list. The
  response shape is an object with a `results` array where each item
  represents one USDOT and includes a `found` flag.

When both `usdot_number` and `usdot_numbers` are provided, `usdot_numbers` takes precedence and `usdot_number` is ignored.
The maximum number of USDOT values allowed in `usdot_numbers` is limited to 50. Requests that exceed this limit return HTTP 400.
Each batch result item uses `found=false` when no vetting data exists for that USDOT. In that case the item only contains `usdot_number` and `found`. When `found=true`, `rules` and `rule_status` are populated with the same structure as the single-USDOT response.
Examples:
- Single:
  `/compliance-rules?usdot_number=1234567`
- Batch:
  `/compliance-rules?usdot_numbers=1234567,7654321`

## Query parameters

- `usdot_number` string
- `usdot_numbers` string

## Response `200`

Compliance rules retrieved successfully (single or batch).
- Single: single carrier response (rules + rule_status). - Batch: list of per-carrier results with `found` flags.

- union
  - CarrierRulesSingleResponse
    - `rules` CarrierRuleItem[], required
      - `rule_result_description` string, required
      - `status` string, required — PASS / FAIL / REVIEW
      - `category` string, required
      - `rule_order` string
    - `rule_status` CarrierRuleStatusCounts, required
      - `pass` object, required
        - `total` integer, required
      - `fail` object, required
        - `total` integer, required
      - `review` object, required
        - `total` integer, required
  - CarrierRulesBatchResponse
    - `results` CarrierRulesBatchResultItem[], required
      - `usdot_number` string, required
      - `found` boolean, required
      - `rules` CarrierRuleItem[]
        - `rule_result_description` string, required
        - `status` string, required — PASS / FAIL / REVIEW
        - `category` string, required
        - `rule_order` string
      - `rule_status` CarrierRuleStatusCounts
        - `pass` object, required
          - `total` integer, required
        - `fail` object, required
          - `total` integer, required
        - `review` object, required
          - `total` integer, required

## Other responses

- `400` — Bad Request – invalid input, missing required query parameters, or exceeding the maximum allowed number of USDOT values.
- `401` — Unauthorized – Invalid or missing Access-Token.
- `403` — Forbidden – Company user does not have vetting access permission.
- `404` — Not Found – no vetting data exists for any of the requested USDOT numbers.
- `500` — Internal Server Error.

---

[API](https://skmtc.dev/genlogs/apis/auth-api-create-token.md) · [All operations](https://skmtc.dev/genlogs/apis/auth-api-create-token/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/genlogs/auth-api-create-token/revisions/bf34c2431a21/schema)
