The Ethos Quotes API enables you to integrate real-time, multi-product life insurance quoting directly into your own platform or application. This endpoint accepts specific URL query parameters and returns a JSON response containing accurate quotes or, if the applicant is ineligible, a detailed reason for the decline.
Getting Started
To begin your integration, you must first complete the onboarding and security process:
- Request Access: Contact your Strategic Account Manager (SAM) to request a unique API Access Token. If you do not know your SAM, please email support@ethos.com to request a token.
- Security Review: Ethos's IT and Security teams will generate your token and whitelist your company's Egress IPs to ensure a secure connection.
Maximizing Quote Accuracy
The Ethos Quotes API endpoint is designed to provide more precise results as you provide more data. While only a few parameters (like birth date and state) are required, passing additional details—such as tobacco use, health class, and credit band—will ensure the quotes Ethos supplies are as accurate as possible for your clients.
The endpoint accepts URL query parameters and returns JSON with quote(s) or a reason for ineligibility.
How it Works
The API uses a two-step authentication process to protect sensitive data:
- Step 1: Use your permanent API Access Token to generate a temporary API Quote Token.
- Step 2: Use the API Quote Token as a Bearer token to hit the live Quote endpoints.
Use the existing access token for all subsequent quote requests. Only request a new access token by repeating Step 1 if the current token is near its expiration or has already expired.
Step 1
Use your API Access Token to generate API Quote Tokens, which will grant you access to hit the Quote endpoint.
Let's run through an example:
$ curl -X POST https://eg.ethoslife.com/v3/quote_token \
--header "Authorization: Basic <YOUR_API_ACCESS_TOKEN>"REQUEST to generate an API Quote Token
Note: The Authorization schema for the call above uses "Basic" whereas the quote calls later use "Bearer" (this is also noted in the response from this call).
{
"access_token":"<API_QUOTE_TOKEN>",
"expires_in":86400,
"scope":"quote",
"token_type":"Bearer"
}RESPONSE from generating an API Quote Token. In practice, the returned access_token is much longer.
Step 2
$ curl -X GET "<https://eg.ethoslife.com/v3/quotes?birthDate=1990-01-01&\\>
region=CA" \\
--header "Authorization: Bearer <API_QUOTE_TOKEN_FROM_STEP_1>"REQUEST to retrieve quotes
{
"quotes": [
{
"category": "term life",
"issueType": "simplified",
"monthlyPremium": 48.92,
"coverage": 339000,
"term": 20
},
...
]
}RESPONSE from retrieving quotes
Retrieving Quotes
GET https://eg.ethoslife.com/v3/quotes
HTTP Request Query Parameters
| Field | Type | Required | Default | Options | Description |
|---|---|---|---|---|---|
| birthDate | string | ✓ | Date of birth in format YYYY-MM-DD | ||
| region | string | ✓ | Two letter abbreviation for US state or DC for District of Columbia (e.g. CA, MD) | ||
| gender | string | male | male, female, unisex, other | Gender of applicant | |
| tobacco | string | no | yes, no | Does the applicant use tobacco in any form? | |
| target | string | coverage | cost, coverage | Specifying what attribute returned quotes should target | |
| targetAmount | number | 1000000 | Ensures returned quotes are as close to the target amount as possible. Note: This is a required field if target field above is also supplied. | ||
| term | number | 10, 15, 20, 30 | Term length of policy in years | ||
| creditScore | number | 300–850 (whole number) | Estimated credit score. Note: This will take precedence over the creditBand field below if supplied. | ||
| creditBand | string | good | poor, average, good, great | Where poor = 579 or less, average = 580–669, good = 670–739, great = 740+. These band estimates are subject to change. | |
| healthClass | string | above | below, average, above, excellent | Estimated health class of applicant | |
| maxResults | number | Maximum number of quotes to return |
Expected HTTP Status Code Responses
401 - Unauthorized
The token is wrong or has expired.
200 - OK
Request was successful. Check the JSON body for quotes returned.
400 - Bad Request
The request could not generate a quote. Check the JSON body for a message indicating why (e.g., "Applicant must be over 18 years of age to qualify.").
Response Schema
Body
| Field | Type | Required | Description |
|---|---|---|---|
| quotes | array | ✓ | Array of objects of type Quote. See below for details. |
| alternativeQuoteOptions | array | Array of objects of type Quote. Contains alternative suggestions for quotes. | |
| recommended | number | ✓ | Index of the recommended quote from the quotes array. |
| profile | object | Contains additional details about profile used to generate quote. | |
| minCoverage | number | ✓ | Minimum coverage available. |
| maxCoverage | number | ✓ | Maximum coverage available. |
Quote
| Field | Type | Required | Description |
|---|---|---|---|
| category | string | ✓ | One of: term life, whole life |
| issueType | string | ✓ | One of: simplified, guaranteed, standard |
| coverage | number | ✓ | Amount of coverage for this quote |
| monthlyPremium | number | ✓ | Estimated monthly premium |
| term | number | Term length in years. Will not be included when not applicable. |
Updated