Skip to main content

Quality Webhook

The Quality webhook sends plate results to a customer-provided endpoint when a plate has been processed by the device and analysis results are available.

The Quality webhook allows your internal systems to be notified when a plate has been processed by the device and analysis results are available.

This is intended for integrations with systems such as LIMS, where plate result data and device output location should be consumed automatically as soon as they are available.

Webhook Event

The webhook is sent when a plate has completed processing and analysis.

Request method: POST

Content type: application/json

Payload

The webhook body contains a single plate object:

{
"plate": {
"id": "2f5f9c1a-8e7a-4f11-9b7b-8b4b9c7f1a12",
"run_id": 1234,
"plate_code": "ABC123456",
"registered_at": "2026-06-29T10:15:30Z",
"end_location": "A1",
"analysis_details": {
"model_type": "htid",
"model_version": "1.0.0",
"category": "Pass",
"result": {
"example_property": {
"original_value": "example value",
"corrected_value": null,
"correction_reason": null
}
}
},
"label_details": {
"label": "Sample label",
"batch": "Batch-001",
"assay": "Example assay",
"sample_id": "Sample-001",
"replica_number": 1,
"dilution_base": null,
"dilution_exponent": null,
"custom_properties": null
},
"url": "https://quality.reshapebiotech.com/..."
}
}

The plate object follows the same schema as the plate response in the HTID API:

Plate Fields

Field

Description

id

Unique plate identifier.

run_id

Customer-facing run identifier for the run the plate belongs to.

plate_code

Barcode or QR code content for the plate, if available.

registered_at

Timestamp for when the plate was registered.

end_location

Final output location on the device, if known.

analysis_details

Analysis result details, if analysis has been performed.

label_details

Parsed label metadata, if a label was scanned.

url

Link to the plate analysis view in Quality, if available.

Analysis Details

The analysis_details object contains the model information, predicted category, and analysis result values:

{
"model_type": "htid",
"model_version": "1.0.0",
"category": "Pass",
"result": {
"example_property": {
"original_value": "example value",
"corrected_value": null,
"correction_reason": null
}
}
}

The result object is keyed by analysis property. Each property contains:

Field

Description

original_value

The value returned by the analysis model.

corrected_value

The corrected value, if the result has been corrected. Otherwise null.

correction_reason

The reason for the correction, if applicable. Otherwise null.

Each analysis model may have its own set of possible categories and result fields. Use the HTID API to check the available model versions and the expected schema for a specific model_type and model_version.

The expected result schema for a given analysis model can be retrieved from the HTID API:

Webhook Signature

To verify the origin of the webhook, each request includes an X-Reshape-Signature header.

The signature is an HMAC-SHA256 signature of the exact request body, using the webhook secret as the signing key.

Header format:

X-Reshape-Signature: sha256=<hex_digest>

To verify a webhook:

  1. Read the raw request body exactly as received.

  2. Compute HMAC-SHA256(secret, raw_request_body).

  3. Hex encode the digest.

  4. Compare it with the value in X-Reshape-Signature.

The signature should be verified against the raw request body, not a parsed and re-serialized JSON object, since changes in whitespace or key ordering will produce a different signature.

Recommended Integration

We recommend integrating the Quality webhook with your LIMS or downstream data system so plate results and output locations are available automatically once processing is complete.

For additional information about runs, analyses, and available schemas, use the HTID API:

Did this answer your question?