Biomarkers
List Biomarkers
Browse the biomarker catalog
GET
/
api
/
v1
/
biomarkers
curl --url 'https://anivahealth.com/api/v1/biomarkers?home_kit=true&limit=5' \
--header 'x-api-key: YOUR_API_KEY'
{
"data": [
{
"id": 42,
"slug": "vitamin-d-25-oh",
"name": "Vitamin D (25-OH)",
"description": "Serum 25-hydroxyvitamin D …",
"primary_category": "Vitamins",
"secondary_category": null,
"type": "clinical",
"material": "serum",
"unit": { "id": 1, "title": "nmol/L", "display_title": null },
"pricing": {
"price_cents": 3952,
"retail_cents": 4549,
"tier": "specialty",
"positions": [
{
"id": "b7d4c2e1-9a3f-4c8b-91d2-5e6f7a8b9c0d",
"name": "Vitamin panel",
"price_cents": 6900,
"retail_cents": 7935,
"biomarker_ids": [42, 43, 44],
"includes": [43, 44]
}
]
}
}
],
"pagination": { "total": 17, "limit": 5, "offset": 0, "has_more": true }
}
Returns a paginated catalog of the biomarkers your API key can order at one origin. Attach them to appointments or to home kits. Archived biomarkers are excluded.
A biomarker lists when an order at a lab your key may use delivers it, and the order draws only into containers the origin holds. The sample tubes decide, not the analyte type.
Requires the
Panels carry
panels_access scope. The pricing object also requires the prices_view scope.
Request
Query parameters
The origin is one of two shapes: a test location or a home kit. Send exactly one. Neither or both returns400.
- Test location
- Home kit
string
required
The location the appointments are drawn at. A biomarker lists when its order draws only into
containers that location holds. Correlate with List Locations.
boolean
required
Set to
true. A biomarker lists when an order at a home-kit lab draws only into the
containers a kit holds: capillary serum and EDTA, dried blood spot, urine and swab.
Venous-only biomarkers are left out.string
Override which rate card
price_cents uses: retail, or the id of a rate card your key may use. Get Rate Card returns that id. Defaults to the card on your API key’s billing account, else retail.
retail_cents is always the retail card.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.
Show Biomarker fields
Show Biomarker fields
number
Stable biomarker identifier — pass this to Add Custom
Biomarkers.
string
URL-safe identifier.
string
Display name.
string | null
Long-form description, when available.
string | null
Primary category (e.g.
Hormones, Vitamins).string | null
Secondary category.
"clinical" | "genetic"
Whether this biomarker is a clinical measurement or a genetic marker.
string | null
Sample material required (e.g.
serum, whole_blood).object | null
Default measurement unit. Use
id to dereference against List Units
if you need stable identity across renames.object | null
What this biomarker costs and how it is sold — see price objects.
null
only when your key lacks the prices_view scope; a biomarker Aniva has not priced is
still returned, with pricing.price_cents: null.object
Price objects
Pricing has one shape everywhere it appears — biomarkers, panels, the appointment preview and a quote. Pricing explains the model behind it; this is the field reference. Every amount is integer cents.integer | null
What this costs on your rate card.
0 is a real price of zero — the item is not sold on its
own, and the requires or positions block beside it says how it is sold instead. null is
different: Aniva has not priced it, it is not free, it cannot be ordered, and it adds nothing to
any total.integer | null
The same amount at the recommended retail card. Always present; equal to
price_cents when your
key is already on the retail card."routine" | "specialty"
Which of your card’s two Aniva rates priced this marker. Present only when it has a price of its
own.
object[]
The commercial offers containing this biomarker, cheapest first. With
price_cents: 0 these are
the only way to order it; with a positive price_cents they are the bundles it also belongs to.
A position bills once and is always delivered whole.string
Stable position identifier. Joins
via_position on an appointment bill.string
Partner-facing position name.
integer | null
What the whole position costs on your card, billed once.
retail_cents sits beside it.number[]
Every biomarker the position delivers, including the one you queried.
number[]
The members other than the biomarker you queried — what rides along when you buy it.
object[]
Present when this biomarker is a ratio. Ordering it puts these components in the cart at
their own prices, and a component is paid once per cart however many ratios lean on it. The
ratio’s own
price_cents is billed in addition to its components. Most ratios cost 0. Each
entry carries id, name, price_cents and retail_cents.A ratio whose components are not all priced is absent from the catalog entirely — it never
appears with price_cents: null.price_cents and retail_cents alone: a panel has a single catalog price and no
positions or components.
Error responses
| Status | Description |
|---|---|
400 | Validation error — e.g. no origin or two origins, limit out of range, or unknown/unauthorised rate_card. |
403 | Forbidden — missing panels_access scope. |
404 | test_location_id names no test location. |
500 | Internal server error. |
curl --url 'https://anivahealth.com/api/v1/biomarkers?home_kit=true&limit=5' \
--header 'x-api-key: YOUR_API_KEY'
{
"data": [
{
"id": 42,
"slug": "vitamin-d-25-oh",
"name": "Vitamin D (25-OH)",
"description": "Serum 25-hydroxyvitamin D …",
"primary_category": "Vitamins",
"secondary_category": null,
"type": "clinical",
"material": "serum",
"unit": { "id": 1, "title": "nmol/L", "display_title": null },
"pricing": {
"price_cents": 3952,
"retail_cents": 4549,
"tier": "specialty",
"positions": [
{
"id": "b7d4c2e1-9a3f-4c8b-91d2-5e6f7a8b9c0d",
"name": "Vitamin panel",
"price_cents": 6900,
"retail_cents": 7935,
"biomarker_ids": [42, 43, 44],
"includes": [43, 44]
}
]
}
}
],
"pagination": { "total": 17, "limit": 5, "offset": 0, "has_more": true }
}
⌘I
curl --url 'https://anivahealth.com/api/v1/biomarkers?home_kit=true&limit=5' \
--header 'x-api-key: YOUR_API_KEY'
{
"data": [
{
"id": 42,
"slug": "vitamin-d-25-oh",
"name": "Vitamin D (25-OH)",
"description": "Serum 25-hydroxyvitamin D …",
"primary_category": "Vitamins",
"secondary_category": null,
"type": "clinical",
"material": "serum",
"unit": { "id": 1, "title": "nmol/L", "display_title": null },
"pricing": {
"price_cents": 3952,
"retail_cents": 4549,
"tier": "specialty",
"positions": [
{
"id": "b7d4c2e1-9a3f-4c8b-91d2-5e6f7a8b9c0d",
"name": "Vitamin panel",
"price_cents": 6900,
"retail_cents": 7935,
"biomarker_ids": [42, 43, 44],
"includes": [43, 44]
}
]
}
}
],
"pagination": { "total": 17, "limit": 5, "offset": 0, "has_more": true }
}