> For the complete documentation index, see [llms.txt](https://apidocs.akinon.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://apidocs.akinon.com/commerce-openapis/admin/products/delete-a-product.md).

# Delete a product

Deactivates the specified product. This is a soft delete: the product record is not removed. Instead, the product is marked inactive (`is_active` becomes `false`) and its listable status is recalculated among its sibling variants.

If the product is already inactive and not listable, no change is made.

```json
{"openapi":"3.1.0","info":{"title":"Admin API","version":"1.0.0"},"tags":[{"name":"Products","description":"Administrative endpoints for **products** — the catalog records managed by internal management tools and integration systems.\n\n## Core Capabilities\n\n**1. Product Listing & Filtering**\n* Retrieve a paginated catalog of products.\n* Filter by identifier, SKU, base code, and product type, and order results by one or more fields.\n\n**2. Product Lifecycle Management**\n* Create products of every writable type (Simple, Product Meta, Bundle, Grouped, Miscellaneous, Offer).\n* Fully or partially update existing products, subject to product-type transition rules.\n* Soft-delete (deactivate) a product while preserving its record.\n\n**3. Search Indexing**\n* Re-index a single product in the search engine so recent catalog changes become searchable immediately.\n\n## Product Types\n\nProduct endpoints use the following product types. The numeric code is the value sent and returned in requests and responses.\n\n| Code | Type | Description |\n|------|------|-------------|\n| -1 | **Pre Product** | Draft product not yet finalized |\n| 0 | **Simple** | Standard product, optionally a variant of a product meta |\n| 1 | **Product Meta** | Parent product that groups variants together |\n| 2 | **Bundle** | Configurable product built from chapter-based selections |\n| 3 | **Grouped** | Collection of related products sold as a set |\n| -2 | **Pre Miscellaneous** | Draft miscellaneous product |\n| 4 | **Miscellaneous** | Special product such as a service or fee |\n| 5 | **Offer** | Seller-specific product offer in a marketplace |\n\n## Dynamic Settings & Environment Variables\n\nThe behavior of these endpoints is influenced by the following dynamic settings, configured in the management panel. Each is referenced again in the description of the operations it affects.\n\n| Key | Type | Default | Effect |\n|-----|------|---------|--------|\n| `LIST_SIMPLE_INSTEAD_OF_META` | boolean | `false` | When enabled, an individual simple variant is exposed as the listable product for its group instead of the parent product meta. Affects the listability computed on **create** and **update** for **Simple** and **Product Meta** products, and determines which product receives a generated storefront URL. When unset, its value falls back to the corresponding server configuration value, and to `false` if that is also unset. |\n| `LISTABLE_PRODUCT_RULES` | array of strings | `[\"image_rule\", \"is_listable_rule\"]` | The ordered list of rules that decide which variant becomes the listable product within a group. Affects which sibling variant is chosen as listable on **create** and **update**. Available rules are `image_rule` (has an image), `is_listable_rule` (already listable), `stock_rule` (has stock), `max_price_rule` (highest price), and `min_price_rule` (lowest price). The list cannot be empty. |\n\n**Environment variables:** No environment variables affect these endpoints. All configurable behavior is controlled through the dynamic settings above."}],"servers":[{"description":"Omnitron Remote Proxy (external access — recommended)","url":"https://{omnitron_url}/api/remote/{channel_id}","variables":{"omnitron_url":{"default":"sandbox.akinon.com","description":"Omnitron server URL (e.g., {omnitron.akinon.com})"},"channel_id":{"default":"1","description":"The channel identifier the remote request is routed through"}}},{"description":"Commerce API Server (internal / direct access only)","url":"https://{commerce_url}/api/v1","variables":{"commerce_url":{"default":"sandbox.akinon.com","description":"Internal commerce server URL, reachable only from within the Omnitron network"}}}],"security":[{"tokenAuth":[]}],"components":{"securitySchemes":{"tokenAuth":{"type":"apiKey","in":"header","name":"Authorization","description":"Token credential sent in the Authorization header, in the form: `Token <your-token>`. Requires a staff (admin) account."}},"responses":{"Unauthorized":{"description":"Authentication credentials were not provided or are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Forbidden":{"description":"The authenticated user does not have administrator privileges.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"ProductNotFound":{"description":"The requested product does not exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"schemas":{"Error":{"type":"object","description":"An error response.","properties":{"detail":{"type":"string","description":"A human-readable description of the error."}},"additionalProperties":true}}},"paths":{"/products/{id}/":{"delete":{"tags":["Products"],"operationId":"deleteProduct","summary":"Delete a product","description":"Deactivates the specified product. This is a soft delete: the product record is not removed. Instead, the product is marked inactive (`is_active` becomes `false`) and its listable status is recalculated among its sibling variants.\n\nIf the product is already inactive and not listable, no change is made.","responses":{"204":{"description":"The product was deactivated. No content is returned."},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/ProductNotFound"}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://apidocs.akinon.com/commerce-openapis/admin/products/delete-a-product.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
