<aside> ✨

What's New

Stay up-to-date with the latest features and improvements to our platform.

</aside>

2026


TruDiagnostic - v.1.51 (June 30, 2026)

⚡ Webhook Changes

New sample.reprocessed webhook event

A new webhook event is available for subscribing to lab sample reprocessing. This event fires when a sample is sent back for reprocessing by the lab.

Subscribe using the event type: sample.reprocessed

{
  "Object": "webhook_event",
  "Type": "sample.reprocessed",
  "Data": {
    "SampleId": "1234",
    "Kit": {
      "Sku": "TruAge",
      "KitId": "CAQL5G9WUL4AG7AL",
      "KitIdExternal": ""
    },
    "ByUserId": 10042,
    "BusinessUnitId": 1,
    "PracticeId": 10042,
    "PublicName": "sample.reprocessed",
    "Version": 1,
    "EventTime": "2026-06-30T14:00:00.0000000Z",
    "IdempotentKey": "a1b2c3d4e5f6...",
    "EventName": "SampleReprocessedInLabIntegrationEvent",
    "Avatar": 2,
    "AvatarName": "Provider",
    "UniversalId": "usr_a1b2c3d4e5f6..."
  },
  "Id": "hook_a1b2c3d4e5f6..."
}

Key payload fields:

🔄 Changed Endpoints

POST /api/reports — OpenAPI contract correction

In v.1.50, the OpenAPI spec for this endpoint incorrectly listed request body properties in snake_case (kit_id, report_type, render_strategy, render_details). The documented contract has been restored to camelCase (KitId, ReportType, RenderStrategy, RenderDetails).

Runtime behavior was never affected — the API accepts camelCase, PascalCase, and snake_case inputs regardless of what the spec shows. If your integration sends requests directly (not via a generated client), no changes are needed. If you regenerated a client from the Swagger spec between v.1.50 and this release, regenerate again to pick up the corrected property names.


TruDiagnostic - v.1.50 (June 16, 2026)

🔄 Changed Endpoints

Kit objects now include date_received_in_lab

The KitObject response shape now includes a date_received_in_lab field indicating the date the lab received the kit. This field is nullable and will be null for kits that have not yet been received.

Affected endpoints:

Example response (new field):

{
  "object": "kit",
  "id": "kit_a1b2c3d4e5f6",
  "status": "SampleReceived",
  "date_created": "2024-08-13",
  "date_received_in_lab": "2024-08-15"
}

Search query language: received_in_lab filter now supported

GET /api/kits/search now accepts received_in_lab as a filter field in the query parameter.

GET /api/kits/search?query=received_in_lab>2024-08-01
GET /api/kits/search?query=received_in_lab>=2024-08-01 AND received_in_lab<2024-09-01

Both changes are non-breaking and additive. Existing integrations continue to work without modification.


TruDiagnostic - v.1.49 (June 2, 2026)

🔧 Internal Improvements

No external API changes in this release. This version includes internal engineering improvements only.


TruDiagnostic - v.1.48 (May 19, 2026)

🆕 New Endpoints

List Samples for a Kit

Endpoint: GET /api/kits/{id}/samples

Returns all samples associated with a kit. Scoped to your application's practice.

Response 200:

{
  "object": "list",
  "data": [
    {
      "id": "smp_1a2b3c4d5e6f...",
      "object": "sample",
      "status": "Completed",
      "arrayType": "EPICv2Custom",
      "beadchipId": "207134830027_R01C01",
      "kit": "kit_a1b2c3d4e5f6...",
      "createdAt": "2026-02-10T14:23:00Z"
    }
  ],
  "hasMore": false
}

Get Sample

Endpoint: GET /api/samples/{id}

Returns a single sample by its ID. Returns 404 if the sample does not exist or does not belong to your application.

Response 200:

{
  "id": "smp_1a2b3c4d5e6f...",
  "object": "sample",
  "status": "Completed",
  "arrayType": "EPICv2Custom",
  "beadchipId": "207134830027_R01C01",
  "kit": "kit_a1b2c3d4e5f6...",
  "createdAt": "2026-02-10T14:23:00Z"
}

Sample field reference:

Sample status values:

arrayType values:

📋 Migration Notes


TruDiagnostic - v.1.47 (May 7, 2026)

🆕 New Endpoints

List Available Material Units

Endpoint: GET /api/materialunits

Returns a paginated list of material units that have not yet been activated. Scoped to your application's practice.

Query parameters:

Response 200: