Introduction
Start with account prerequisites, token generation, and the core onboarding flow for your first authenticated request.
Read GuideSetup and usage instructions for your Developer Account, API token, and 30-day refresh flow.
Start with account prerequisites, token generation, and the core onboarding flow for your first authenticated request.
Read GuideUse your credentials safely, configure your environment variables, and test both token refresh and data access.
Open SetupReview endpoint behavior and payload patterns before moving into full production integration.
Open OpenAPIConnect your application logic with account-level API tokens and automate the 30-day refresh cycle with username or email plus password.
View DetailsUse helper examples and conventions to simplify authentication, token rotation, retries, and error handling.
Explore UtilitiesNavigate the web tools quickly with direct links to your developer account and docs hub.
Open Account
Route note: /api/case/download/<case_id> is enabled from the Flask web app via the api blueprint, alongside the matching web route /case/download/<case_id>. Other Flask /api/... routes may remain unavailable unless separately enabled.
Public, read-only REST API for viewing life insurance policies listed on Life Policy Market. This API is intended for programmatic access to life settlement inventory, such as powering websites, tools, and analytics dashboards.
https://api.lifepolicymarket.com1.0.0X-API-Key headerGET for data endpoints, POST for token refreshThis API uses per-client API tokens.
X-API-Key: <raw_token>https://www.lifepolicymarket.com/account/loginRotation is client-initiated. The client's integration should automatically call the refresh endpoint with the same Developer Account username/email and password used in the portal before the current token expires.
The server does not rotate tokens on its own. Instead, the client's system requests a replacement token, the server generates it, stores the new token hash in Salesforce, and returns the new raw token in the response. After a successful refresh, the client should immediately replace its stored token with the new access_token.
curl -X POST "https://api.lifepolicymarket.com/token/refresh" -H "Content-Type: application/json" -d '{
"login": "your-email-or-username",
"password": "your-password"
}'
Example response:
{
"access_token": "NEW_RAW_TOKEN",
"token_type": "api_key",
"header_name": "X-API-Key",
"issued_at": "2026-06-11T00:00:00Z",
"refresh_by": "2026-07-11T00:00:00Z",
"rotation_days": 30,
"client_name": "Client A"
}
Recommended client behavior:
access_token and refresh_byrefresh_by401, refresh the token once and retry the request with the new tokencurl -H "X-API-Key: YOUR_RAW_TOKEN" "https://api.lifepolicymarket.com/cases?page=1"
429 with {"detail": "Rate limit exceeded"}. Wait for the window to reset before retrying.401 response for invalid or missing keys.Returns a paginated list of cases (policies) that are currently available in the Life Policy Market. Each element in the response represents a single policy “case”, including its core attributes and associated ROI scenarios.
Each case object exposes:
case_id – stable internal identifier for the case / policycase_name – LPM case label / human-readable namecase_availability – textual availability status (e.g. “Available”, “Reserved”)policy_carrier – carrier namepolicy_carrier_rating – carrier credit / strength rating (e.g. AM Best-style)policy_type – policy type (e.g. “Universal Life”)policy_issue_date – ISO-8601 issue date (YYYY-MM-DD)policy_face_amount – face amount (rounded integer)policy_cash_surrender_value – latest cash surrender value (rounded integer)policy_account_value – latest account / accumulation value (rounded integer)policy_loan_balance – current loan balance (rounded integer)insured_birthdate – ISO-8601 birthdateinsured_age – ageinsured_gender – genderinsured_lifestyle – lifestyle / smoking statusinsured_bp – blood pressure summary, where availableinsured_bmi – body mass index, where availableinsured_key_medical_conditions – key medical conditions summary, where availableaps_provider – primary LE / APS provider labelaps_date – LE dateaps_months – life expectancy in monthsaps_years – life expectancy in yearslpm_equity_multiple – equity multiple for the LPM scenariolpm_estimated_roi – estimated ROI for the LPM scenariolpm_purchase_price – modeled / target purchase price (rounded integer)lpm_premium_funding – projected premium funding (rounded integer)lpm_total_investment – total projected investment (rounded integer)lpm_additional_highlights – free-form text highlights (optional)rois)Each ROI entry represents a scenario curve point and includes:
roi_number_of_months – horizon in months (often tied to LE months or scenario months)roi_premium_paid – total premiums paid at that horizon (rounded integer)roi_total_invested – total capital invested at that horizon (rounded integer)roi_holding_years – holding period in years at that horizonroi_estimated – estimated ROIroi_is_lpm – boolean flag:true for the LPM “house” scenario derived from the policy-level pricing.false for public ROI curves contributed by external / scenario models.#### Query Parameters
page11Policies are ordered by an internal, portfolio-style ordering key so that pagination is stable across calls.
#### Examples
GET https://api.lifepolicymarket.com/cases?page=1GET https://api.lifepolicymarket.com/cases?page=2#### Example Response
[
{
"case_id": "a01XXXXXXXXXXXXXXX",
"case_name": "LPM-000123",
"case_availability": "Available",
"policy_carrier": "Example Carrier",
"policy_carrier_rating": "A++",
"policy_type": "Universal Life",
"policy_issue_date": "2010-05-10",
"policy_face_amount": 1000000,
"policy_cash_surrender_value": 150000,
"policy_account_value": 180000,
"policy_loan_balance": 0,
"insured_birthdate": "1945-03-01",
"insured_age": 79,
"insured_gender": "Female",
"insured_lifestyle": "Non-smoker",
"insured_bp": "120/80",
"insured_bmi": 24.5,
"insured_key_medical_conditions": "Hypertension, mild COPD",
"aps_provider": "Techmed",
"aps_date": "2024-01-15",
"aps_months": 120,
"aps_years": 10,
"lpm_equity_multiple": 2.3,
"lpm_estimated_roi": 0.12,
"lpm_purchase_price": 320000,
"lpm_premium_funding": 250000,
"lpm_total_investment": 570000,
"lpm_additional_highlights": "No current loan. Strong carrier rating.",
"rois": [
{
"roi_number_of_months": 96,
"roi_premium_paid": 200000,
"roi_total_invested": 520000,
"roi_holding_years": 8,
"roi_estimated": 0.10,
"roi_is_lpm": false
},
{
"roi_number_of_months": 120,
"roi_premium_paid": 250000,
"roi_total_invested": 570000,
"roi_holding_years": 10,
"roi_estimated": 12,
"roi_is_lpm": true
}
]
}
]
Returns detailed information for a single case. The response schema matches a single element from GET /cases and includes:
roi_is_lpm)If the case is not available or does not exist, the API returns a standard “not found” response.
case_id – use the case_id value obtained from GET /cases.#### Example
GET https://api.lifepolicymarket.com/case/a01XXXXXXXXXXXXXXXExample response (truncated):
{
"case_id": "a01XXXXXXXXXXXXXXX",
"case_name": "LPM-000123",
"case_availability": "Available",
"policy_carrier": "Example Carrier",
"policy_type": "Universal Life",
"policy_issue_date": "2010-05-10",
"policy_face_amount": 1000000,
"policy_cash_surrender_value": 150000,
"policy_account_value": 180000,
"insured_age": 79,
"insured_gender": "Female",
"aps_months": 120,
"aps_years": 10,
"lpm_estimated_roi": 0.12,
"rois": [
{
"roi_number_of_months": 96,
"roi_premium_paid": 200000,
"roi_total_invested": 520000,
"roi_holding_years": 8,
"roi_estimated": 0.10,
"roi_is_lpm": false
},
{
"roi_number_of_months": 120,
"roi_premium_paid": 250000,
"roi_total_invested": 570000,
"roi_holding_years": 10,
"roi_estimated": 12,
"roi_is_lpm": true
}
]
}
https://www.lifepolicymarket.com/api/case/download/<case_id>https://www.lifepolicymarket.com/document/flyer.pdf.