Skip to main content
GET
List Catalog Markets

Citations

Every product on this response carries a citations object keyed by the commission field it cites, identical to the one served by List Catalog Products. A product cites the same passage on every payload it appears in, so a highlight a user opens from a market is the highlight the product browse showed. Read grain before rendering: region carries a page and a normalized 0-1 rectangle, document carries neither and must render differently. Products do not reach page grain and their quote is always null; the full rules, and why a product may cite only its document, are on the List Catalog Products page.

Authorizations

Authorization
string
header
required

Send the credential as Authorization: Bearer <key>.

Scoped partner credentials use the exclusive nxsk_v1_... namespace. Each scoped key is bound at issuance to one organization, one canonical named environment, an explicit engine set, and a least-privilege capability set. A malformed, unknown, rotated, or revoked nxsk_ key fails closed and is never retried as a legacy key.

Capabilities used by this API are runs:write, runs:read, engines:read, catalog:read, webhooks:manage, runs:defensibility:read, runs:test, conversations:use, and conversations:export. Operation descriptions name the required capability. Grandfathered nx_live_... and nx_test_... keys retain their existing broad access during the compatibility window.

Query Parameters

connection_id
string<uuid>

Pin the browse to one active data connection. Optional when the org has a single active connection; required when it has more than one (an ambiguous request returns catalog_connection_ambiguous).

line
string

Line-of-business filter matched against the product's line or line_code.

state
string

Two-letter state code. Keeps products eligible in the state (not excluded).

Pattern: ^[A-Za-z]{2}$
naics
string

NAICS code to filter by. prohibited_naics and avoided_naics are product-level columns, so the filter drops individual products that prohibit the code (a multi-line market can survive on its other products) and sets avoided: true on products that list it in avoided_naics. The backing columns are populated by an in-flight extraction-quality effort; until then every product reads as non-prohibited.

Case-insensitive substring matched over the line label or market name.

min_commission_pct
number

Minimum commission in percent space (10 = 10%). Keeps a product whose new or renewal rate clears the floor.

Required range: x >= 0
page
integer
default:1

1-based page number. Defaults to 1.

Required range: x >= 1
page_size
integer
default:25

Rows per page, clamped to 100. Defaults to 25.

Required range: 1 <= x <= 100

Response

One page of markets with facets and corpus totals.

items
object[]
required
page
integer
required
page_size
integer
required
total_matched
integer
required

Markets matching the active filters.

total_corpus
integer
required

Markets in the connection, ignoring filters: every current market head, minus heads folded away by a current alias claim. This is the one market denominator, the same number the resolver reports as markets_total and the data funnel reports as market_heads. A market with no current products is listed and counted here like any other; backing on the item says what it stands on.

product_less_markets
integer | null
required

How many markets in this connection serve no current product. A corpus fact, computed unfiltered, so it does not move with your filters. While product_filter_active is true, these markets cannot match and are absent from total_matched: disclose that rather than showing a shorter list with no explanation. Null on the product and appetite pages, where the number says nothing.

product_filter_active
boolean
required

True when this request carries a filter only a product row can satisfy (line, state, naics, min_commission_pct). Served so no consumer has to re-derive which filter axes are product-predicated. search is not one of them: it matches the market name as well as the line label, so a product-less market whose name matches is a hit.

facets
object
required
has_prohibited_class_data
boolean
required

True when at least one current product in the connection carries an extracted prohibited-class list (data presence, not extraction coverage). Consumer rules: an empty per-product prohibited_naics never renders as "no prohibited classes", regardless of this flag (a default-empty row and an extracted-none row are indistinguishable); while the flag is false, additionally disclose that prohibited-class data is not yet extracted for this corpus.