Malcolm

API Reference

The Malcolm API is a RESTful JSON API. All requests require authentication and must be made over HTTPS.

Base URL

https://api.trymalcolm.com/v1

Authentication

Include your API key in the Authorization header:

Authorization: Bearer mk_live_...
Key prefixEnvironment
mk_live_Production
mk_test_Sandbox

Endpoints

POST /quotes

Create a new quote request. Malcolm fans the request out to all eligible insurers and returns aggregated results.

Request body

FieldTypeRequiredDescription
line_of_businessstringYesInsurance line (general_liability, bop, workers_comp, cyber)
riskobjectYesRisk details - varies by line
coverageobjectYesRequested coverage parameters
carrier_filterarrayNoLimit to specific insurer IDs

Response

{
  "id": "qt_abc123",
  "status": "quoted",
  "created_at": "2025-01-15T10:30:00Z",
  "carriers": [
    {
      "carrier": "Acme Insurance",
      "carrier_id": "car_acme",
      "premium_annual": 2847,
      "premium_monthly": 245,
      "bindable": true,
      "quote_expires_at": "2025-02-15T00:00:00Z",
      "coverage_details": {}
    }
  ]
}

POST /quotes/:id/bind

Bind an accepted quote to create a policy.

Request body

FieldTypeRequiredDescription
carrierstringYesInsurer name or ID
effective_datestringYesISO 8601 date

GET /quotes/:id

Retrieve a quote by ID. Useful for polling status on async quotes.

GET /carriers

List all available insurers and the lines of business they support.

Response

{
  "carriers": [
    {
      "id": "car_acme",
      "name": "Acme Insurance",
      "lines": ["general_liability", "bop"],
      "states": ["CA", "NY", "TX"]
    }
  ]
}

Rate limits

PlanRequests/min
Sandbox60
Production600
EnterpriseCustom

Rate-limited responses return HTTP 429 with a Retry-After header.

Pagination

List endpoints support cursor-based pagination via starting_after and limit query parameters.

GET /v1/carriers?limit=10&starting_after=car_acme