Introduction

The LINQ API gives you programmatic access to the most comprehensive carrier intelligence database ever built — 2.8 million carrier profiles, 26M+ data points across 16 FMCSA datasets, enriched with tech stack intelligence and real-time risk signals.

The API follows REST conventions. All requests and responses use JSON. Authentication uses API key headers. TLS is required on all endpoints.

DetailValue
Base URLapi.morprolinq.com/v1
ProtocolHTTPS only
FormatJSON (UTF-8)

Authentication

LINQ uses API key authentication. Include your key in the X-Manifest-Key header on every request. Never expose your API key in client-side code — always call the API from your backend.

Key PrefixEnvironmentDescription
mfst_sk_...ProductionCounts against your monthly quota. Use for live applications.
mfst_sk_test_...TestSandbox data only. Free, unlimited calls. No real carrier data.
bash
curl "https://api.morprolinq.com/v1/carriers/1234567" \
  -H "X-Manifest-Key: mfst_sk_xxxxxxxxxxx" \
  -H "Content-Type: application/json"

Base URL & Versioning

All API requests are made to the following base URL:

The current version is v1. Version is included in the URL path. When breaking changes are introduced, a new version will be released and the old version will be deprecated with 90 days notice.

text
https://api.morprolinq.com/v1

Rate Limits

Rate limits are applied per API key, per minute and per month based on your plan. When you exceed a rate limit, the API returns a 429 Too Many Requests response.

Check the X-RateLimit-Remaining and X-RateLimit-Reset response headers to monitor your usage.

PlanPer MinutePer MonthPrice
Free10 requests100 calls$0
Pro120 requests10,000 calls$299/mo
Enterprise1,000 requestsUnlimitedCustom
text
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 42
X-RateLimit-Reset: 1710345600

Errors

LINQ uses standard HTTP status codes. All errors return a JSON body with a code and message field.

CodeStatusDescription
200OKRequest succeeded.
400Bad RequestMissing or invalid parameters.
401UnauthorizedInvalid or missing API key.
404Not FoundCarrier DOT number not found in database.
429Too Many RequestsRate limit exceeded. Check X-RateLimit-Reset.
500Server ErrorSomething went wrong on our end. We're alerted automatically.
json
{
  "code": "NOT_FOUND",
  "message": "No carrier found with DOT number 9999999"
}
GET/v1/carriers/:dotCarriers

GET Carrier Profile

Returns a complete operational profile for a carrier by DOT number. Includes authority status, safety rating, fleet size, contact info, and key compliance flags.

Path Parameters

NameTypeDescription
dot*stringUSDOT number of the carrier (e.g. "1234567")
Request
curl "https://api.morprolinq.com/v1/carriers/1234567" \
  -H "X-Manifest-Key: mfst_sk_xxxxxxxxxxx"
Response
{
  "dot_number": "1234567",
  "legal_name": "APEX FREIGHT SOLUTIONS LLC",
  "dba_name": "APEX FREIGHT",
  "entity_type": "CARRIER",
  "operating_status": "AUTHORIZED FOR HHG",
  "physical_address": "1200 Industrial Blvd, Dallas, TX 75201",
  "phone": "(214) 555-0192",
  "email": "dispatch@apexfreight.com",
  "carrier_operation": "Interstate",
  "cargo_carried": ["General Freight", "Refrigerated Food"],
  "total_drivers": 47,
  "total_power_units": 52,
  "added_date": "2018-03-14"
}
GET/v1/carriers/:dot/authorityCarriers

GET Authority

Returns current authority status and full history of authority grants, revocations, and reinstatements. Essential for vetting carrier reliability over time.

Path Parameters

NameTypeDescription
dot*stringUSDOT number of the carrier
Request
curl "https://api.morprolinq.com/v1/carriers/1234567/authority" \
  -H "X-Manifest-Key: mfst_sk_xxxxxxxxxxx"
Response
{
  "dot_number": 1234567,
  "docket_number": "MC-123456",
  "common_authority": "ACTIVE",
  "contract_authority": "ACTIVE",
  "broker_authority": "NONE",
  "common_app_pending": false,
  "contract_app_pending": false,
  "broker_app_pending": false,
  "common_revocation_pending": false,
  "contract_revocation_pending": false,
  "broker_revocation_pending": false,
  "property": true,
  "passenger": false,
  "hhg": false,
  "enterprise": false,
  "private_auth": false,
  "bipd_file": "Y",
  "cargo_file": "Y",
  "bond_file": "N",
  "cargo_required": "Y",
  "bond_required": "N",
  "min_cov_amount": "750000",
  "mx_type": null,
  "rfc_number": null,
  "business_address": {
    "street": "1200 INDUSTRIAL BLVD",
    "city": "DALLAS",
    "state": "TX",
    "zip": "75201"
  },
  "mail_address": {
    "street": "PO BOX 4410",
    "city": "DALLAS",
    "state": "TX",
    "zip": "75208"
  },
  "authority_history": [
    {
      "docket_number": "MC-123456",
      "sub_number": "1",
      "action": "GRANT OF AUTHORITY",
      "served_date": "2018-03-14",
      "disp_served_date": "2018-03-20",
      "disposition": "GRANTED",
      "disposition_date": "2018-03-20"
    }
  ]
}
GET/v1/carriers/:dot/safetyCarriers

GET Safety (SMS)

Returns FMCSA Safety Measurement System (SMS) scores across all 7 BASIC categories, percentile rankings, and the carrier's official safety rating.

Path Parameters

NameTypeDescription
dot*stringUSDOT number of the carrier
Request
curl "https://api.morprolinq.com/v1/carriers/1234567/safety" \
  -H "X-Manifest-Key: mfst_sk_xxxxxxxxxxx"
Response
{
  "dot_number": "1234567",
  "safety_rating": "SATISFACTORY",
  "safety_rating_date": "2022-06-15",
  "basics": {
    "unsafe_driving": { "measure": 3.2, "percentile": 22, "alert": false },
    "hours_of_service": { "measure": 1.8, "percentile": 15, "alert": false },
    "driver_fitness": { "measure": 0.5, "percentile": 8, "alert": false },
    "controlled_substances": { "measure": 0.0, "percentile": 0, "alert": false },
    "vehicle_maintenance": { "measure": 4.1, "percentile": 34, "alert": false },
    "hazmat_compliance": { "measure": 0.0, "percentile": 0, "alert": false },
    "crash_indicator": { "measure": 0.8, "percentile": 18, "alert": false }
  },
  "total_inspections": 127,
  "total_violations": 23,
  "oos_rate_vehicle": 0.12,
  "oos_rate_driver": 0.04
}

Percentile scores range from 0-100. Higher percentiles indicate worse relative performance. FMCSA alert thresholds vary by BASIC category (typically 65-80th percentile).

GET/v1/carriers/:dot/inspectionsCarriers

GET Inspections

Returns paginated roadside inspection records. Includes BASIC category breakdowns, driver/vehicle OOS flags, and inspection outcomes.

Path Parameters

NameTypeDescription
dot*stringUSDOT number of the carrier

Query Parameters

NameTypeDescription
pageintegerPage number (default: 1)
limitintegerRecords per page, max 100 (default: 25)
fromdateFilter from date (YYYY-MM-DD)
todateFilter to date (YYYY-MM-DD)
Request
curl "https://api.morprolinq.com/v1/carriers/1234567/inspections?limit=5" \
  -H "X-Manifest-Key: mfst_sk_xxxxxxxxxxx"
Response
{
  "dot_number": "1234567",
  "total": 127,
  "page": 1,
  "limit": 5,
  "inspections": [
    {
      "inspection_id": "TX2024031401",
      "inspection_date": "2024-03-14",
      "state": "TX",
      "level": 1,
      "basic_violations": ["Unsafe Driving"],
      "vehicle_oos": false,
      "driver_oos": false,
      "hazmat": false
    }
  ]
}
GET/v1/carriers/:dot/violationsCarriers

GET Violations

Returns all violation records enriched with section descriptions, BASIC group classifications, and severity indicators.

Path Parameters

NameTypeDescription
dot*stringUSDOT number of the carrier
Request
curl "https://api.morprolinq.com/v1/carriers/1234567/violations" \
  -H "X-Manifest-Key: mfst_sk_xxxxxxxxxxx"
Response
{
  "dot_number": "1234567",
  "total_violations": 23,
  "violations": [
    {
      "inspection_id": "TX2024031401",
      "violation_date": "2024-03-14",
      "code": "392.2",
      "description": "Failing to obey traffic control device",
      "basic_category": "Unsafe Driving",
      "severity_weight": 5,
      "oos": false,
      "time_weight": 3
    }
  ]
}
GET/v1/carriers/:dot/crashesCarriers

GET Crashes

Returns crash records enriched with weather conditions, road type, hazmat involvement, fatalities, and vehicle classification details.

Path Parameters

NameTypeDescription
dot*stringUSDOT number of the carrier
Request
curl "https://api.morprolinq.com/v1/carriers/1234567/crashes" \
  -H "X-Manifest-Key: mfst_sk_xxxxxxxxxxx"
Response
{
  "dot_number": "1234567",
  "total_crashes": 3,
  "crashes": [
    {
      "report_number": "TX-2023-08912",
      "crash_date": "2023-09-22",
      "state": "TX",
      "city": "Fort Worth",
      "fatalities": 0,
      "injuries": 1,
      "tow_away": true,
      "hazmat_released": false,
      "weather": "Clear",
      "road_surface": "Dry",
      "light_condition": "Daylight"
    }
  ]
}
GET/v1/carriers/:dot/insuranceCarriers

GET Insurance

Returns active policies, full filing history (including cancellation date + method), docket-keyed history, rejected filings with reasons, plus derived rollups: per-category active coverage (BIPD/Cargo/Bond/Endorsement), lifetime insurer timeline, BIPD coverage gaps, and upcoming-cancellation alerts within 90 days. The headline fields for lead-gen are `summary.earliest_cancellation_date` and `cancellations_upcoming` — both surface carriers whose coverage is set to lapse soon.

Path Parameters

NameTypeDescription
dot*stringUSDOT number of the carrier
Request
curl "https://api.morprolinq.com/v1/carriers/1234567/insurance" \
  -H "X-Manifest-Key: mfst_sk_xxxxxxxxxxx"
Response
{
  "dot_number": 1234567,
  "summary": {
    "total_active_coverage": 1000000,
    "active_policies": 1,
    "total_policies_on_record": 8,
    "insurers_on_record": 3,
    "min_required_coverage": 750000,
    "coverage_meets_minimum": true,
    "coverage_gap_days": 0,
    "coverage_gap_count": 0,
    "rejected_filings": 0,
    "latest_change": "2026-03-18",
    "earliest_cancellation_date": "2026-08-15"
  },
  "by_category": {
    "bipd": { "count": 1, "total_coverage": 1000000, "latest_effective": "2026-03-18" },
    "cargo": { "count": 0, "total_coverage": 0,       "latest_effective": null },
    "bond": { "count": 0, "total_coverage": 0,       "latest_effective": null },
    "endorsement": { "count": 0, "total_coverage": 0,       "latest_effective": null },
    "other": { "count": 0, "total_coverage": 0,       "latest_effective": null }
  },
  "active_policies": [
    {
      "source": "active",
      "company": "AGENCY INSURANCE COMPANY OF MARYLAND, INC",
      "policy_number": "CA 0065307",
      "docket_number": "MC1731938",
      "form_code": "91X",
      "form_description": "Bodily Injury & Property Damage",
      "form_category": "bipd",
      "class_code": null,
      "type_code": null,
      "type_description": null,
      "effective_date": "2026-03-18",
      "transaction_date": "2026-03-19",
      "cancellation_date": "2026-08-15",
      "cancellation_method": null,
      "coverage_amount": 1000000,
      "underlying_limit": 0,
      "min_coverage_amount": null,
      "insurer_branch": null,
      "is_active": true,
      "days_to_cancellation": 87,
      "policy_age_days": 57,
      "expired": false
    }
  ],
  "history": [ "..." ],
  "history_alt": [ "..." ],
  "rejected_filings": [ "..." ],
  "insurer_timeline": [
    { "company": "AGENCY INSURANCE COMPANY OF MARYLAND, INC", "first_effective": "2026-03-18", "last_effective": "2026-03-18", "total_policies": 1 }
  ],
  "coverage_gaps": [],
  "cancellations_upcoming": [
    { "company": "AGENCY INSURANCE COMPANY OF MARYLAND, INC", "form": "Bodily Injury & Property Damage", "on": "2026-08-15", "in_days": 87 }
  ]
}

FMCSA encodes coverage amounts in thousands; this endpoint converts them to dollars. `summary.earliest_cancellation_date` is the soonest scheduled cancellation across active policies (null if none). `cancellations_upcoming` lists active policies cancelling within 90 days — sort by `in_days` ascending for time-critical lead lists.

GET/v1/carriers/:dot/fleetCarriers

GET Fleet

Returns current fleet composition including power units, drivers, and equipment breakdowns.

Path Parameters

NameTypeDescription
dot*stringUSDOT number of the carrier
Request
curl "https://api.morprolinq.com/v1/carriers/1234567/fleet" \
  -H "X-Manifest-Key: mfst_sk_xxxxxxxxxxx"
Response
{
  "dot_number": "1234567",
  "total_drivers": 47,
  "total_power_units": 52,
  "mcs150_date": "2024-01-10",
  "mcs150_mileage": 4200000,
  "mcs150_mileage_year": 2023,
  "carrier_operation": "Interstate",
  "hazmat": false,
  "passenger": false
}
GET/v1/carriers/:dot/cargoCarriers

GET Cargo

Returns all 30 FMCSA cargo capability flags with human-readable labels. Shows exactly what types of freight a carrier is authorized and equipped to haul.

Path Parameters

NameTypeDescription
dot*stringUSDOT number of the carrier
Request
curl "https://api.morprolinq.com/v1/carriers/1234567/cargo" \
  -H "X-Manifest-Key: mfst_sk_xxxxxxxxxxx"
Response
{
  "dot_number": 1234567,
  "total_types": 3,
  "cargo_carried": ["General Freight", "Fresh/Frozen Foods", "Chemicals"],
  "other_description": null,
  "hazmat": true,
  "passenger": false,
  "flags": {
    "crgo_genfreight": true,
    "crgo_coldfood": true,
    "crgo_chem": true,
    "crgo_household": false,
    "...": "28 more flags"
  }
}
GET/v1/carriers/:dot/documentsCarriers

GET Documents

Returns registration documents, docket numbers with status codes, MCS-150 filing details, insurance filing requirements, and D&B number.

Path Parameters

NameTypeDescription
dot*stringUSDOT number of the carrier
Request
curl "https://api.morprolinq.com/v1/carriers/1234567/documents" \
  -H "X-Manifest-Key: mfst_sk_xxxxxxxxxxx"
Response
{
  "dot_number": 1234567,
  "dockets": [
    { "number": "608558", "prefix": "MC", "status": "A" }
  ],
  "mcs150": {
    "date": "20240110",
    "mileage": 4200000,
    "mileage_year": "2023",
    "update_code": "3"
  },
  "registration_date": "20180314",
  "dun_bradstreet_no": null,
  "insurance_requirements": {
    "bipd_file": "00001",
    "cargo_file": "00001",
    "bond_file": "00000",
    "cargo_required": "Y",
    "bond_required": "N",
    "min_coverage_amount": "750000"
  }
}
GET/v1/carriers/:dot/percentilesCarriers

GET Carrier Percentiles

Compares a carrier's fleet size and driver count against state-level benchmarks. Returns the carrier's stats alongside P25/P50/P75/P90 percentiles for their domicile state.

Path Parameters

NameTypeDescription
dot*stringUSDOT number of the carrier
Request
curl "https://api.morprolinq.com/v1/carriers/1234567/percentiles" \
  -H "X-Manifest-Key: mfst_sk_xxxxxxxxxxx"
Response
{
  "dot_number": 1234567,
  "legal_name": "APEX FREIGHT SOLUTIONS LLC",
  "state": "TX",
  "carrier": { "power_units": 52, "drivers": 47 },
  "state_benchmarks": {
    "total_carriers": 48291,
    "fleet_size": { "p25": 1, "p50": 2, "p75": 5, "p90": 14 },
    "drivers": { "p25": 1, "p50": 1, "p75": 3, "p90": 8 }
  }
}
GET/v1/carriers/:dot/reportCarriers

GET Full Report

Returns a complete carrier intelligence report as a structured JSON object — or as a PDF download by passing `?format=pdf`. Aggregates all endpoints into one response.

Path Parameters

NameTypeDescription
dot*stringUSDOT number of the carrier

Query Parameters

NameTypeDescription
formatstring"json" (default) or "pdf"
Request
curl "https://api.morprolinq.com/v1/carriers/1234567/report" \
  -H "X-Manifest-Key: mfst_sk_xxxxxxxxxxx"
Response
{
  "dot_number": "1234567",
  "generated_at": "2026-05-14T12:00:00Z",
  "profile": { "..." : "Full carrier profile (148 fields + operation classifications + raw)" },
  "authority": { "..." : "Authority status, history, MX fields, business+mail telno/fax/colonia" },
  "safety": { "..." : "SMS BASIC scores + OOS rates" },
  "inspections": { "total": 127, "..." : "Recent inspections (65 fields per row + raw)" },
  "violations": [ { "..." : "Per-inspection violation summaries" } ],
  "crashes": { "total": 3, "..." : "Crash records (60 fields per row + raw)" },
  "insurance": { "..." : "Summary KPIs + by-category + active + history + history_alt + rejected + insurer_timeline + coverage_gaps + cancellations_upcoming" },
  "fleet": { "..." : "Owned + term-leased + trip-leased breakdown" },
  "cargo": { "..." : "30 cargo capability flags" },
  "documents": { "..." : "Dockets + MCS-150 + MCS-151 + D-U-N-S + insurance requirements" },
  "related": { "..." : "Carriers sharing address/phone/officer" },
  "chameleon": { "..." : "Fraud risk score + signals + related carriers" },
  "oos_orders": [ { "..." : "FMCSA stop-work decrees" } ],
  "revocations": [ { "..." : "Revocation orders by DOT + dockets" } ]
}

The full report endpoint aggregates all carrier data into a single response. PDF format generates a formatted report suitable for client presentations.

GET/v1/carriers/:dot/revocationsCarriers

GET Revocations

Returns FMCSA revocation orders for the carrier. Cross-referenced by DOT number and all associated docket numbers (handles Mexico-based carriers and multi-docket operators).

Path Parameters

NameTypeDescription
dot*stringUSDOT number of the carrier
Request
curl "https://api.morprolinq.com/v1/carriers/1234567/revocations" \
  -H "X-Manifest-Key: mfst_sk_xxxxxxxxxxx"
Response
{
  "dot_number": 1234567,
  "revocations": [
    {
      "docket_number": "MC397032",
      "type_license": "COMMON",
      "order_type_description": "INVOLUNTARY REVOCATION",
      "order_served_date": "11/22/2024",
      "order_effective_date": "12/27/2024",
      "raw": { "..." : "Full FMCSA revocation order record" }
    }
  ]
}
GET/v1/carriers/:dot/inspections/:idCarriers

GET Inspection Detail

Drill-down for a single inspection. Joins vehicle units (VIN, license, make), every cited violation (with FMCSR part/section and OOS flags), and any resulting citations.

Path Parameters

NameTypeDescription
dot*stringUSDOT number of the carrier
id*stringInspection ID (from /inspections list)
Request
curl "https://api.morprolinq.com/v1/carriers/1234567/inspections/INS12345" \
  -H "X-Manifest-Key: mfst_sk_xxxxxxxxxxx"
Response
{
  "inspection_id": "INS12345",
  "inspection": { "..." : "Full vehicle_inspections row" },
  "units": [
    {
      "unit_id": 1,
      "vehicle_id_number": "1FUJA6CK56LV52317",
      "make": "FRTL",
      "license": "ABC1234",
      "license_state": "TX",
      "type_id": "T"
    }
  ],
  "violations": [
    {
      "violation_id": "V-9883",
      "seq_no": 1,
      "unit_id": 1,
      "part_no": "393",
      "part_no_section": "393.75A1",
      "out_of_service": true,
      "citation_number": null
    }
  ],
  "citations": [
    {
      "vioseqnum": 1,
      "citation_code": "393.75A1",
      "citation_result": "GUILTY"
    }
  ],
  "summary": {
    "unit_count": 1,
    "violation_count": 4,
    "oos_violation_count": 2,
    "citation_count": 1
  }
}

Use the inspection_id from /v1/carriers/:dot/inspections to drill in. The `units` array reflects every vehicle inspected; `violations` cite the actual FMCSR section; `citations` are state-issued tickets resulting from the inspection.

GET/v1/market/percentilesIntelligence

GET Market Percentiles

Returns national benchmark data for safety scores, fleet sizes, OOS rates, and crash indicators. Use to contextualize a carrier's performance against its peer group.

Query Parameters

NameTypeDescription
segmentstringFilter by carrier type: "OTR", "regional", "local", "hazmat"
statestring2-letter state code to filter by domicile state
Request
curl "https://api.morprolinq.com/v1/market/percentiles?segment=OTR&state=TX" \
  -H "X-Manifest-Key: mfst_sk_xxxxxxxxxxx"
Response
{
  "segment": "OTR",
  "state": "TX",
  "carrier_count": 48291,
  "benchmarks": {
    "fleet_size": { "p25": 3, "p50": 8, "p75": 24, "p90": 67, "p99": 412 },
    "oos_rate": { "p25": 0.0, "p50": 0.08, "p75": 0.18, "p90": 0.32, "p99": 0.61 },
    "unsafe_driving": { "p25": 0.0, "p50": 12, "p75": 38, "p90": 62, "p99": 89 },
    "crash_rate_per_pmu": { "p25": 0.0, "p50": 0.02, "p75": 0.08, "p90": 0.15 }
  }
}
GET/v1/carriers/bulkSearch

GET Bulk Carriers

Slim, cursor-paginated firehose for mirroring the carrier universe into your own store. Returns up to 5,000 carriers per page with a pre-joined insurance_summary (earliest pending cancellation, total active coverage, active policy count). One call per page on rate-limit — pair with `updated_since` for cheap nightly incrementals.

Query Parameters

NameTypeDescription
cursorstringOpaque pagination cursor from the previous response's `next_cursor`. Omit on first call.
limitintegerRows per page (default 1000, max 5000)
updated_sincestringISO 8601 timestamp. Returns only carriers whose census record was synced at or after this time. Default = epoch (full backfill).
Request
# Initial backfill
curl "https://api.morprolinq.com/v1/carriers/bulk?limit=5000" \
  -H "X-Manifest-Key: mfst_sk_xxxxxxxxxxx"

# Nightly incremental (carriers changed since yesterday)
curl "https://api.morprolinq.com/v1/carriers/bulk?limit=5000&updated_since=2026-05-20T00:00:00Z" \
  -H "X-Manifest-Key: mfst_sk_xxxxxxxxxxx"

# Next page
curl "https://api.morprolinq.com/v1/carriers/bulk?limit=5000&cursor=eyJkIjozNDU2NywiaSI6InJvdy1hYmMifQ" \
  -H "X-Manifest-Key: mfst_sk_xxxxxxxxxxx"
Response
{
  "carriers": [
    {
      "dot_number": 3602389,
      "legal_name": "ZERO11 FREIGHT INC",
      "dba_name": null,
      "state": "IL",
      "city": "LEMONT",
      "phone": "6305709482",
      "email": null,
      "power_units": 162,
      "total_drivers": 8,
      "operating_status": "ACTIVE",
      "safety_rating": null,
      "add_date": "20190312",
      "insurance_summary": {
        "earliest_cancellation_date": "2026-06-22",
        "total_active_coverage": 750000,
        "active_policies_count": 5
      }
    }
  ],
  "next_cursor": "eyJkIjozNjAyMzg5LCJpIjoicm93LWFiYy1kZWYifQ"
}

`next_cursor` is null on the final page. Per-page count = 1 against your rate limit regardless of row count. `operating_status` mirrors `/search`'s `status` field (mapped from FMCSA `status_code`: A→ACTIVE, I→INACTIVE).

POST/v1/watchlistWatchlist

POST Create Watchlist

Create a watchlist to monitor up to 10,000 carriers for real-time changes — authority revocations, insurance lapses, safety rating changes, OOS rate spikes, and more.

Request Body

NameTypeDescription
carriers*string[]Array of DOT numbers to monitor
webhook_url*stringHTTPS URL to receive event notifications
eventsstring[]Event types to subscribe to (default: all)
Request
curl -X POST "https://api.morprolinq.com/v1/watchlist" \
  -H "X-Manifest-Key: mfst_sk_xxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "carriers": ["1234567", "2345678", "3456789"],
    "webhook_url": "https://yourapp.com/webhooks/manifest",
    "events": ["authority.revoked", "insurance.lapsed"]
  }'
Response
{
  "watchlist_id": "wl_a1b2c3d4",
  "carrier_count": 3,
  "webhook_url": "https://yourapp.com/webhooks/manifest",
  "events": ["authority.revoked", "insurance.lapsed"],
  "status": "active",
  "created_at": "2026-04-05T12:00:00Z"
}

Webhooks

When a monitored carrier triggers an alert, LINQ POSTs a signed JSON payload to your webhook URL. Verify the signature using the X-Manifest-Signature header.

All webhook payloads include the event type, carrier DOT number, a human-readable description, and a timestamp. Your endpoint should return a 200 status code within 10 seconds.

json
{
  "event": "carrier.authority.revoked",
  "carrier": {
    "dot_number": "2345678",
    "legal_name": "SUMMIT RIDGE TRANSPORT LLC"
  },
  "detail": "Common authority revoked by FMCSA",
  "previous_value": "ACTIVE",
  "new_value": "REVOKED",
  "timestamp": "2026-04-05T14:23:00Z",
  "signature": "sha256=a1b2c3d4..."
}
carrier.authority.revokedcarrier.authority.reinstatedcarrier.insurance.lapsedcarrier.insurance.reinstatedcarrier.safety_rating.changedcarrier.oos_rate.spikedcarrier.fleet.expanded

SMS + SAFER Overview

These endpoints are explicitly snapshot-based — powered by the 4 official FMCSA SMS Output files (1.7M scored carriers) and the 4 SMS Input files. Every response includes snapshot_date and data_source so you always know exactly which FMCSA release the data reflects.

Data source priority: 1. sms_output table (official FMCSA SMS Output, latest snapshot), 2. Legacy FMCSA Query API data, 3. Calculated live from sms_inspections + sms_violations.

FMCSA uses a time-weighting system for all SMS math. Inspections in the most recent 12 months receive a weight of 3, inspections 12-24 months old receive a weight of 2, and inspections older than 24 months receive a weight of 1.

carriersauth_historyinsur_activeoos_ordersrevocationssms_inspectionssms_crashessms_output
GET/v1/sms/:dot/scoresSMS

GET BASIC Scores

Returns the 7 BASIC scores with measures, alert flags, and percentile rankings where available. Automatically selects the best data source for each carrier.

Path Parameters

NameTypeDescription
dot*stringUSDOT number of the carrier

Query Parameters

NameTypeDescription
alert_onlybooleanIf true, only return BASICs above the FMCSA intervention threshold
ac_flagbooleanAcute/Critical violation from an investigation in the previous 12 months
rd_alertbooleanRoadside alert — carrier is above the FMCSA intervention threshold
Request
curl "https://api.morprolinq.com/v1/sms/1234567/scores" \
  -H "X-Manifest-Key: mfst_sk_xxxxxxxxxxx"
Response
{
  "dot_number": "1234567",
  "snapshot_date": "2026-03-15",
  "data_source": "sms_output",
  "basics": {
    "unsafe_driving": { "measure": 3.2, "percentile": 22, "alert": false, "threshold": 65 },
    "hours_of_service": { "measure": 1.8, "percentile": 15, "alert": false, "threshold": 65 },
    "vehicle_maintenance": { "measure": 4.1, "percentile": 34, "alert": false, "threshold": 80 },
    "controlled_substances": { "measure": 0.0, "percentile": 0, "alert": false, "threshold": 80 },
    "driver_fitness": { "measure": 0.5, "percentile": 8, "alert": false, "threshold": 80 },
    "hazmat_compliance": { "measure": 0.0, "percentile": 0, "alert": false, "threshold": 80 },
    "crash_indicator": { "measure": 0.8, "percentile": 18, "alert": false, "threshold": 65 }
  }
}
GET/v1/sms/:dot/inspectionsSMS

GET SMS Inspections

Returns only the inspections that fall within FMCSA's 24-month SMS scoring window. Each record includes a `computed_time_weight` (3/2/1) so your system can replicate the SMS math exactly.

Path Parameters

NameTypeDescription
dot*stringUSDOT number of the carrier
Request
curl "https://api.morprolinq.com/v1/sms/1234567/inspections" \
  -H "X-Manifest-Key: mfst_sk_xxxxxxxxxxx"
Response
{
  "dot_number": "1234567",
  "snapshot_date": "2026-03-15",
  "window_start": "2024-03-15",
  "window_end": "2026-03-15",
  "total": 42,
  "inspections": [
    {
      "inspection_id": "TX2025121401",
      "inspection_date": "2025-12-14",
      "state": "TX",
      "level": 1,
      "computed_time_weight": 3,
      "violations_count": 2,
      "vehicle_oos": false,
      "driver_oos": false
    }
  ]
}
GET/v1/sms/:dot/violationsSMS

GET SMS Violations

Returns violations within the 24-month SMS window with FMCSA time-weights applied. The `computed_total_weight` field equals `time_weight x severity_weight` — the exact numerator value FMCSA uses in the BASIC measure formula.

Path Parameters

NameTypeDescription
dot*stringUSDOT number of the carrier
Request
curl "https://api.morprolinq.com/v1/sms/1234567/violations" \
  -H "X-Manifest-Key: mfst_sk_xxxxxxxxxxx"
Response
{
  "dot_number": "1234567",
  "snapshot_date": "2026-03-15",
  "total": 18,
  "by_basic": {
    "unsafe_driving": 8,
    "hours_of_service": 4,
    "vehicle_maintenance": 6
  },
  "violations": [
    {
      "violation_code": "392.2",
      "description": "Failing to obey traffic control device",
      "basic_category": "Unsafe Driving",
      "severity_weight": 5,
      "time_weight": 3,
      "computed_total_weight": 15,
      "inspection_date": "2025-12-14",
      "oos": false
    }
  ]
}
GET/v1/sms/:dot/crashesSMS

GET SMS Crashes

Crash records scoped to the 24-month SMS window with time weights applied. Includes fatal, injury, tow-away, and hazmat breakdown.

Path Parameters

NameTypeDescription
dot*stringUSDOT number of the carrier
Request
curl "https://api.morprolinq.com/v1/sms/1234567/crashes" \
  -H "X-Manifest-Key: mfst_sk_xxxxxxxxxxx"
Response
{
  "dot_number": "1234567",
  "snapshot_date": "2026-03-15",
  "total": 2,
  "fatal": 0,
  "injury": 1,
  "tow_away": 1,
  "hazmat": 0,
  "crashes": [
    {
      "report_number": "TX-2025-04211",
      "crash_date": "2025-04-21",
      "state": "TX",
      "time_weight": 3,
      "fatalities": 0,
      "injuries": 1,
      "tow_away": true
    }
  ]
}
GET/v1/sms/:dot/universeSMS

GET SMS Universe

FMCSA only scores carriers that meet minimum inspection thresholds. This endpoint tells you instantly whether a carrier is in the SMS scoring universe and eligible for percentile rankings.

Path Parameters

NameTypeDescription
dot*stringUSDOT number of the carrier
Request
curl "https://api.morprolinq.com/v1/sms/1234567/universe" \
  -H "X-Manifest-Key: mfst_sk_xxxxxxxxxxx"
Response
{
  "dot_number": "1234567",
  "in_universe": true,
  "inspection_count_24mo": 42,
  "minimum_required": 5,
  "snapshot_date": "2026-03-15",
  "peer_group": "OTR > 10 power units",
  "peer_group_size": 28491
}
GET/v1/safer/:dotSAFER

GET SAFER Snapshot

Mirrors exactly what FMCSA's SAFER.fmcsa.dot.gov shows for a carrier — registration, operations, safety rating, authority history, active insurance, OOS orders, inspection summary, crash summary, and BASIC scores. All in one call.

Path Parameters

NameTypeDescription
dot*stringUSDOT number of the carrier
Request
curl "https://api.morprolinq.com/v1/safer/1234567" \
  -H "X-Manifest-Key: mfst_sk_xxxxxxxxxxx"
Response
{
  "dot_number": "1234567",
  "snapshot_date": "2026-04-05",
  "registration": {
    "legal_name": "APEX FREIGHT SOLUTIONS LLC",
    "dba_name": "APEX FREIGHT",
    "carrier_operation": "Interstate",
    "hazmat_carrier": false
  },
  "authority": { "common": "ACTIVE", "contract": "ACTIVE", "broker": "NONE" },
  "safety_rating": "SATISFACTORY",
  "insurance_active": true,
  "oos_orders": 0,
  "inspection_summary": { "total": 127, "vehicle_oos_rate": 0.12, "driver_oos_rate": 0.04 },
  "crash_summary": { "total": 3, "fatal": 0, "injury": 1, "tow": 2 }
}
GET/v1/chameleon/:dotFraud Detection

GET Chameleon Scan

Runs a chameleon carrier fraud detection scan. Analyzes address matches, phone overlaps, authority timeline gaps, OOS rates, and other signals to produce a risk score from 0-100.

Path Parameters

NameTypeDescription
dot*stringUSDOT number of the carrier (numeric only)
Request
curl "https://api.morprolinq.com/v1/chameleon/1234567" \
  -H "X-Manifest-Key: mfst_sk_xxxxxxxxxxx"
Response
{
  "dot": "1234567",
  "legalName": "APEX FREIGHT SOLUTIONS LLC",
  "state": "TX",
  "status": "AUTHORIZED FOR HHG",
  "score": 45,
  "riskLevel": "MODERATE",
  "signalsDetected": 2,
  "signals": [
    { "name": "Phone Match", "detected": true, "weight": 25, "detail": "Phone matches 1 revoked carrier(s)" },
    { "name": "Physical Address Match", "detected": true, "weight": 20, "detail": "Address matches 2 revoked carrier(s)" },
    { "name": "Authority Timeline Gap", "detected": false, "weight": 25, "detail": null },
    { "name": "High OOS Before Drop", "detected": false, "weight": 15, "detail": null }
  ],
  "relatedCarriers": [
    { "dot": "2345678", "name": "APEX LOGISTICS INC", "status": "NOT AUTHORIZED", "matchType": "Phone match" }
  ]
}

Risk levels: LOW (0-25), MODERATE (26-50), HIGH (51-75), CRITICAL (76-100). Signal weights: EIN Match (40), Equipment Match (30), Phone Match (25), Timeline Gap (25), Address Match (20), Officer Match (20), High OOS (15).