Appointments
Get Lab Results
Retrieve clinical and genetic lab results for an appointment
GET
/
api
/
v1
/
appointments
/
{id}
/
results
curl --request GET \
--url https://anivahealth.com/api/v1/appointments/c9f3e2a1-7d6b-4c5e-b3a2-1f0e9d8c7b6a/results \
--header 'x-api-key: YOUR_API_KEY'
{
"status": "in_progress",
"clinical_results": [
{
"status": "received",
"status_reason": null,
"biomarker_id": 104,
"biomarker_name": "Vitamin D",
"category": "Vitamins",
"value": 38.5,
"value_operator": "eq",
"unit_id": 1,
"unit": "ng/mL",
"reference_range_lab": {
"normal_min": 30,
"normal_max": 100,
"optimal_min": null,
"optimal_max": null
},
"reference_range_aniva": {
"normal_min": 30,
"normal_max": 80,
"optimal_min": 40,
"optimal_max": 60
},
"tested_at": "2026-04-05",
"comment": null,
"lab_reported": {
"name": "Vitamin D (25-OH)",
"code": "vitd",
"category": "Endokrinologie",
"value": "38.5",
"unit": "ng/ml",
"reference_range": "30 - 100",
"reference_range_min": 30,
"reference_range_max": 100,
"flag": "normal",
"result_status": "final",
"comment": null
}
},
{
"status": "received",
"status_reason": null,
"biomarker_id": 93,
"biomarker_name": "Alanine Aminotransferase (ALT)",
"category": "Liver",
"value": 0.33,
"value_operator": "eq",
"unit_id": 63,
"unit": "µkat/L",
"reference_range_lab": {
"normal_min": null,
"normal_max": 0.82,
"optimal_min": null,
"optimal_max": null
},
"reference_range_aniva": null,
"tested_at": "2026-04-05",
"comment": null,
"lab_reported": {
"name": "GPT (ALT) (S, U/l)",
"code": "gpt",
"category": "Klinische Chemie",
"value": "20",
"unit": "U/l",
"reference_range": "< 50",
"reference_range_min": null,
"reference_range_max": 49,
"flag": "normal",
"result_status": "final",
"comment": null
}
},
{
"status": "fault",
"status_reason": "Sample tube contaminated with manganese — implausibly high value; the lab cancelled the request and asked for a lithium-heparin tube.",
"biomarker_id": 326,
"biomarker_name": "Manganese, whole blood mixture",
"category": "Micronutrients",
"value": 114,
"value_operator": "eq",
"unit_id": 24,
"unit": "µg/L",
"reference_range_lab": {
"normal_min": 6,
"normal_max": 11,
"optimal_min": null,
"optimal_max": null
},
"reference_range_aniva": null,
"tested_at": "2026-04-05",
"comment": null,
"lab_reported": {
"name": "Mangan (Vollblut, µg/l)",
"code": "mn",
"category": "Spurenelemente",
"value": "114",
"unit": "µg/l",
"reference_range": "6 - 11",
"reference_range_min": 6,
"reference_range_max": 11,
"flag": "critical_high",
"result_status": "final",
"comment": null
}
},
{
"status": "planned",
"status_reason": null,
"biomarker_id": 79,
"biomarker_name": "Thyroid-Stimulating Hormone (TSH)",
"category": "Hormones",
"value": null,
"value_operator": null,
"unit_id": null,
"unit": null,
"reference_range_lab": null,
"reference_range_aniva": null,
"tested_at": null,
"comment": null,
"lab_reported": null
}
],
"genetic_results": [
{
"status": "received",
"status_reason": null,
"biomarker_id": 348,
"gene": "APOE",
"genotype": "E3/E4",
"clinical_significance": "moderate_risk",
"risk_description": "Carriers of one APOE E4 allele have a moderately increased risk of Alzheimer's disease.",
"tested_at": "2026-04-05",
"comment": null,
"variants": [
{
"name": "APOE E4",
"clinical_significance": "moderate_risk",
"description": "The E4 allele is associated with increased Alzheimer's risk.",
"hgvs_c": "c.388T>C",
"hgvs_p": "p.Cys130Arg",
"conditions": [
{
"condition": "Alzheimer's disease",
"association_description": "Increased risk with one E4 allele",
"badge": "Moderate Risk"
}
],
"snvs": [
{
"rs_id": "rs429358",
"allele": "C",
"reference_allele": "T",
"hgvs_c": "c.388T>C",
"hgvs_p": "p.Cys130Arg"
}
]
}
]
}
],
"documents": [
{
"id": "f8a1b2c3-d4e5-4f6a-7b8c-9d0e1f2a3b4c",
"file_name": "lab-report-2026-04-05.pdf"
}
]
}
{
"error": "Appointment not found"
}
Retrieve clinical and genetic lab results for an appointment, along with document references for lab report PDFs.
Every biomarker ordered for the appointment appears in the response, so you can track the whole order rather than only what has come back. Read
status on each result before using its value:
- Tests still outstanding appear with status
plannedwhile the appointment isin_progress. - Results the lab delivered but that must not be used clinically appear with status
faultorundeliverable, and carry astatus_reasonexplaining why. Afaultresult still has itsvaluepopulated — that value is wrong. Never present it as a finding.
documents array.
Request
Path parameters
string
required
Unique identifier (UUID) of the appointment to retrieve results for.
Response
On success, the API returns200 OK with the results object.
string
required
Overall results status. One of
in_progress (some submissions still processing) or completed
(all done).object[]
required
Array of clinical biomarker results.
Show clinical result object
Show clinical result object
string
required
Result status. One of:
planned— ordered, not returned by the lab yet.valueisnull.received— delivered by the lab.corrected— delivered, then revised by a human.valueis the corrected value.fault— delivered but confirmed wrong; do not use clinically.valueis populated with the wrong figure. Seestatus_reason.undeliverable— the lab could not produce a value.valueisnull. Seestatus_reason.
string
required
Why the result is unusable. Populated for
fault and undeliverable, null for every other status.Distinct from comment, which is the lab’s own note on the report — comment is empty on most faulted results, so treat status_reason as the authoritative explanation.integer
required
Biomarker identifier.
string
required
Biomarker display name.
string
Biomarker category (e.g., Hormones, Vitamins). May be
null.number
Effective result value (corrected if available, otherwise raw). May be
null.string
Comparison operator for the value:
eq (equals), lt (less than), or gt (greater than). May be null.integer
Measurement unit identifier. May be
null.string
Measurement unit display name. May be
null.object
Reference ranges reported by the lab for this result, converted to the same unit as
value. null when the lab reported no range.A bound the lab left open stays null, so a one-sided interval populates only its own end — an upper threshold arrives as normal_min: null, normal_max: 50, a lower one as normal_min: 55, normal_max: null. Do not read a null bound as zero or unbounded-by-default; read it as “the lab set no limit on that side”.Each result carries the range it was measured against, so a patient whose results span several draws or several labs gets the correct interval per result rather than the most recent one.object
Aniva-curated reference ranges adjusted for age, sex, and pregnancy status. May be
null.string
Date the test was performed in
YYYY-MM-DD format. May be null.string
Optional comment on the result. May be
null.object
The performing lab’s own report line, verbatim — for reading this payload against the lab’s PDF. May be
null when we hold no raw record for the result.Every other field on a result is normalized: value and unit are converted to the biomarker’s default unit, and biomarker_name is our name for the analyte, not the lab’s. The fields below are not. Treat them as the as-printed reference and the canonical fields as the consistency cross-check.Numbers here are the lab’s own bounds on the lab’s own scale — reference_range_min and reference_range_max are not unit-converted and will differ from reference_range_lab wherever the two scales differ. A bound the lab left open stays null; nothing is inferred or defaulted.Show lab reported
Show lab reported
string
Analyte name as printed by the lab. May be
null.string
The lab’s own analyte code. May be
null.string
Report section heading, e.g.
Klinische Chemie. May be null.string
Value as printed. A string, so non-numeric results survive intact (
<0.04, negativ, 1:100). May be null.string
Unit as printed, e.g.
U/l. May be null.string
Reference interval as printed, including one-sided thresholds:
40 - 129, < 50, > 55. May be null.number
The lab’s lower bound, unconverted.
null for an interval the lab left open below.number
The lab’s upper bound, unconverted.
null for an interval the lab left open above.string
The lab’s abnormality flag for this line:
normal, high, low, critical_high, critical_low, abnormal. A code we do not recognize passes through as the lab sent it. May be null.string
The lab’s result status:
final, preliminary, correction, incomplete, partial, deleted, cannot_be_obtained. A preliminary value can still be revised — re-poll before treating it as settled. May be null.string
The lab’s own note on this line. Column padding is collapsed; wording is untouched. May be
null.object[]
required
Array of genetic biomarker results.
Show genetic result object
Show genetic result object
string
required
Result status. One of:
planned— ordered, not returned by the lab yet.received— delivered by the lab.fault— delivered but confirmed wrong; do not use clinically. Seestatus_reason.undeliverable— the lab could not produce a genotype. Seestatus_reason.
string
required
Why the result is unusable. Populated for
fault and undeliverable, null for every other status.integer
required
Biomarker (gene) identifier.
string
required
Gene symbol (e.g., APOE, MTHFR).
string
Genotype display (e.g., E3/E4). May be
null.string
Overall clinical significance. One of
pathogenic, likely_pathogenic, uncertain, likely_benign, benign, high_risk, moderate_risk, low_risk, protective, drug_response, poor_metabolizer, or rapid_metabolizer. May be null.string
Risk description for this genotype. May be
null.string
Date the test was performed in
YYYY-MM-DD format. May be null.string
Optional comment on the result. May be
null.object[]
required
Detected genetic variants.
Show variant object
Show variant object
string
required
Variant common name (e.g., APOE E4).
string
Variant-level clinical significance. May be
null.string
Variant description. May be
null.string
HGVS coding DNA notation. May be
null.string
HGVS protein notation. May be
null.object[]
required
object[]
required
Single nucleotide variants defining this variant.
object[]
required
Lab report documents. Use
GET /api/v1/documents/{id} to download each file.Show document object
Show document object
string
required
File identifier (UUID). Pass to Download Document to retrieve the file.
string
required
Original file name.
Error responses
| Status | Description |
|---|---|
400 | Invalid ID format — the provided value is not a valid UUID. |
403 | Forbidden — your API key does not have access to this operation or the appointment is outside your access context. |
404 | Appointment not found. |
500 | Internal server error. |
curl --request GET \
--url https://anivahealth.com/api/v1/appointments/c9f3e2a1-7d6b-4c5e-b3a2-1f0e9d8c7b6a/results \
--header 'x-api-key: YOUR_API_KEY'
{
"status": "in_progress",
"clinical_results": [
{
"status": "received",
"status_reason": null,
"biomarker_id": 104,
"biomarker_name": "Vitamin D",
"category": "Vitamins",
"value": 38.5,
"value_operator": "eq",
"unit_id": 1,
"unit": "ng/mL",
"reference_range_lab": {
"normal_min": 30,
"normal_max": 100,
"optimal_min": null,
"optimal_max": null
},
"reference_range_aniva": {
"normal_min": 30,
"normal_max": 80,
"optimal_min": 40,
"optimal_max": 60
},
"tested_at": "2026-04-05",
"comment": null,
"lab_reported": {
"name": "Vitamin D (25-OH)",
"code": "vitd",
"category": "Endokrinologie",
"value": "38.5",
"unit": "ng/ml",
"reference_range": "30 - 100",
"reference_range_min": 30,
"reference_range_max": 100,
"flag": "normal",
"result_status": "final",
"comment": null
}
},
{
"status": "received",
"status_reason": null,
"biomarker_id": 93,
"biomarker_name": "Alanine Aminotransferase (ALT)",
"category": "Liver",
"value": 0.33,
"value_operator": "eq",
"unit_id": 63,
"unit": "µkat/L",
"reference_range_lab": {
"normal_min": null,
"normal_max": 0.82,
"optimal_min": null,
"optimal_max": null
},
"reference_range_aniva": null,
"tested_at": "2026-04-05",
"comment": null,
"lab_reported": {
"name": "GPT (ALT) (S, U/l)",
"code": "gpt",
"category": "Klinische Chemie",
"value": "20",
"unit": "U/l",
"reference_range": "< 50",
"reference_range_min": null,
"reference_range_max": 49,
"flag": "normal",
"result_status": "final",
"comment": null
}
},
{
"status": "fault",
"status_reason": "Sample tube contaminated with manganese — implausibly high value; the lab cancelled the request and asked for a lithium-heparin tube.",
"biomarker_id": 326,
"biomarker_name": "Manganese, whole blood mixture",
"category": "Micronutrients",
"value": 114,
"value_operator": "eq",
"unit_id": 24,
"unit": "µg/L",
"reference_range_lab": {
"normal_min": 6,
"normal_max": 11,
"optimal_min": null,
"optimal_max": null
},
"reference_range_aniva": null,
"tested_at": "2026-04-05",
"comment": null,
"lab_reported": {
"name": "Mangan (Vollblut, µg/l)",
"code": "mn",
"category": "Spurenelemente",
"value": "114",
"unit": "µg/l",
"reference_range": "6 - 11",
"reference_range_min": 6,
"reference_range_max": 11,
"flag": "critical_high",
"result_status": "final",
"comment": null
}
},
{
"status": "planned",
"status_reason": null,
"biomarker_id": 79,
"biomarker_name": "Thyroid-Stimulating Hormone (TSH)",
"category": "Hormones",
"value": null,
"value_operator": null,
"unit_id": null,
"unit": null,
"reference_range_lab": null,
"reference_range_aniva": null,
"tested_at": null,
"comment": null,
"lab_reported": null
}
],
"genetic_results": [
{
"status": "received",
"status_reason": null,
"biomarker_id": 348,
"gene": "APOE",
"genotype": "E3/E4",
"clinical_significance": "moderate_risk",
"risk_description": "Carriers of one APOE E4 allele have a moderately increased risk of Alzheimer's disease.",
"tested_at": "2026-04-05",
"comment": null,
"variants": [
{
"name": "APOE E4",
"clinical_significance": "moderate_risk",
"description": "The E4 allele is associated with increased Alzheimer's risk.",
"hgvs_c": "c.388T>C",
"hgvs_p": "p.Cys130Arg",
"conditions": [
{
"condition": "Alzheimer's disease",
"association_description": "Increased risk with one E4 allele",
"badge": "Moderate Risk"
}
],
"snvs": [
{
"rs_id": "rs429358",
"allele": "C",
"reference_allele": "T",
"hgvs_c": "c.388T>C",
"hgvs_p": "p.Cys130Arg"
}
]
}
]
}
],
"documents": [
{
"id": "f8a1b2c3-d4e5-4f6a-7b8c-9d0e1f2a3b4c",
"file_name": "lab-report-2026-04-05.pdf"
}
]
}
{
"error": "Appointment not found"
}
⌘I
curl --request GET \
--url https://anivahealth.com/api/v1/appointments/c9f3e2a1-7d6b-4c5e-b3a2-1f0e9d8c7b6a/results \
--header 'x-api-key: YOUR_API_KEY'
{
"status": "in_progress",
"clinical_results": [
{
"status": "received",
"status_reason": null,
"biomarker_id": 104,
"biomarker_name": "Vitamin D",
"category": "Vitamins",
"value": 38.5,
"value_operator": "eq",
"unit_id": 1,
"unit": "ng/mL",
"reference_range_lab": {
"normal_min": 30,
"normal_max": 100,
"optimal_min": null,
"optimal_max": null
},
"reference_range_aniva": {
"normal_min": 30,
"normal_max": 80,
"optimal_min": 40,
"optimal_max": 60
},
"tested_at": "2026-04-05",
"comment": null,
"lab_reported": {
"name": "Vitamin D (25-OH)",
"code": "vitd",
"category": "Endokrinologie",
"value": "38.5",
"unit": "ng/ml",
"reference_range": "30 - 100",
"reference_range_min": 30,
"reference_range_max": 100,
"flag": "normal",
"result_status": "final",
"comment": null
}
},
{
"status": "received",
"status_reason": null,
"biomarker_id": 93,
"biomarker_name": "Alanine Aminotransferase (ALT)",
"category": "Liver",
"value": 0.33,
"value_operator": "eq",
"unit_id": 63,
"unit": "µkat/L",
"reference_range_lab": {
"normal_min": null,
"normal_max": 0.82,
"optimal_min": null,
"optimal_max": null
},
"reference_range_aniva": null,
"tested_at": "2026-04-05",
"comment": null,
"lab_reported": {
"name": "GPT (ALT) (S, U/l)",
"code": "gpt",
"category": "Klinische Chemie",
"value": "20",
"unit": "U/l",
"reference_range": "< 50",
"reference_range_min": null,
"reference_range_max": 49,
"flag": "normal",
"result_status": "final",
"comment": null
}
},
{
"status": "fault",
"status_reason": "Sample tube contaminated with manganese — implausibly high value; the lab cancelled the request and asked for a lithium-heparin tube.",
"biomarker_id": 326,
"biomarker_name": "Manganese, whole blood mixture",
"category": "Micronutrients",
"value": 114,
"value_operator": "eq",
"unit_id": 24,
"unit": "µg/L",
"reference_range_lab": {
"normal_min": 6,
"normal_max": 11,
"optimal_min": null,
"optimal_max": null
},
"reference_range_aniva": null,
"tested_at": "2026-04-05",
"comment": null,
"lab_reported": {
"name": "Mangan (Vollblut, µg/l)",
"code": "mn",
"category": "Spurenelemente",
"value": "114",
"unit": "µg/l",
"reference_range": "6 - 11",
"reference_range_min": 6,
"reference_range_max": 11,
"flag": "critical_high",
"result_status": "final",
"comment": null
}
},
{
"status": "planned",
"status_reason": null,
"biomarker_id": 79,
"biomarker_name": "Thyroid-Stimulating Hormone (TSH)",
"category": "Hormones",
"value": null,
"value_operator": null,
"unit_id": null,
"unit": null,
"reference_range_lab": null,
"reference_range_aniva": null,
"tested_at": null,
"comment": null,
"lab_reported": null
}
],
"genetic_results": [
{
"status": "received",
"status_reason": null,
"biomarker_id": 348,
"gene": "APOE",
"genotype": "E3/E4",
"clinical_significance": "moderate_risk",
"risk_description": "Carriers of one APOE E4 allele have a moderately increased risk of Alzheimer's disease.",
"tested_at": "2026-04-05",
"comment": null,
"variants": [
{
"name": "APOE E4",
"clinical_significance": "moderate_risk",
"description": "The E4 allele is associated with increased Alzheimer's risk.",
"hgvs_c": "c.388T>C",
"hgvs_p": "p.Cys130Arg",
"conditions": [
{
"condition": "Alzheimer's disease",
"association_description": "Increased risk with one E4 allele",
"badge": "Moderate Risk"
}
],
"snvs": [
{
"rs_id": "rs429358",
"allele": "C",
"reference_allele": "T",
"hgvs_c": "c.388T>C",
"hgvs_p": "p.Cys130Arg"
}
]
}
]
}
],
"documents": [
{
"id": "f8a1b2c3-d4e5-4f6a-7b8c-9d0e1f2a3b4c",
"file_name": "lab-report-2026-04-05.pdf"
}
]
}
{
"error": "Appointment not found"
}