Skip to content
Bloomcount API
Esc
navigateopen⌘Jpreview

Delete a product

Deletes the product, its variants, their prices, and every event line that used them. That last part is why this refuses by default: a product still on an event returns 409 product_on_event_items:<count> naming how many lines would go with it. Pass ?force=true to delete anyway, which is what the app’s own delete does.

404 product_not_found when the ID doesn’t belong to the caller’s tenant.

DELETE/api/v1/products/{id}
Authorization
AuthorizationBearer token (bloomcount_...) · headerrequired
Path parameters
idstringrequired
Query parameters
forceboolean
Delete even when the cascade reaches beyond this resource.
default: false
Responses
200Deleted, with a count of everything the cascade took.
deletedbooleanrequired
variantsDeletedintegerrequired
Variants removed with the product.
priceEntriesDeletedintegerrequired
Prices removed across every list that carried one for those variants.
eventItemsDeletedintegerrequired
Event lines removed. Non-zero only on a forced delete.
401Missing or invalid API key, or revoked / expired.
errorstringrequired
403Authenticated, but the key lacks the required scope or the tenant has no API access.
errorstringrequired
404The requested resource doesn't exist or belongs to a different tenant.
errorstringrequired
409The resource is still referenced, and deleting it would take other rows with it. The error names what and how many, for example price_list_in_use:3. Retry with force=true to delete anyway.
errorstringrequired
422Request body or arguments failed validation.
errorstringrequired
429Per-minute rate limit (60/min) or per-month cap exceeded.
errorstringrequired
Try it
Server
Authorization
Parameters
Request
curl -X DELETE "https://app.bloomcount.com/api/v1/products/prod_h71eaa8d4mr3vk2qz9pn5wf" \
  -H "Authorization: Bearer YOUR_TOKEN"
Response
{
  "deleted": true,
  "variantsDeleted": 0,
  "priceEntriesDeleted": 0,
  "eventItemsDeleted": 0
}