Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/turquoise-consumer-pricing-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no email required.
A second provider on the same verified email joins the account you already have.
openapi: 3.1.0
info:
title: Turquoise Health Consumer Pricing API v3
version: 0.1.0
paths:
/v3/providers/types:
get:
tags:
- Consumer Pricing
summary: Get Provider Types
description: Fetch provider types. Results return valid inputs to filter by provider types across the API.
operationId: v3_get_provider_types
responses:
'200':
description: Successful Response
content:
application/json:
schema:
items:
type: string
type: array
title: Response V3 Get Provider Types
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'422':
description: Validation error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: Rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- BearerAuth: []
/v3/providers:
get:
tags:
- Consumer Pricing
summary: List Providers
description: Retrieve a list of providers, filtered over a search by name, NPI, provider type, or location. Additionally,
filter to a list of providers with Turquoise price estimates available by a selected payer, network, or package. Results
reflect provider, payer, and package combinations that Turquoise has priced services for; the list may not be comprehensive
of all contacted payer networks or services that are available.
operationId: v3_list_providers
parameters:
- name: name
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Case-insensitive substring match on provider name.
examples:
- Intermountain Health Saint Joseph Hospital
title: Name
description: Case-insensitive substring match on provider name.
- name: npi
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Exact NPI match.
examples:
- '1417946021'
title: Npi
description: Exact NPI match.
- name: type
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Provider type as reported in the dataset (exact match).
examples:
- Short Term Acute Care Hospital
title: Type
description: Provider type as reported in the dataset (exact match).
- name: package_id
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Providers with at least one price for this package.
examples:
- OB002
title: Package Id
description: Providers with at least one price for this package.
- name: network_id
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Providers with at least one price under this network (combined with package_id/payer_id, the same price
row must match).
examples:
- '-3776001016975145508'
title: Network Id
description: Providers with at least one price under this network (combined with package_id/payer_id, the same price
row must match).
- name: payer_id
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Providers priced under any of this payer's networks (combined with other relationship filters, the
same price row must match).
examples:
- '76'
title: Payer Id
description: Providers priced under any of this payer's networks (combined with other relationship filters, the same
price row must match).
- name: search
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Semantic search over provider names. Composes with the other filters and a near/zip location; returns
a single relevance-ordered page. 503 search_unavailable until the provider embedding index is populated.
examples:
- Saint Joseph hospital in Denver
title: Search
description: Semantic search over provider names. Composes with the other filters and a near/zip location; returns
a single relevance-ordered page. 503 search_unavailable until the provider embedding index is populated.
- name: min_score
in: query
required: false
schema:
anyOf:
- type: number
maximum: 1.0
minimum: 0.0
- type: 'null'
description: Minimum similarity score (0-1).
title: Min Score
description: Minimum similarity score (0-1).
- name: page_size
in: query
required: false
schema:
type: integer
maximum: 250
minimum: 1
default: 25
title: Page Size
- name: cursor
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Opaque cursor from a previous page.next_cursor.
title: Cursor
description: Opaque cursor from a previous page.next_cursor.
- name: location.near.lat
in: query
required: false
schema:
anyOf:
- type: number
- type: 'null'
examples:
- 39.745961
title: Location.Near.Lat
- name: location.near.lng
in: query
required: false
schema:
anyOf:
- type: number
- type: 'null'
examples:
- -104.971559
title: Location.Near.Lng
- name: location.near.radius_m
in: query
required: false
schema:
anyOf:
- type: integer
minimum: 1
- type: 'null'
examples:
- 25000
title: Location.Near.Radius M
- name: location.within.state
in: query
required: false
schema:
anyOf:
- type: string
minLength: 2
maxLength: 2
- type: 'null'
examples:
- CO
title: Location.Within.State
- name: location.within.cbsa
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
examples:
- Denver-Aurora-Centennial, CO
title: Location.Within.Cbsa
- name: location.within.zip_codes
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Comma-separated ZIP codes (exact match, any-of).
examples:
- 80218,80210
title: Location.Within.Zip Codes
description: Comma-separated ZIP codes (exact match, any-of).
- name: location.zip
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Resolves the ZIP to its centroid, then runs `near` with the default radius.
examples:
- '80218'
title: Location.Zip
description: Resolves the ZIP to its centroid, then runs `near` with the default radius.
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ListEnvelope_Provider_'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'422':
description: Validation error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: Rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- BearerAuth: []
/v3/providers/{provider_id}:
get:
tags:
- Consumer Pricing
summary: Get Provider Details
description: Fetch details for a single provider by provider ID.
operationId: v3_get_provider
parameters:
- name: provider_id
in: path
required: true
schema:
type: string
description: Provider identifier.
examples:
- '5756'
title: Provider Id
description: Provider identifier.
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/Provider'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'422':
description: Validation error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: Rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- BearerAuth: []
/v3/payers:
get:
tags:
- Consumer Pricing
summary: List Payers
description: Retrieve a list of payers, filtered over a search by name, location for care, or specific providers and
services priced in the Turquoise data. Location scopes to payers with at least one price at an in-area provider. Results
reflect provider, payer, and package combinations that Turquoise has priced services for; the list may not be comprehensive
of all contracted providers or services that are available.
operationId: v3_list_payers
parameters:
- name: name
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Case-insensitive substring match on payer name.
examples:
- Cigna
- Blue Cross
title: Name
description: Case-insensitive substring match on payer name.
- name: provider_id
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Payers with at least one price at this provider.
examples:
- '5756'
title: Provider Id
description: Payers with at least one price at this provider.
- name: package_id
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Payers with at least one price for this package.
examples:
- OB002
title: Package Id
description: Payers with at least one price for this package.
- name: page_size
in: query
required: false
schema:
type: integer
maximum: 250
minimum: 1
default: 25
title: Page Size
- name: cursor
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Opaque cursor from a previous page.next_cursor.
title: Cursor
description: Opaque cursor from a previous page.next_cursor.
- name: location.near.lat
in: query
required: false
schema:
anyOf:
- type: number
- type: 'null'
examples:
- 39.745961
title: Location.Near.Lat
- name: location.near.lng
in: query
required: false
schema:
anyOf:
- type: number
- type: 'null'
examples:
- -104.971559
title: Location.Near.Lng
- name: location.near.radius_m
in: query
required: false
schema:
anyOf:
- type: integer
minimum: 1
- type: 'null'
examples:
- 25000
title: Location.Near.Radius M
- name: location.within.state
in: query
required: false
schema:
anyOf:
- type: string
minLength: 2
maxLength: 2
- type: 'null'
examples:
- CO
title: Location.Within.State
- name: location.within.cbsa
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
examples:
- Denver-Aurora-Centennial, CO
title: Location.Within.Cbsa
- name: location.within.zip_codes
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Comma-separated ZIP codes (exact match, any-of).
examples:
- 80218,80210
title: Location.Within.Zip Codes
description: Comma-separated ZIP codes (exact match, any-of).
- name: location.zip
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Resolves the ZIP to its centroid, then runs `near` with the default radius.
examples:
- '80218'
title: Location.Zip
description: Resolves the ZIP to its centroid, then runs `near` with the default radius.
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ListEnvelope_Payer_'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'422':
description: Validation error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: Rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- BearerAuth: []
/v3/payers/{payer_id}:
get:
tags:
- Consumer Pricing
summary: Get Payer Details
description: Fetch details about a single payer by payer ID.
operationId: v3_get_payer
parameters:
- name: payer_id
in: path
required: true
schema:
type: string
description: Payer identifier.
examples:
- '76'
title: Payer Id
description: Payer identifier.
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/Payer'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'422':
description: Validation error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: Rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- BearerAuth: []
/v3/networks:
get:
tags:
- Consumer Pricing
summary: List Networks
description: Retrieve a list of payer networks, filtered over a search by name, payer organization (e.g., Cigna), location
for care, or specific providers and services priced in the Turquoise data. Location scopes to payer networks with
at least one price at an in-area provider. Results reflect provider, payer network, and package combinations that
Turquoise has priced services for; the list may not be comprehensive of all contracted providers or services that
are available.
operationId: v3_list_networks
parameters:
- name: name
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Case-insensitive substring match on network or payer name.
examples:
- Cigna
- National OAP
title: Name
description: Case-insensitive substring match on network or payer name.
- name: payer_id
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Exact payer id match.
examples:
- '76'
title: Payer Id
description: Exact payer id match.
- name: provider_id
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Networks with at least one price at this provider.
examples:
- '5756'
title: Provider Id
description: Networks with at least one price at this provider.
- name: package_id
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Networks with at least one price for this package.
examples:
- OB002
title: Package Id
description: Networks with at least one price for this package.
- name: search
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Semantic search over network and payer names. Composes with the other filters; returns a single relevance-ordered
page (no cursor).
examples:
- Cigna
title: Search
description: Semantic search over network and payer names. Composes with the other filters; returns a single relevance-ordered
page (no cursor).
- name: min_score
in: query
required: false
schema:
anyOf:
- type: number
maximum: 1.0
minimum: 0.0
- type: 'null'
description: Minimum similarity score (0-1).
title: Min Score
description: Minimum similarity score (0-1).
- name: page_size
in: query
required: false
schema:
type: integer
maximum: 250
minimum: 1
default: 25
title: Page Size
- name: cursor
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Opaque cursor from a previous page.next_cursor.
title: Cursor
description: Opaque cursor from a previous page.next_cursor.
- name: location.near.lat
in: query
required: false
schema:
anyOf:
- type: number
- type: 'null'
examples:
- 39.745961
title: Location.Near.Lat
- name: location.near.lng
in: query
required: false
schema:
anyOf:
- type: number
- type: 'null'
examples:
- -104.971559
title: Location.Near.Lng
- name: location.near.radius_m
in: query
required: false
schema:
anyOf:
- type: integer
minimum: 1
- type: 'null'
examples:
- 25000
title: Location.Near.Radius M
- name: location.within.state
in: query
required: false
schema:
anyOf:
- type: string
minLength: 2
maxLength: 2
- type: 'null'
examples:
- CO
title: Location.Within.State
- name: location.within.cbsa
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
examples:
- Denver-Aurora-Centennial, CO
title: Location.Within.Cbsa
- name: location.within.zip_codes
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Comma-separated ZIP codes (exact match, any-of).
examples:
- 80218,80210
title: Location.Within.Zip Codes
description: Comma-separated ZIP codes (exact match, any-of).
- name: location.zip
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Resolves the ZIP to its centroid, then runs `near` with the default radius.
examples:
- '80218'
title: Location.Zip
description: Resolves the ZIP to its centroid, then runs `near` with the default radius.
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ListEnvelope_Network_'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'422':
description: Validation error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: Rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- BearerAuth: []
/v3/networks/{network_id}:
get:
tags:
- Consumer Pricing
summary: Get Network Details
description: Fetch details about a single network by network ID.
operationId: v3_get_network
parameters:
- name: network_id
in: path
required: true
schema:
type: string
description: Network identifier (string-wrapped 64-bit integer).
examples:
- '-3776001016975145508'
title: Network Id
description: Network identifier (string-wrapped 64-bit integer).
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/Network'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'422':
description: Validation error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: Rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
security:
- BearerAuth: []
/v3/packages:
get:
tags:
- Consumer Pricing
summary: List Packages
description: Return a list of service packages, filtered over name or anchor code. Additionally, filter to a list of
packages with Turquoise price estimates available by a selected payer, network, or provider. Results reflect provider,
payer, and package combinations that Turquoise has priced services for; the list may not be comprehensive of all payer
networks or providers that support this service. When multiple relationship filters are combined, they must be satisfied
by the same price row, so results are always fulfillable via GET /v3/prices.
operationId: v3_list_packages
parameters:
- name: name
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Case-insensitive substring match on package name.
examples:
- delivery
title: Name
description: Case-insensitive substring match on package name.
- name: anchor_code
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Billing code lookup; matches against anchor_codes[].code (package base codes only). Returns every package
anchored by the code — exactly one in the current catalog, but uniqueness is not contractual (an anchor's full
upstream identity includes revenue code and billing class, which this API collapses).
examples:
- '59510'
title: Anchor Code
description: Billing code lookup; matches against anchor_codes[].code (package base codes only). Returns every package
anchored by the code — exactly one in the current catalog, but uniqueness is not contractual (an anchor's full upstream
identity includes revenue code and billing class, which this API collapses).
- name: provider_id
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Packages priced at this provider.
examples:
- '5756'
title: Provider Id
description: Packages priced at this provider.
- name: network_id
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Packages with at least one price under this network (combined with provider_id/payer_id, the same price
row must match).
examples:
- '-3776001016975145508'
title: Network Id
description: Packages with at least one price under this network (combined with provider_id/payer_id, the same price
row must match).
- name: payer_id
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Packages priced under any of this payer's networks (combined with other relationship filters, the same
price row must match).
examples:
- '76'
title: Payer Id
description: Packages priced under any of this payer's networks (combined with other relationship filters, the same
price row must match).
- name: search
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Semantic search over package name and description. Composes with the other filters; returns a single
relevance-ordered page (no cursor). 503 search_unavailable when the embedding index is not populated.
examples:
- cesarean delivery
title: Search
description: Semantic search over package name and description. Composes with the other filters; returns a single
relevance-ordered page (no cursor). 503 search_unavailable when the embedding index is not populated.
- name: min_score
in: query
required: false
schema:
anyOf:
- type: number
maximum: 1.0
minimum: 0.0
- type: 'null'
description: Minimum similarity score (0-1).
title: Min Score
description: Minimum similarity score (0-1).
- name: page_size
in: query
required: false
schema:
type: integer
maximum: 250
minimum: 1
default: 25
title: Page Size
- name: cursor
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Opaque cursor from a previous page.next_cursor.
title: Cursor
description: Opaque cursor from a previous page.next_cursor.
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ListEnvelope_Package_'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'422':
description: Validation error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: Rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorRespons
# --- truncated at 32 KB (135 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/turquoise-health/refs/heads/main/openapi/turquoise-health-consumer-pricing-openapi.yml