Skip to main content
PATCH
Add one or more individual biomarkers to an appointment as à-la-carte tests, outside any pre-built panel. Routing decisions are made downstream by the order-logistics pipeline based on each biomarker’s per-lab mappings. The resulting set is validated synchronously against each lab’s closure rules. Some biomarkers can only be obtained by ordering them together with others — an LDL/HDL ratio, for example, is delivered by an order that also returns LDL and HDL, so requesting the ratio on its own isn’t a coherent order. (Those same components are what the ratio is priced as — see the pricing breakdown on List Biomarkers.) When the set can’t be cleanly ordered, the call returns 400 with a validation payload and nothing is persisted, so you can trial-and-error your way to a valid set:
  1. PATCH … { "biomarker_ids": [45] } (LDL/HDL ratio alone) → 400; validation.failures[].candidates[].missing_biomarkers lists LDL and HDL.
  2. PATCH … { "biomarker_ids": [45, 43, 42] } (ratio + LDL + HDL) → 200.
This call is idempotent: biomarkers already on the appointment are kept.
Biomarkers cannot be added after you call Confirm Blood Draw. Attempting to modify a confirmed appointment returns 409 Conflict.

Request

Path parameters

string
required
Unique identifier (UUID) of the appointment.

Body parameters

number[]
required
Array of biomarker IDs to attach. Must contain at least one item. Use List Biomarkers to discover IDs.

Response

On success, the API returns 200 OK confirming the biomarkers have been attached.
boolean
true when the biomarkers have been successfully added to the appointment.

Closure-validation failure (400)

When the resulting set can’t be cleanly ordered, the body is a BiomarkerValidationError (see the 400 schema in the API playground above):
  • error — a human-readable summary of why the set can’t be ordered.
  • validation.failures[] — present only on closure-validation failures (absent on plain body-validation errors). One entry per lab that rejected the set, each with candidates[]. A candidate lists the order_ids it would place and the missing_biomarkers ({ id, name }) you’d need to add — keep your originals, add those, and retry.

Error responses