Biomarker Analysis API

Laboratory Results, Read the Way a Clinician Reads Them.

Send a lab report and member context. Receive a structured, validated analysis your product can show, store and act on.

POST /api/pipeline/start200
{
  "taskId": "7f1c2a9e-4b5d-4e0a-9c3f-2d8e6b1a5f70",
  "status": "started",
  "environment": "sandbox",
  "totalStages": 11,
  "template_id": "…",
  "template_version": "…"
}

How a Run Works

I.

Upload the laboratory document

POST /api/files/upload for a PDF, or take a presigned URL from POST /api/files/presign-upload and put the file directly.

II.

Start the run

Send the member context and the file key to POST /api/pipeline/start. You get a taskId back immediately.

III.

Poll, then fetch the artifacts

Poll GET /api/pipeline/status/{taskId} every 15 to 30 seconds. Durable copies live at GET /api/reports/{taskId}.

What Comes Back

Every completed run returns the same four things, in the same shape, every time.

The report, as Markdown output_0
Thirteen fixed sections in a fixed order. Tables are rendered from data, not written by a model, so the same labs always produce the same numbers.
The report, as HTML Visual_Report
A standalone, print-ready page rendered from the validated Markdown. Deterministic, styled, ready for a review queue or a PDF renderer.
Every biomarker, as data panel
Category, name, value, unit, reference range, status, and whether it was measured or calculated. No text to parse for a number.
Provenance meta.json
Template and range-table versions, validation result, per-stage timings, and a member hash rather than a name.

Access

Sandbox environment

Keys are issued per organisation by Next Generation Medicine. If you are evaluating the API and do not yet have one, ask your NGM engineering contact.

This is the sandbox. Use synthetic or de-identified data only. Production runs on a separate host with a separate key; a sandbox key is rejected there.

Every request carries a Bearer key. Limits are ten starts a minute and five concurrent runs per organisation; a run that exceeds twelve minutes is failed rather than left hanging. The integration guide you received covers the full contract.