---
title: "Preflight a market analysis: files, time, price"
method: POST
path: "/v1/analytics/estimate"
tags: ["analytics"]
---

# Preflight a market analysis: files, time, price

`POST /v1/analytics/estimate`

## Request

- Base URL: `https://api.ticexplorer.com`
- URL: `https://api.ticexplorer.com/v1/analytics/estimate`
- Auth: HTTP bearer

Resolve codes x geography x payers to the rate files that must be read (warm = already indexed; cold = indexed just in
time), with the estimated time and price. Nothing is started.

**Workflows**

Workflow `market-analysis`, step 2/4 `estimate`: Aggregate rate statistics for services across insurers and all providers in an area (benchmarking, research, negotiation prep, exports).
- Purpose: Preflight - files needed (warm vs cold), estimated seconds and usage charge, limit violations (a narrower scope removes them).
- Call after: `find_codes`
- Next: `start_market_analysis`

## Request body

- AnalyticsRequest
  - `codes` string[], required: 1-20 CPT/HCPCS codes from find_codes. Codes that hospitals are paid per APC also bring in the hospitals' APC case rates.
  - `geography` Geography, required: The market: one of zip (+ miles), metro, cbsa or state.
    - `zip` string, nullable: 5-digit ZIP at the center of a radius, e.g. 98052.
    - `miles` number, nullable: Radius around zip in miles (default 25).
    - `metro` string, nullable: Metro area name as in CMS CBSA names, e.g. "Seattle", "Tacoma", "Denver-Aurora" (a CBSA / metropolitan division).
    - `cbsa` string, nullable: CBSA or metropolitan-division code, e.g. 42644 (Seattle-Bellevue-Kent, WA).
    - `state` string, nullable: 2-letter state, e.g. WA (large: slower and costlier than a metro or a radius).
  - `payers` string[]: Insurer names as people say them ("Premera", "Aetna", "Regence", "UnitedHealthcare", "Cigna", "Kaiser"), catalog payer ids, or ["major"] = the largest insurers in this market (major_payers of them).
  - `major_payers` integer: How many insurers "major" means.
  - `files_per_payer` integer: Most rate files read per insurer (in-area and most-used files first). More = more coverage, more first-time indexing (time, price).
  - `index_new_files` boolean: false = read only files that are already indexed (fast, nearly free; coverage may be lower). true = also index the in-scope files that are not yet indexed.
  - `providers` 'relevant' | 'all': relevant = billing entities with evidence they provide the service (Medicare billing for the code, facility, hospital APC); all = also entities that merely hold a contracted rate.
  - `include_providers` boolean: Add the least / most expensive billing entities (name, TIN, site address, miles) to each result group.
  - `providers_per_group` integer
  - `max_price_usd` number, nullable: Highest estimated usage charge (USD) the job may start with (default $1.00); above it the job is not started (409 price_confirmation_required).

## Response `200`

Successful Response

- Open

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `402`: Payment Required
- `403`: Forbidden
- `404`: Not Found
- `422`: Unprocessable Entity
- `429`: Too Many Requests

---

[API](https://skmtc.dev/ticexplorer/apis/tic-explorer-api.md) · [All operations](https://skmtc.dev/ticexplorer/apis/tic-explorer-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ticexplorer/apis/tic-explorer-api/revisions/9800d20135b9?raw)
