Skip to main content

Quoting

Cover Whale offers two levels of pricing: indications (preliminary estimates) and full quotes (final pricing). Both are submitted via the API with the same authentication.

Indication vs. Full Quote

IndicationFull Quote
EndpointPOST /getindicationPOST /getquote
PurposeQuick preliminary pricingFinal binding-eligible pricing
Required fieldsMinimal (DOT, legal name, state/zip)Complete application details
ResponseEstimated premium rangesExact premiums and fees
Use whenScreening opportunitiesReady to present to insured

Coverage Types

Cover Whale provides five coverage lines for commercial trucking:
CodeCoverageDescription
ALAuto LiabilityLiability coverage for bodily injury and property damage
APDAuto Physical DamageCollision and comprehensive coverage for vehicles
MTCMotor Truck CargoCoverage for goods being transported
TGLTruckers General LiabilityGeneral liability for trucking operations
NTLNon-Trucking LiabilityLiability coverage when not under dispatch
Request each line by setting requestAl, requestApd, requestMtc, requestTgl, or requestNtl to "Y" in the coverage object.

Request Body Structure

Both endpoints accept the same request structure, organized into sections. The three required sections are:
ObjectPurposeKey Fields
insuredInformationBusiness detailsdotNumber, legalName, yearsInBusiness
garageAddressWhere vehicles are keptgarageState, garageZip (required)
mailingAddressBusiness mailing addressmailingState, mailingZip
Optional objects include coverage, limits, vehicles, drivers, operations, radius, commodities, and losses.

Getting an Indication

Submit basic details to get preliminary pricing:
curl -X POST https://app.coverwhale.com/api/v1/getindication \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -H "AccessToken: YOUR_ACCESS_TOKEN" \
  -d '{
    "insuredInformation": {
      "dotNumber": 1234567,
      "legalName": "ACME TRUCKING LLC",
      "yearsInBusiness": 3
    },
    "coverage": {
      "requestAl": "Y",
      "requestApd": "Y",
      "requestMtc": "Y",
      "effectiveDate": "03/01/2026"
    },
    "garageAddress": {
      "garageState": "CA",
      "garageZip": "90016"
    },
    "mailingAddress": {
      "mailingState": "CA",
      "mailingZip": "90016"
    },
    "limits": {
      "nbrOfTrucks": 3,
      "valueOfTrucks": 150000
    }
  }'

Getting a Full Quote

Submit the complete application for final pricing. This includes vehicles, drivers, and full address details:
curl -X POST https://app.coverwhale.com/api/v1/getquote \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -H "AccessToken: YOUR_ACCESS_TOKEN" \
  -d '{
    "insuredInformation": {
      "dotNumber": 1234567,
      "legalName": "ACME TRUCKING LLC",
      "yearsInBusiness": 3,
      "email": "insured@example.com"
    },
    "coverage": {
      "requestAl": "Y",
      "requestApd": "Y",
      "requestMtc": "Y",
      "effectiveDate": "03/01/2026"
    },
    "garageAddress": {
      "garageStreet": "123 Main St",
      "garageCity": "Los Angeles",
      "garageState": "CA",
      "garageZip": "90016",
      "garageCounty": "Los Angeles"
    },
    "mailingAddress": {
      "mailingStreet": "123 Main St",
      "mailingCity": "Los Angeles",
      "mailingState": "CA",
      "mailingZip": "90016",
      "mailingCounty": "Los Angeles"
    },
    "limits": {
      "nbrOfTrucks": 3,
      "valueOfTrucks": 150000,
      "limitAutoLiability": 1000000
    },
    "vehicles": [
      {
        "year": 2020,
        "make": "Freightliner",
        "model": "Cascadia",
        "vin": "1FUJGLDR0CLBK5432",
        "value": 55000,
        "classKey": "1"
      }
    ],
    "drivers": [
      {
        "firstName": "John",
        "lastName": "Doe",
        "dateOfBirth": "06/15/1985",
        "licenseState": "CA",
        "licenseNumber": "D1234567",
        "yearsExperience": 8
      }
    ]
  }'
See the API Reference for the full list of accepted fields and detailed schema documentation.

Understanding the Response

Both indication and quote responses include pricing breakdowns by coverage line:
{
  "status": "Quoted",
  "submission_number": "2172961",
  "coverages": {
    "al": {
      "totalCost": 20617.52,
      "premium": 20617.52,
      "limit": 1000000,
      "deductible": 0
    },
    "apd": {
      "totalCost": 4250.00,
      "premium": 4250.00,
      "limit": 150000,
      "deductible": 2500
    }
  }
}
FieldDescription
status"Indication" or "Quoted" depending on the endpoint
submission_numberYour reference ID for tracking — use this in subsequent API calls
coveragesPricing per coverage line with premium, limit, and deductible
totalCostCombined premium and fees for a given coverage line

Decline Reasons

A submission may be declined during the quoting process. Common reasons include:
  • DOT number not found or inactive
  • Insufficient years in business
  • Operating in restricted states
  • Adverse loss history
  • Fleet size outside underwriting guidelines
When a submission is declined, the response will indicate the reason. Contact your Cover Whale representative if you believe a decline was made in error.