---
title: "Get aggregated carrier risk signals"
method: GET
path: "/v1/carriers/{dot_number}/risk-signals"
---

# Get aggregated carrier risk signals

`GET /v1/carriers/{dot_number}/risk-signals`

Aggregated carrier risk assessment in a single call. Returns an AI-generated risk score (0-10) and level, plus six signal categories — authority-for-sale listings, equipment-for-sale marketplace matches, financial-distress indicators, fraud/chameleon patterns, historical authority/insurance/change-event patterns, and recent news sentiment. Each category carries a derived level of "high", "medium", "clear", or "unknown". The risk summary is cached; pass force_refresh=true to force regeneration.

## Path parameters

- `dot_number` string, required

## Query parameters

- `force_refresh` boolean
- `include_equipment` boolean

## Response `200`

Scored risk header plus six derived signal categories

- RiskSignalsResponse
  - `dot_number` string
  - `carrier_name` string, nullable
  - `location` object
    - `city` string, nullable
    - `state` string, nullable
  - `risk_score` number, nullable — AI-generated 0–10 risk score
  - `risk_level` string — CRITICAL, HIGH, MEDIUM, LOW, CLEAR, or UNKNOWN
  - `summary` string, nullable
  - `generated_at` string, date-time, nullable
  - `cached` boolean, nullable
  - `summary_available` boolean — False when the upstream summary service was unavailable and a carrier-stored fallback was used.
  - `signals` object
    - `authority_for_sale` object
      - `level` 'high' | 'medium' | 'clear' | 'unknown' — Derived severity for a single signal category.
      - `subtitle` string
      - `evidence_summary` string, nullable
      - `mc_sale` object, nullable
    - `equipment_for_sale` object
      - `level` 'high' | 'medium' | 'clear' | 'unknown' — Derived severity for a single signal category.
      - `subtitle` string
      - `match_count` integer
      - `matches` object[], nullable
    - `financial_risk` object
      - `level` 'high' | 'medium' | 'clear' | 'unknown' — Derived severity for a single signal category.
      - `subtitle` string
      - `confidence` string, nullable
      - `issues` string[]
      - `details` string, nullable
      - `source` string, nullable
      - `source_domains` string[]
    - `fraud_signals` object
      - `level` 'high' | 'medium' | 'clear' | 'unknown' — Derived severity for a single signal category.
      - `subtitle` string
      - `is_chameleon` boolean
      - `confidence` string, nullable
      - `indicators` string[]
      - `details` string, nullable
      - `relationship_risk_summary` string, nullable
    - `historical_patterns` object
      - `level` 'high' | 'medium' | 'clear' | 'unknown' — Derived severity for a single signal category.
      - `subtitle` string
      - `triggered_combos` RiskTriggeredCombo[]
        - `key` string — Stable combo identifier (e.g. sold_mc_signature_30d)
        - `label` string — Human-readable description
        - `severity` 'high' | 'medium'
      - `insurance` object, nullable
      - `authority` object, nullable
      - `change_events` object, nullable
    - `recent_activity` object
      - `level` 'high' | 'medium' | 'clear' | 'unknown' — Derived severity for a single signal category.
      - `subtitle` string
      - `negative_article_count` integer
      - `article_count` integer

## Other responses

- `401` — Invalid or missing API key
- `404` — Carrier does not exist
- `429` — Too many requests. Check X-RateLimit-Remaining and Retry-After headers.

---

[API](https://skmtc.net/runalphaloops/apis/alphaloops-fmcsa-carrier-data-api.md) · [All operations](https://skmtc.net/runalphaloops/apis/alphaloops-fmcsa-carrier-data-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/runalphaloops/alphaloops-fmcsa-carrier-data-api/versions/dcfdb73e5778/schema)
