How do I use the Ethos Quotes API?

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:

  1. 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.
  2. 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