Product

Delete a product

Deletes a product from your catalog. This is a soft delete: the product stops appearing in GET /public/v1/products by default (pass the deleted filter as include or only to still see it) and this endpoint returns 404 for it, but the record is retained — GET /public/v1/products/{id} keeps resolving it with a non-null deleted_at. The delete cannot be undone through the API; recreating the product via upsert produces a new product with a new id. Responds 204 with no body on success, or 404 if no non-deleted product with that id exists on your account (including one that was already deleted or belongs to another account).

A product can only be deleted while nothing depends on it. The delete is refused with a 400 when the product: holds any active inventory (every package, batch, or product-level quantity must be zero first), appears on any sales order or purchase, has any returns, appears on any inventory transfer, has any product requests, or is used as an input or output of any assembly. The product only becomes deletable once no such record references it. In practice this means a product that has been used can rarely be deleted — to retire it, set is_inactive to true via POST /public/v1/products instead. An inactive product is hidden from normal use but keeps its history, and can be reactivated at any time.

The delete cascades, all in one atomic call: the product's batches are soft-deleted, its own bill of materials is deleted, and the product is removed as an input from every other product's bill of materials (a bill left with no inputs is deleted too). The product is also removed from menus, and if it is linked to a LeafLink product that link is removed. No inventory is created, consumed, or released, and nothing is synced to Metrc or BioTrack. A successful delete records a delete entry in the product's activity log and notifies the relevant users.

Required permission: products_permissions_delete (plus access to the product under team restrictions).

delete/public/v1/products/{id}

Path parameters

idstring required

ID of the product to delete, as returned by the list, fetch, and upsert endpoints. An ID that doesn't exist for your account (or was already deleted) returns 404.

Response

No Content

Changes

No recorded changes to this endpoint across all 2 revisions of this API.