> ## Documentation Index
> Fetch the complete documentation index at: https://docs.anivahealth.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Biomarker

> Fetch a single biomarker by ID

Returns a single biomarker by its numeric `id`. Useful for resolving the IDs returned by [List Panels](/api/panels/list-panels) or appointment payloads into full details (name, unit, material, category) without scanning the entire catalog.

Only **blood-collectable** biomarkers are exposed (the same catalog as [List Biomarkers](/api/biomarkers/list-biomarkers)). Archived biomarkers — and biomarkers whose sample is a non-blood material (urine, saliva, stool, swabs, …) — return `404`.

## Path parameters

<ParamField path="id" type="number" required>
  Biomarker identifier.
</ParamField>

## Response

<ResponseField name="id" type="number">
  Stable biomarker identifier.
</ResponseField>

<ResponseField name="slug" type="string">
  URL-safe identifier.
</ResponseField>

<ResponseField name="name" type="string">
  Display name.
</ResponseField>

<ResponseField name="description" type="string | null">
  Long-form description, when available.
</ResponseField>

<ResponseField name="primary_category" type="string | null">
  Primary category (e.g. `Hormones`, `Vitamins`).
</ResponseField>

<ResponseField name="secondary_category" type="string | null">
  Secondary category.
</ResponseField>

<ResponseField name="type" type="&#x22;clinical&#x22; | &#x22;genetic&#x22;">
  Whether this biomarker is a clinical measurement or a genetic marker.
</ResponseField>

<ResponseField name="material" type="string | null">
  Sample material required (e.g. `serum`, `whole_blood`).
</ResponseField>

<ResponseField name="unit" type="object | null">
  Default measurement unit. Use `id` to dereference against [List Units](/api/units/list-units) if
  you need stable identity across renames.

  <Expandable title="Unit fields">
    <ResponseField name="id" type="number">
      Stable measurement unit identifier.
    </ResponseField>

    <ResponseField name="title" type="string">
      Canonical unit title (e.g. `nmol/L`).
    </ResponseField>

    <ResponseField name="display_title" type="string | null">
      Humanised display title.
    </ResponseField>
  </Expandable>
</ResponseField>

## Error responses

| Status | Description                                              |
| ------ | -------------------------------------------------------- |
| `400`  | Validation error — invalid `id`.                         |
| `403`  | Forbidden — missing `panels_access` scope.               |
| `404`  | Biomarker not found, archived, or not blood-collectable. |
| `500`  | Internal server error.                                   |

<RequestExample>
  ```bash cURL theme={null}
  curl --url 'https://anivahealth.com/api/v1/biomarkers/42' \
    --header 'x-api-key: YOUR_API_KEY'
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "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 }
  }
  ```
</ResponseExample>
