/api/v1/motor/quote
Price a vehicle
Returns one option per insurer that rates the class, cheapest first. Nothing is stored — use save_quote to keep a quote against a client.
- Scope
quote- Authentication
- Bearer token
- Rate limit
- 60 requests per minute per token (per-client override)
- Idempotency
- Not keyed. Check before retrying.
- Agent headers
- Accepts
X-Agent-CodeandX-Agent-Key: the call runs as that agent and sees only the agent's own records.
Headers
| Header | Meaning |
|---|---|
| Authorization | Bearer <access_token> (scope quote) |
| X-Agent-Code | Optional. Agent code (see GET /api/v1/sales-people). With X-Agent-Key the agent becomes the creator and only sees their own records. |
| X-Agent-Key | Optional. The agent's key; required with X-Agent-Code. |
Body fields
| Field | Type | Required | Description |
|---|---|---|---|
| class | string | Yes |
Case-insensitive. Tuktuk is rated on the PSV schedule when coverage names a PSV/hire use, otherwise as a commercial vehicle.
One of: Motor, Tuktuk, Motorcycle |
| coverage | string | No |
Private (default), a commercial class (e.g. "Commercial - own goods") or a PSV class (e.g. "PSV - matatu", "Taxi"). Maps to the rating class private, commercial or psv; motorcycles always rate as motorcycle.
Example: Private |
| scope | string | Yes |
Case-insensitive; "Third party only" is accepted.
One of: Comprehensive, TPO |
| cover_period | string | No |
annual (default) runs a year less a day. tor (time on risk) ends days days after the start date. The premium is the annual premium either way.
One of: annual, tor |
| days | integer | No |
Required for tor: 1–364.
|
| year | integer | Yes |
Year of manufacture.
Example: 2018 |
| value | integer | No |
Vehicle value in whole shillings. Required for comprehensive cover.
Example: 1000000 |
| tonnage | number | No | Carrying capacity in tonnes (commercial). Echoed on each option and stored on the vehicle. |
| pll | integer | No | Passenger legal liability: number of passengers. Echoed on each option and stored on the vehicle. |
| insurer_id | integer[] | No | Limit to these insurers (a single id is accepted too). Default: every insurer on the panel. |
| start_date | string | No | Flexysure only. Cover start (Y-m-d); a past date starts today. |
Example
curl -X POST 'https://flexysure.intrepidprojects.co.ke/api/v1/motor/quote' \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H 'Accept: application/json' \
-H 'X-Agent-Code: KK01' \
-H "X-Agent-Key: $AGENT_KEY" \
-H 'Content-Type: application/json' \
-d '{
"class": "Motor",
"coverage": "Private",
"scope": "Comprehensive",
"cover_period": "annual",
"year": 2018,
"value": 1000000,
"pll": 4,
"insurer_id": [
1,
2
]
}'
Request body (JSON)
{
"class": "Motor",
"coverage": "Private",
"scope": "Comprehensive",
"cover_period": "annual",
"year": 2018,
"value": 1000000,
"pll": 4,
"insurer_id": [
1,
2
]
}
{
"message": "2 options found.",
"quote": {
"class": "Motor",
"coverage": "Private",
"scope": "Comprehensive",
"vehicle_class": "private",
"cover_type": "comprehensive",
"cover_period": "annual",
"days": 365,
"start_date": "2026-10-14",
"end_date": "2027-10-13",
"year": 2018,
"tonnage": null,
"pll": 4,
"value": 1000000,
"value_minor": 100000000
},
"options": [
{
"insurer_id": 1,
"insurer_name": "Savanna General",
"monogram": "SG",
"motor_product_id": 11,
"vehicle_class": "private",
"cover_type": "comprehensive",
"rate": 3.5,
"rate_bps": 350,
"value": 1000000,
"value_minor": 100000000,
"basic_premium": 35000,
"basic_premium_minor": 3500000,
"taxes": [
{
"code": "TL",
"name": "Training levy",
"amount": 70,
"amount_minor": 7000
},
{
"code": "PHCF",
"name": "Policyholders compensation fund",
"amount": 88,
"amount_minor": 8800
},
{
"code": "SD",
"name": "Stamp duty",
"amount": 40,
"amount_minor": 4000
}
],
"taxes_total": 198,
"taxes_total_minor": 19800,
"total": 35198,
"total_minor": 3519800,
"commission_rate_bps": 1000,
"benefits": [
{
"id": "3a9c1f0e7b2d",
"name": "Windscreen up to KES 50,000"
},
{
"id": "b81e2c4d5f60",
"name": "Towing"
}
],
"limits_of_liability": [
{
"benefit_id": "3a9c1f0e7b2d",
"item": "Windscreen",
"limit": 50000
},
{
"benefit_id": "b81e2c4d5f60",
"item": "Towing",
"limit": null
}
],
"excess": "2.5% of claim, min KES 15,000",
"pll": 4,
"tonnage": null,
"instalments": [
{
"parts": 1,
"amounts": [
35198
],
"amounts_minor": [
3519800
]
},
{
"parts": 2,
"amounts": [
17599,
17599
],
"amounts_minor": [
1759900,
1759900
]
}
],
"ipf_offers": [
{
"tenor_months": 6,
"deposit": 7040,
"deposit_minor": 704000,
"instalment": 5397,
"instalment_minor": 539700,
"apr_bps": 4200,
"lender_name": "Flexysure Premium Finance"
}
],
"ipf_reason": null
}
]
}
Responses
| Status | Meaning |
|---|---|
| 200 | Options |
| 422 | validation_failed, or no_quote when no insurer rates the class |
Errors are problem documents; the common codes (401, 403 insufficient_scope, 422, 429) apply to every endpoint.