# Quote Applicants

## Overview

A quote for an individual or family can be generated with a single API request to the Medical Plan Search endpoint ([API docs](https://docs.ideonapi.com/#major-medical-plans-major-medical-plans-post)). These quotes always return all plans available to the quoted applicant(s), unless specific plans are filtered for by HIOS ID using the `ids` parameter. In this context, "all plans" means all plans available in Ideon's dataset: all carriers and on/off market plans are included. This page details the core required steps to quote an individual or family. Additional features are detailed on sub-pages, listed below:

* [Subsidies and Tax Credit](/quote-and-select/quote-individuals/aca-medical/quote-applicants/subsidies-and-tax-credits.md) - federal premium tax credits, CSR plans, state subsidies, and Medicaid eligibility
* [Eligibility and Rating Rules](/quote-and-select/quote-individuals/aca-medical/quote-applicants/eligibility-and-rating-rules.md) - federal, state, and carrier rules for eligibility and rating

## Configuring Requests

In order to quote an individual or family, the following information is required.

* **Applicant(s)** `applicants` - a list of the individual and any dependents seeking coverage.&#x20;
* **Age** `age` - the age of the applicant at the effective date of coverage, as specified in the request through the `enrollment_date` parameter.
* **Child** `child` - whether or not the applicant can be claimed as a child dependent, as on a tax return, for example.&#x20;
* **Smoker (Tobacco)** `smoker` - whether or not the applicant is considered a smoker under the ACA guidelines.&#x20;
* **Home Location** `zip_code` and `fips_code` - both ZIP and FIPS (county) codes are required to quote applicant(s), in order to determine plan eligibility and pricing based on service and rating areas.
* **Effective Date of Coverage** `enrollment_date` - the date the applicant(s) are seeking coverage for. If this is unknown, only the year has impact on the plans and premiums returned. Individual market premiums and plan availability are consistent throughout each calendar year.

While pagination is not required for the "Medical Plan Search" endpoint, it is highly recommended to specify a `per_page` of 50 for requests to optimize performance. The `meta.total` field in the response details the total number of plans quoted for a given request and can be referenced for paginating through all quoted plans.

A sample request, for reference:

{% code title="POST /plans/medical/search?per\_page=50\&page=1" %}

```json
{
    "applicants": [
        {
            "age": 35,
            "child": false,
            "smoker": false
        }
    ],
    "zip_code": "10010",
    "fips_code": "36061",
    "enrollment_date": "2025-01-01",
    "market": "individual"
}
```

{% endcode %}

## Quote Responses

Ideon's rating engine processes a quote by evaluating plan service area availability, looking up premiums by rating area, and applying any plan, carrier, or state eligibility rules. Responses include all available plans and their premiums based on the geography and enrollment date sent in the request. For Individual Quoting through the Medical Plan Search endpoint, responses also include the full benefits packages that are associated with each plan.&#x20;

### Premiums by Applicant

Individual Quoting through the Medical Plan Search endpoint includes an applicant-level premium breakdown in *v7* and *v8* of the endpoint. This can be found in the `premiums_by_applicant` array, which includes an object for each individual in the household, as specified in the request body's `applicants` array. Each object in the `premiums_by_applicant` array includes the following data.

* `age`, `child`, and `smoker` - mirroring the same fields in the request's `applicants` array.
* `premium` - the age-banded premium for the associated individual applicant, if applicable.
* `composite_rated` - whether or not the applicant(s) were quoted with composite rates (applicable to New York and Vermont). If *true*, then the `premium` for the associated member will be *null*, as composite rates by nature are quoted based on the makeup of the family, not individual applicant ages.
* `waived_for_total` - whether or not the individual applicant's premium was waived for the total premium quoted for the household. This is applicable to child applicants in families who are eligible for premium savings through rules that only assess premium for the first X children under a certain age. If *true*, the associated applicant's premium will be returned in the `premium` key in the `premiums_by_applicant` object, but not in the quoted total premium for the plan and household.

```json
{
    "premiums_by_applicant": [
        {
            "age": 35,
            "child": false,
            "smoker": false,
            "premium": 500.0,
            "composite_rated": false,
            "waived_for_total": false
        }
    ]
}
```

### Mapping Quoted Plans to Cached Plans

This section is relevant for users integrating with the [Cache Benefits](/quote-and-select/quote-individuals/aca-medical/cache-benefits.md) workflow. As detailed in that section, a plan in the individual medical market is defined uniquely by its HIOS ID and the plan year it is returned for. For Individual Medical quote responses, HIOS IDs can be found in the `id` field in the plan objects. The quoted plans' plan year will match the year of the `enrollment_date` sent in the request. These fields should be used to map quoted plans to cached plans pre-loaded through the Plans in Bulk endpoint.

When integrating this process, we recommend building in a catch-all in case a quoted plan has not yet been pre-loaded as part of the caching benefits process. This is an edge case, but is possible if plans are published midday and a user quotes them prior to the nightly batch process to cache benefits. If this scenario occurs, we recommend performing an ad-hoc request to the Medical Plan Search endpoint configured with the below parameters. This will return the benefits sets for the requested plans.

{% code title="POST /plans/medical/search" %}

```json
{
    "zip_code": <Quoted Zip Code>,
    "fips_code": <Quoted FIPS Code>,
    "enrollment_date": <Quoted Enrollment Date>,
    "market": "individual",
    "ids": [
        <List of HIOS IDs that are not yet cached>
    ]
}
```

{% endcode %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ideonapi.gitbook.io/quote-and-select/quote-individuals/aca-medical/quote-applicants.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
