Fleet Management
OpenInsure’s fleet management module covers the full lifecycle of commercial motor carrier underwriting data. It integrates with the FMCSA SAFER system for authority verification and CSA scoring, the NHTSA vPIC database for VIN decoding, and ELD telematics providers for real-time safety event ingestion.
Motor Carriers
Section titled “Motor Carriers”Motor carriers are the central entity in trucking insurance. Each carrier record stores FMCSA authority data, operating status, fleet size, cargo types, and SAFER ratings.
Create a Motor Carrier
Section titled “Create a Motor Carrier”POST /v1/motor-carriersAuthorization: Bearer <token>Content-Type: application/json
{ "legalName": "Acme Freight LLC", "dbaName": "Acme Express", "usdotNumber": "1234567", "mcNumber": "MC-987654", "primaryState": "TX", "carrierType": "for_hire", "operatingAuthority": "interstate", "totalPowerUnits": 45, "totalDrivers": 52, "operations": ["property", "household_goods"], "cargoCarried": ["general_freight", "machinery"]}Carrier types: for_hire, private, exempt, owner_operator, lease_operator.
Operating authority: interstate, intrastate, dual, exempt, unknown.
List Motor Carriers
Section titled “List Motor Carriers”GET /v1/motor-carriers?page=1&limit=25Returns a paginated list of carriers for the caller’s organization, ordered by most recently created. The response includes meta.total and meta.pages for pagination controls.
Get Carrier Details
Section titled “Get Carrier Details”GET /v1/motor-carriers/:idReturns the carrier record along with all associated intrastate permits.
FMCSA Integration
Section titled “FMCSA Integration”The platform queries the FMCSA SAFER API in real time to verify carrier authority, retrieve CSA safety scores, and detect chameleon companies (carriers that reincorporate to evade safety records).
DOT Number Lookup
Section titled “DOT Number Lookup”POST /v1/motor-carriers/lookupContent-Type: application/json
{ "dotNumber": "1234567", "insuredName": "Acme Freight LLC"}Response:
{ "dotNumber": "1234567", "carrierName": "ACME FREIGHT LLC", "authorityStatus": "authorized", "operatingStatus": "AUTHORIZED FOR PROPERTY", "operatingAuthority": "interstate", "csaScore": 24, "nameMismatch": false, "warning": null, "fmcsaStatus": "authorized"}When insuredName is provided, the system compares it against the FMCSA-registered name. A mismatch triggers a nameMismatch: true flag and a chameleon company warning. This is a critical underwriting red flag — it may indicate a carrier has reincorporated under a new name to shed a poor safety record.
RESTful DOT Lookup
Section titled “RESTful DOT Lookup”GET /v1/motor-carriers/dot/1234567Same data as the POST lookup but as a simple GET endpoint. Available to both underwriters and producers.
FMCSA Authority Status
Section titled “FMCSA Authority Status”| Status | Description |
|---|---|
authorized | Active operating authority |
revoked | Authority revoked by FMCSA |
inactive | Authority is inactive |
pending | Application pending |
out_of_service | Carrier placed out of service |
none | No authority on file |
SMS Safety Summary
Section titled “SMS Safety Summary”GET /v1/motor-carriers/dot/1234567/sms-summaryReturns detailed FMCSA Safety Measurement System data including inspection history, crash records, OOS (out-of-service) rates, and violation breakdowns.
{ "dotNumber": "1234567", "carrierName": "ACME FREIGHT LLC", "csaScore": 24, "totalInspections": 12, "totalViolations": 3, "totalOosOrders": 1, "totalCrashes": 0, "totalFatalities": 0, "oosRate": 8.33, "violationRate": 25.0, "inspections": [...], "crashes": [], "fetchedAt": "2026-03-24T14:00:00Z"}The API fetches inspection and crash data from the FMCSA SMS endpoints (/inspections and /crashes) in parallel, normalizes the response, and computes aggregate statistics.
Intrastate Permits
Section titled “Intrastate Permits”Carriers operating within a single state require intrastate permits. The platform tracks permits per carrier with compliance metadata.
Create a Permit
Section titled “Create a Permit”POST /v1/motor-carriers/:id/permitsContent-Type: application/json
{ "state": "TX", "permitType": "intrastate_property", "permitNumber": "TX-INS-2026-1234", "requiresStateDotNumber": true, "stateDotNumber": "TX-DOT-5678", "annualFeeCents": 15000, "mileageTaxRequired": true, "fuelTaxRequired": true, "status": "active", "effectiveDate": "2026-01-01T00:00:00Z", "expirationDate": "2027-01-01T00:00:00Z"}Permit status values: pending, active, expired, revoked.
List Permits
Section titled “List Permits”GET /v1/motor-carriers/:id/permitsReturns up to 200 permits for the carrier, ordered by most recently created.
Vehicle Inventory
Section titled “Vehicle Inventory”Vehicles are tracked on the fleet schedule and linked to both submissions and policies.
Create a Vehicle
Section titled “Create a Vehicle”POST /v1/vehiclesContent-Type: application/json
{ "orgId": "550e8400-...", "submissionId": "7c9e6679-...", "vin": "1HGBH41JXMN109186", "year": 2024, "make": "Peterbilt", "model": "579", "vehicleType": "tractor", "gvwr": 80000, "cargoType": "general_freight", "lienholder": "Fleet Capital Finance"}Vehicle types: tractor, straight_truck, trailer, pickup.
VIN Duplicate Check
Section titled “VIN Duplicate Check”POST /v1/vehicles/vin-checkContent-Type: application/json
{ "vin": "1HGBH41JXMN109186", "orgId": "550e8400-..."}Returns { "valid": true } if the VIN is unique within the organization, or { "valid": false, "error": "VIN ... is already registered" } if a duplicate exists. When updating a vehicle, pass vehicleId to exclude the current record from the check.
VIN Decoding
Section titled “VIN Decoding”The platform uses the NHTSA vPIC (Vehicle Product Information Catalog) API for VIN decoding. Results are cached in Cloudflare KV to avoid redundant lookups.
Single VIN Decode
Section titled “Single VIN Decode”POST /v1/vehicles/decodeContent-Type: application/json
{ "vin": "1HGBH41JXMN109186" }Returns year, make, model, engine details, plant info, safety equipment, and more from the NHTSA database.
Batch VIN Decode
Section titled “Batch VIN Decode”POST /v1/vehicles/decode-batchContent-Type: application/json
{ "vins": [ "1HGBH41JXMN109186", "3AKJHHDR5LSLU7890" ]}Decodes up to 50 VINs in a single call using the NHTSA DecodeVINValuesBatch endpoint. Cached results are returned from KV; only uncached VINs hit the upstream API.
Full VIN Lookup
Section titled “Full VIN Lookup”POST /v1/vehicles/lookupContent-Type: application/json
{ "vin": "1HGBH41JXMN109186" }Combines VIN decode with NHTSA safety profile data (recalls, complaints, NCAP crash rating) in a single call. This is the recommended endpoint for underwriting workflows that need the complete vehicle picture.
Driver Records
Section titled “Driver Records”Drivers are tracked with CDL class, license details, and years of experience.
Create a Driver
Section titled “Create a Driver”POST /v1/driversContent-Type: application/json
{ "orgId": "550e8400-...", "submissionId": "7c9e6679-...", "firstName": "John", "lastName": "Rivera", "dob": "1985-06-15", "licenseNumber": "DL12345678", "licenseState": "TX", "cdlClass": "A", "yearsExperience": 12, "hiredDate": "2023-01-15"}CDL classes: A, B, C, none.
License Duplicate Check
Section titled “License Duplicate Check”POST /v1/drivers/license-checkContent-Type: application/json
{ "license_number": "DL12345678", "license_state": "TX", "orgId": "550e8400-..."}Validates that the license number and state combination is unique within the organization.
MVR Pull
Section titled “MVR Pull”POST /v1/drivers/:id/mvrEnqueues an asynchronous motor vehicle record (MVR) pull via Cloudflare Queues. The driver’s mvrStatus is set to pending immediately, and the system dispatches a driver.mvr_requested event with the driver’s license details. The MVR vendor integration processes the queue message and updates the driver record with violation history.
VIN Reconciliation Queue
Section titled “VIN Reconciliation Queue”The VIN reconciliation queue surfaces mismatches between policy vehicle schedules and real-world registrations detected by the monthly VIN sync cron job. Underwriters review and resolve each item.
Mismatch Types
Section titled “Mismatch Types”| Type | Description |
|---|---|
unrated_exposure | Vehicle found in DOT records but not on the policy schedule |
phantom_vehicle | Vehicle on the policy schedule but not found in DOT records |
List Queue Items
Section titled “List Queue Items”GET /v1/vin-queue?orgId=550e8400-...&status=open&page=1&limit=25Returns paginated queue items with joined policy data (policy number, insured name, DOT number). Items are sorted with open items first, then by detection date.
Resolve an Item
Section titled “Resolve an Item”POST /v1/vin-queue/:id/resolveContent-Type: application/json
{ "action": "add_vehicle", "note": "Confirmed with producer — new tractor added to fleet last month", "resolvedBy": "usr_01J8..."}Resolution actions: add_vehicle (triggers an endorsement workflow event) or acknowledge_phantom (carrier sold/retired the unit). Resolving an unrated_exposure with add_vehicle emits a vin.endorsement_requested event to the queue for downstream endorsement processing.
Dismiss an Item
Section titled “Dismiss an Item”POST /v1/vin-queue/:id/dismissContent-Type: application/json
{ "note": "Duplicate detection — same VIN flagged on prior review cycle", "dismissedBy": "usr_01J8..."}Dismissals require a minimum 10-character explanation for the audit trail.
Telematics Integration
Section titled “Telematics Integration”OpenInsure ingests telematics data from ELD (Electronic Logging Device) providers and computes safety scores for fleet-level and per-driver risk assessment.
Supported ELD Providers
Section titled “Supported ELD Providers”| Provider | Integration Type |
|---|---|
| Samsara | Webhook |
| Motive | Webhook |
| Geotab | Webhook |
| KeepTruckin | Webhook |
| Omnitracs | Webhook |
Register an ELD Connection
Section titled “Register an ELD Connection”POST /v1/telematics/connectionsContent-Type: application/json
{ "orgId": "550e8400-...", "provider": "samsara", "apiKey": "samsara_api_...", "externalOrgId": "org_ext_123"}Safety Event Ingestion
Section titled “Safety Event Ingestion”POST /v1/telematics/eventsContent-Type: application/json
{ "orgId": "550e8400-...", "vehicleId": "veh_01J8...", "driverId": "drv_01J8...", "type": "hard_braking", "severity": "medium", "location": { "lat": 32.7767, "lng": -96.7970, "address": "I-35 near Dallas, TX" }, "occurredAt": "2026-03-24T08:30:00Z"}Event types: hard_braking, harsh_turning, overspeed, crash_detected, lane_departure, tailgating, distracted_driving.
Severity levels: low, medium, high, critical.
Events can include a telematicsSnapshot (arbitrary JSON from the provider) and an r2VideoKey (link to dashcam footage stored in R2).
Trip Record Ingestion
Section titled “Trip Record Ingestion”POST /v1/telematics/tripsContent-Type: application/json
{ "orgId": "550e8400-...", "vehicleId": "veh_01J8...", "driverId": "drv_01J8...", "startTime": "2026-03-24T06:00:00Z", "endTime": "2026-03-24T14:00:00Z", "milesDriven": 320, "stateBreakdown": { "TX": 200, "OK": 120 }, "avgSpeed": 55, "maxSpeed": 72}The stateBreakdown field maps two-letter state codes to miles driven in each state, which feeds into state-level exposure calculations for rating.
Fleet Safety Score
Section titled “Fleet Safety Score”GET /v1/telematics/fleet-score?orgId=550e8400-...&days=90Computes an aggregate fleet safety score on a 0-100 scale based on weighted safety events per 10,000 miles driven over the specified period.
{ "orgId": "550e8400-...", "periodDays": 90, "fleetScore": 82, "totalTrips": 1240, "totalMiles": 385000, "totalEvents": 47, "severityBreakdown": { "low": 28, "medium": 14, "high": 4, "critical": 1 }}Scoring formula: Start at 100, subtract weighted events divided by miles (per 10k). Weights: critical = 15 points, high = 8, medium = 3, low = 1. A fleet with zero events scores 100.
Per-Driver Safety Scores
Section titled “Per-Driver Safety Scores”GET /v1/telematics/driver-scores?orgId=550e8400-...&days=90&limit=25Returns individual driver safety scores ranked worst-first, using the same weighting formula as the fleet score but computed per driver. Each entry includes miles driven, trip count, and event breakdown by severity.