Skip to main content
GET
Returns a paginated catalog of biomarkers your API key can attach to appointments via Add Individual Biomarkers. Archived biomarkers are excluded. Only blood-collectable biomarkers are listed. Appointments are blood draws, so biomarkers whose sample is a non-blood material (urine, saliva, stool, swabs, and the like) are excluded — you can’t collect them at a draw. Markers with no specific material (ratios, genetic markers) are kept.

Request

Query parameters

string
Restrict the catalog to biomarkers testable at this location, and populate per-biomarker pricing for its routing pipeline. The filter is the union across every lab the location’s logistic template supports: a biomarker is included if it is testable at at least one of those labs.
string
Override which rate card the yours price uses: retail, subscription, or a billing-account slug your key may use. Defaults to the card on your API key’s billing account, else retail. Only affects pricing (which requires test_location_id).
number
Maximum results to return (1–1000). Omit to return the entire matching catalog — it’s bounded (a few thousand rows at most). When omitted, pagination.limit echoes back total.
number
default:"0"
Pagination offset. Must be ≥ 0.

Response

Biomarker[]
Array of biomarkers matching the query.
object

Price objects

Pricing has one shape everywhere it appears — biomarkers, panels, and the appointment preview. It is always a pair of breakdowns:
object | null
Recommended retail price (retail rate card), or null when not priceable.
object | null
Your price, at the rate card on your API key’s billing account (equals retail when your key has no billing-account card).
Each breakdown is a list of billing groups — each billed once — plus a total:
integer
Sum of all groups (each billed once), in cents.
object[]
The billing groups (order groups — a ZOTZ|KLIMAS order panel, an LC price group, a flat bundle, a Stripe panel). Every group carries price_cents (the group’s cost at this card, billed once) and biomarker_ids (every biomarker it delivers; empty for panel-level groups). A ZK GOÄ group also carries goa_lines — how the price was built. Absent for flat-priced bundles, every other lab, rate-card overrides, and Stripe-priced panels.
integer
What this group costs at this card, in cents (billed once). This is what you pay — when goa_lines is present it equals the sum of their amount_cents.
number[]
Every biomarker this group delivers — not just the one you queried. The order group is billed once, so this is what comes with it: prerequisite results (a blood-count differential pulls the full count) and co-delivered markers (one fatty-acid run yields the whole panel), plus, for a ratio, its components (the ratio rides along). Empty for panel-level groups. Because order groups are shared, summing per-biomarker prices across a basket over-counts — use the appointment preview for an exact cart total.
object[] | undefined
The GOÄ positions making up this charge (ZK GOÄ analyses) — usually one, but a panel can bill several codes. Each line is { goa_code, goa_base_cents (GOÄ 1.0× baseline / Einfachsatz), quantity (may be fractional, e.g. 3.5), factor (the multiplier applied to the 1.0× price on this card — e.g. 1.15 retail / 0.8 partner / 0 when ZK invoices you directly; NOT a GOÄ Steigerungsfaktor), amount_cents (what the line costs = goa_base_cents × quantity × factor, server-rounded — read it directly) }. Omitted for flat-priced bundles, other labs, rate-card overrides, and Stripe-priced panels.

Error responses