---
title: "Delete a test result"
method: DELETE
path: "/public/v1/test-results/{id}"
tags: ["TestResult"]
---

# Delete a test result

`DELETE /public/v1/test-results/{id}`

Deletes a test result. This is a hard delete: the record is permanently removed — it disappears from `GET /public/v1/test-results`, `GET /public/v1/test-results/{id}` returns 404 for it, and it cannot be recovered through the API. Responds 204 with no body on success, or 404 if no test result with that `id` exists in your company (including one that belongs to another company or was already deleted).

Only Distru-only results can be deleted: a result synced from Metrc or BioTrack (compliance-tracked) is refused with a 400. Nothing else blocks the delete — a result can be deleted even while it is the primary result of its package or batch.

Effects beyond the test result itself: the result is detached from the package or batch it was attached to (and from any child packages it propagated to), and its attached Certificate of Analysis (COA) file is permanently deleted with it. Where the result was the primary one, the affected packages/batches and their [inventory](#model-inventory) are left with no test result — potency stops showing for that inventory until another result is created or marked primary via the upsert endpoint; no result is auto-promoted. No inventory quantity is created, consumed, or released, and nothing is synced to Metrc or BioTrack.

Required permission: `products_permissions_edit`.

## Path parameters

- `id` string, required

## Response `204`

No Content

## Other responses

- `400` — Invalid parameters
- `401` — Missing or invalid API token
- `403` — The API token lacks the required permission
- `404` — Not Found

---

[API](https://skmtc.dev/distru/apis/distru-api.md) · [All operations](https://skmtc.dev/distru/apis/distru-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/distru/distru-api/revisions/f8930b2c2924/schema)
