Sample Rejection
When a sample arrives at the lab in a condition that would produce unreliable results, it is rejected at intake instead of tested. Rejection is terminal for that sample: no report is produced, and the kit's lifecycle ends in the rejected state (see Kit lifecycle).
note
Webhook subscribers receive the rejection as a status change that includes the rejectedReason value from the table below, so your integration can react programmatically. See Webhooks.
Rejection reasons
| Reason | rejectedReason | What it means | Common causes |
|---|---|---|---|
| Hemolyzed | "hemolyzed" | Red blood cells ruptured and released their contents, making results unreliable. | Rough handling, shaking the tube, improper storage temperature |
| QNS (Quantity Not Sufficient) | "qns" | Not enough sample volume to run the required tests. | Under-filled tube, incomplete collection |
| Unsuitable for Analysis | "unsuitable_for_analysis" | Sample quality does not meet lab requirements. | Contamination, incorrect container, physical damage to the sample |
| Improper Collection | "improper_collection" | The sample was collected incorrectly and its integrity is compromised. | Wrong tube type, incorrect technique, missing required preservatives |
| Exceeds Stability | "exceeds_stability" | The sample arrived after its stability window and can no longer produce valid results. | Delayed shipping, storage outside the required temperature range |
| Other | "other" | The reason does not fit a standard category. | Labeling issues, leaking container, damaged packaging |
What happens next
- No report is produced for the rejected sample.
- The kit's lifecycle ends in the rejected state. The full status flow is described in Kit lifecycle.
- Your webhook endpoint is notified with the status change and the
rejectedReasonvalue, so you can trigger your own follow-up (support outreach, replacement handling) without polling. - You can test every rejection path before going live: the sandbox
rejectedscenario drives a mock kit into rejection and fires the same webhook your integration would receive in production.