# Monitor Quote Progress

The Show a Quote endpoint ([API docs](https://docs.ideonapi.com/#group-quoting-group-quoting-get)) can be used to poll for quote progress and retrieve metadata about the quote job, including job-level status and per-carrier results. The latest version of this endpoint is v9, which is documented on this page.

The response includes the request parameters, quote metadata, a job-level status object for overall quote processing, and a `carrier_results` array summarizing status and plan counts for each carrier being quoted. Premiums and eligibility exceptions for quoted plans are not returned by this endpoint — those are retrieved separately and documented in the [Retrieve Premium and Eligibility Results section](/quote-and-select/quote-groups/small-group-medical/retrieve-premium-and-eligibility-results.md).

{% hint style="warning" %}
**Pre-release documentation** — The v9 group quoting endpoints are actively in development and not yet available in production. This documentation is published early so integrators can plan and scope ahead of release. Endpoint behavior, field names, and response shapes may change before general availability. For the current development status and target release date, see the [Product Release Notes](/quote-and-select/product-release-notes/q2-2026.md#v9-group-quoting-combined-rates-and-limiting-factors). To integrate against the stable version today, see the [v8 documentation in Previous Versions](/quote-and-select/previous-versions/group-quoting-v8.md).
{% endhint %}

## Polling for Quote Progress

The Show a Quote endpoint should be polled to assess quote readiness. A `job.status` of *complete* or *complete\_with\_errors* indicates that quote processing has finished and results are available through the Display Rates endpoint. We recommend polling for status every 1–2 seconds.

Because the Show a Quote response does not include plan rates, it provides a lightweight way to monitor progress without the payload size of the rates endpoint. Polling Show a Quote is the recommended approach for tracking completion, with the Display Rates endpoint called only when rates are needed.

## Progressive Loading

Asynchronous processing of quotes supports two types of integrations: rates can be progressively loaded and presented to customers as they are quoted, or loaded and presented in one phase when the entire quote is complete. Progressive loading is the process of pulling and displaying rates for plans as they finish quoting, prior to full job completion. There are two approaches to progressive loading, each with different trade-offs in complexity and request volume.

The simpler approach is to paginate through the Display Rates endpoint as plans are quoted. As carriers complete and plans are added to the rates response, paginated requests to Display Rates will return newly quoted plans alongside those already returned. This approach minimizes the number of API requests required and is the recommended methodology for most integrations.

The alternative is a per-carrier approach using the Show a Quote endpoint's `carrier_results` array. When a carrier's `status` transitions to *complete* or *complete\_with\_errors*, that carrier's rates can be pulled from the Display Rates endpoint, filtered by its `carrier_id`. This approach provides tighter control over when each carrier's rates are surfaced to end users, but requires substantially more API requests — a poll of Show a Quote and a call to Display Rates for each carrier that completes.

1. Poll the Show a Quote endpoint for job and carrier progress.&#x20;
   1. The `job.status` field indicates overall quote status.&#x20;
   2. Each `carrier_results[].status` field indicates per-carrier quoting status.
2. When a carrier's `status` transitions to *complete* or *complete\_with\_errors*, pull rates for that carrier from the Display Rates endpoint, filtering by its `carrier_id`.
3. Repeat steps 1–2 until `job.status` is *complete* or *complete\_with\_errors*, then ensure rates for all carriers have been pulled.

## Quote Job Status

The `job` object contains overall processing status for the quote and should be used for polling quote completion. The following fields are included:

* **Status** `job.status` - the overall status of the quote job. Valid statuses include:
  * *pending* - initial status returned in response to the Create Quote request. The quote has been created but no carriers or plans have been quoted yet; the `carrier_results` array is empty.
  * *in\_progress* - the quote job has been picked up and is processing. The `carrier_results` array is populated. This status is maintained until all carriers have completed.
  * *complete* - all carriers and plans have been quoted and no plans returned errors that restricted premiums from being returned.
  * *complete\_with\_errors* - all carriers and plans have been quoted, and one or more plans had an error that restricted premiums from being returned. This status is also returned if all plans have quote-impacting errors.
  * *failed* - a larger-scale quote failure occurred and the quote was not able to be processed. The *failed* status is expected to be very rare; multiple successive failures should be escalated to Ideon's support portal.
* **Status Last Updated At** `job.status_updated_at` - the timestamp of when the status last transitioned.
* **Group ID** `job.group_id` - the unique Ideon ID for the group being quoted, as referenced in the Create a Quote endpoint path.
* **Total Members and Dependents** `job.total_members` and `job.total_dependents` - the sum of members and their dependents in the group's census at the time of quote creation.

The relevant portion of the Show a Quote response for the quote `job` object:

{% code title="GET /quotes/\<quote.id>" %}

```json
{
  "quote": {
    // Quote request parameters and metadata,
    "job": {
      "status": "complete",
      "status_updated_at": "2026-01-12T22:52:48.845Z",
      "group_id": "xyz12345",
      "total_members": 10,
      "total_dependents": 15
    }
    // carrier_results array,
  }
}
```

{% endcode %}

## Carrier Results

The `carrier_results` array contains a summary of quoting progress and plan counts for each carrier being quoted. This array is empty when the job status is *pending* and is populated once the job moves to *in\_progress*. A carrier is included in the array if they have one or more plans that are considered available for the group, evaluated with the group's primary location zip-county and each plan's service area. Once populated, each object in the array represents a single carrier and includes the following fields:

* **Carrier Identifiers** `carrier_id`, `carrier_brand_name`, and `issuer_ids` - the carrier brand ID, display name, and an array of all issuer IDs that Ideon is quoting for the carrier as part of this quote.
* **Quoting Method** `quoting_method` - an enum indicating how the carrier's plans are being quoted, either *ideon\_rating\_engine* or *carrier\_api*.&#x20;
* **Status** `status` - the per-carrier quoting status. Valid statuses include:
  * *in\_progress* - initial status for all carriers. Rates for this carrier are being processed.
  * *complete* - all plans for this carrier have been quoted with no plans returning quote-impacting errors.
  * *complete\_with\_errors* - all plans for this carrier have been quoted, and one or more plans returned a quote-impacting error.
  * *failed* - a larger failure occurred for this carrier and rates could not be evaluated.
* **Plans in Service Area** `plans_in_service_area` - the number of available plans for the group based on the group's primary location. This count is populated from the initial Create Quote response.
* **Plans with Premiums** `plans_with_premiums` - once the carrier is complete, the number of plans returned with premiums. This value is *null* until the carrier reaches a terminal status.
* **Plans with Quote Exceptions** `plans_with_quote_exceptions` - once the carrier is complete, the number of plans returned with one or more objects in the `quote_exceptions` array. This value is *null* until the carrier reaches a terminal status.
* **Plans with Member Exceptions** `plans_with_member_exceptions` - once the carrier is complete, the number of plans returned with one or more objects in the `member_exceptions` array. This value is *null* until the carrier reaches a terminal status.
* **Completed At** `completed_at` - the timestamp of when the carrier's quote job completed. This value is *null* until the carrier reaches a terminal status.

The relevant portion of the Show a Quote response for the quote `carrier_results` array:

{% code title="GET /quotes/\<quote.id>" %}

```json
{
  "quote": {
    // Quote request parameters and metadata,
    // job object,
    "carrier_results": [
      {
        "carrier_id": "bae1d0e1-80dc-48f4-918d-6c492340cc1",
        "carrier_brand_name": "Anthem Blue Cross",
        "issuer_ids": [
          "12345"
        ],
        "quoting_method": "ideon_rating_engine",
        "status": "complete",
        "plans_in_service_area": 30,
        "plans_with_premiums": 30,
        "plans_with_quote_exceptions": 5,
        "plans_with_member_exceptions": 2,
        "completed_at": "2026-01-12T22:52:48.845Z"
      }
    ]
  }
}
```

{% 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-groups/small-group-medical/monitor-quote-progress.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.
