Integrated Insurance API
Shipper's Interest insurance is coming to the API, offered by Super Dispatch in partnership with Tint, our insurance provider. The endpoints serve two distinct purposes.
Quoting gets you an estimated price of coverage for one vehicle at a time, from its year, make, model and vehicle type plus the pickup and delivery locations. No order is involved, so you can quote at any point.
Policies on an order create draft policies for an order's vehicles and read back the insurance
state. Completing checkout and managing the insurance afterwards happen in the Tint portal, which
you reach through the personal_link the API returns. Webhooks tell you when a policy is issued or
canceled, so you do not have to poll for those.
This is an additive change. No existing endpoint, field, or webhook action changes behavior.
New Endpoints
| Endpoint | What it does |
|---|---|
POST /v1/public/insurances/quotes | Estimates a premium for one vehicle on a route. |
GET /v1/public/orders/{guid}/insurance | Returns the insurance state of an order and its Tint portal link. |
POST /v1/public/orders/{guid}/sync-insurance-policy | Creates draft policies for the order's eligible vehicles. |
Quoting does not require an order, so you can get an estimated insurance quote for a vehicle at any point — before the order exists, or once it is created but not yet picked up:
curl -X "POST" "https://api.shipper.superdispatch.com/v1/public/insurances/quotes" \
-H 'Authorization: Bearer <access_token>' \
-H 'Content-Type: application/json; charset=utf-8' \
-d $'{
"pickup": { "city": "San Francisco", "state": "CA", "zip": "94102" },
"delivery": { "city": "Los Angeles", "state": "CA", "zip": "90001" },
"vehicle": {
"year": 2020,
"make": "Honda",
"model": "Accord",
"vehicle_type": "sedan",
"vin": "JHMZE2H73AS009608"
}
}'
{
"status": "success",
"data": {
"objects": [
{
"plan_slug": "shippers-interest",
"calculated_premium": 47.79
}
]
}
}
New Webhook Actions
insurance.issued is sent when the insurer issues a policy, carrying the issued premium and the
portal link. insurance.canceled is sent when a policy ends, with a cancellation_reason.
A policy can be canceled as a side effect of editing an order — removing or changing an insured
vehicle voids its policy — so insurance.canceled is not always the result of a deliberate
cancellation. Check cancellation_reason rather than assuming.
What To Expect
vinis optional. Send it when you have it; a quote does not require one.- The premium is estimated from the vehicle's declared value and the distance between pickup and
delivery. Normally the insurer estimates that declared value itself from the vehicle details you
send. Your
valueis a fallback, used only when it cannot arrive at a figure, not an override — so sending one does not always mean the premium quote is based on it. - A quote can fail with
409 VEHICLE_VALUE_REQUIRED. This happens when the insurer cannot determine what the vehicle is worth and you supplied novalueto fall back on. Retry withvehicle.valueset. personal_linkisnulluntil a draft policy exists.GET .../insuranceonly reports the state it finds; it does not create anything. CallPOST .../sync-insurance-policyfirst for an order that has never been quoted.sync-insurance-policyis rate limited to one call per order every 30 seconds. Calls inside that window return429 RATE_LIMIT_EXCEEDED. The window is consumed even by a failed sync, so wait rather than retrying immediately.- ZIP is optional on quotes. Supply
cityandstateat minimum; that only generates the distance. A full address (building number, street, city) produces a more accurate premium, so the price matches when you proceed to purchase the insurance on Tint's platform.
API reference: Calculate an insurance premium, Get insurance details for an order, Sync insurance policy for an order. See the Webhooks documentation for full payload details.