---
title: "Blood draws, newest first, with their results"
method: GET
path: "/labs/draws"
tags: ["Lab results"]
---

# Blood draws, newest first, with their results

`GET /labs/draws`

## Request

- Base URL: `https://bodylab.lol/api/v1`
- URL: `https://bodylab.lol/api/v1/labs/draws`
- Auth: HTTP bearer

## Headers

- `X-Client-Platform` string
- `X-Client-Version` string

## Response `200`

OK

- object
  - `draws` object[], required
    - `id` string, required: Opaque identifier.
    - `localDate` string, date, required: The day of the draw on the athlete's calendar.
    - `collectedTime` string, nullable, required: HH:MM on the athlete's clock, where the report gave a time.
    - `collectedAt` string, date-time, nullable, required: An instant: ISO-8601 with offset, e.g. 2026-09-13T06:30:00Z.
    - `labName` string, nullable, required
    - `fastingHours` number, nullable, required: Null: not answered.
    - `recentIllness` boolean, nullable, required
    - `ironSupplement10d` boolean, nullable, required: Iron by mouth or infusion in the 10 days before.
    - `biotin` boolean, nullable, required
    - `creatine` boolean, nullable, required
    - `hormoneMedication` boolean, nullable, required: Thyroid or sex-hormone medication, hormonal contraception included.
    - `menstruating` boolean, nullable, required: false: no current cycle.
    - `cycleDay` integer, nullable, required
    - `altitudeM` number, nullable, required: The altitude the athlete lived at, metres.
    - `hoursSinceSession` number, nullable, required: Hours from the end of the athlete's last recorded session to the draw, worked out from their activities when read; null where it can't be told.
    - `source` string, required: How the draw was entered. Known values: manual. Treat unknown values as "other".
    - `results` object[], required
      - `id` string, required: Opaque identifier.
      - `marker` string, required: A catalog key (ferritin, ldl_c, apob, …) or a key made from a printed name the catalog doesn't know.
      - `name` string, nullable, required: The marker's name as printed, where it was typed.
      - `label` string, required: The catalog's name for a known marker, else the printed name.
      - `value` number, required
      - `comparator` string, nullable, required: How a result printed like "<0.5" compares; null for a plain number. Known values: <, <=, >, >=. Treat unknown values as "other".
      - `unit` string, required: As printed.
      - `valueCanonical` number, nullable, required: In `canonicalUnit`, only where the conversion is a fixed factor. Always null for Lp(a).
      - `canonicalUnit` string, nullable, required
      - `method` string, nullable, required: For example the LDL or eGFR equation.
      - `assay` string, nullable, required
      - `rangeLow` number, nullable, required: The lab's range as printed.
      - `rangeHigh` number, nullable, required
      - `rangeText` string, nullable, required: The range as printed, where it isn't two numbers.
      - `labFlag` string, nullable, required: As printed: H, L, critical, …
    - `createdAt` string, date-time, required: An instant: ISO-8601 with offset, e.g. 2026-09-13T06:30:00Z.
    - `updatedAt` string, date-time, required: An instant: ISO-8601 with offset, e.g. 2026-09-13T06:30:00Z.

## Other responses

- `401`: Error: UNAUTHORIZED.

---

[API](https://skmtc.dev/bodylab/apis/body-lab-api.md) · [All operations](https://skmtc.dev/bodylab/apis/body-lab-api/llms.txt) · [OpenAPI document](https://skmtc.dev/bodylab/apis/body-lab-api/revisions/544c201eaf88?raw)
