> 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/list-products.md).

# List products

Returns a paginated list of products. You filter, order, and page through the catalog using query parameters.

The most commonly used filters are documented below and behave exactly as described for each parameter. Beyond these, a filter is automatically available for most other product fields: text fields (such as the product name) match on a case-insensitive partial match, while the remaining fields match exactly.

Results are returned inside a pagination envelope that reports the total count and links to the next and previous pages.

```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."}},"parameters":{"page":{"name":"page","in":"query","required":false,"description":"The page number to return.","schema":{"type":"integer","default":1}},"limit":{"name":"limit","in":"query","required":false,"description":"The number of items to return per page.","schema":{"type":"integer","default":10}},"sort":{"name":"sort","in":"query","required":false,"description":"Orders the results by one or more fields. Separate multiple fields with commas. Prefix a field with a hyphen (`-`) for descending order.","schema":{"type":"string"}}},"schemas":{"ProductType":{"type":"string","description":"The product type. The value is the numeric code as a string.\n* `-1` — Pre Product\n* `0` — Simple\n* `1` — Product Meta\n* `2` — Bundle\n* `3` — Grouped\n* `-2` — Pre Miscellaneous\n* `4` — Miscellaneous\n* `5` — Offer","enum":["-1","0","1","2","3","-2","4","5"]},"PaginatedProductList":{"type":"object","description":"A page of product results.","properties":{"count":{"type":"integer","description":"The total number of products matching the query."},"next":{"type":["string","null"],"format":"uri","description":"The URL of the next page of results, when available."},"previous":{"type":["string","null"],"format":"uri","description":"The URL of the previous page of results, when available."},"results":{"type":"array","description":"The products on the current page.","items":{"$ref":"#/components/schemas/Product"}}}},"Product":{"type":"object","description":"A product in the catalog.","properties":{"pk":{"type":"integer","description":"The unique identifier of the product.","readOnly":true},"name":{"type":"string","description":"The product name."},"base_code":{"type":["string","null"],"description":"The base code shared by variants of the same product."},"sku":{"type":"string","description":"The unique stock keeping unit."},"product_type":{"$ref":"#/components/schemas/ProductType"},"is_active":{"type":"boolean","description":"Whether the product is active."},"parent":{"type":["integer","null"],"description":"The identifier of the parent product, when the product is a variant."},"attributes":{"type":"object","description":"The attribute values of the product, keyed by attribute name.","additionalProperties":true},"attributes_kwargs":{"type":"object","description":"Additional attribute metadata for the product.","additionalProperties":true},"extra_attributes":{"type":"object","description":"Free-form extra attribute data for the product.","additionalProperties":true},"is_seller_product":{"type":"boolean","description":"Whether the product belongs to a seller."},"group_products":{"type":["array","null"],"description":"The identifiers of products grouped under this product.","items":{"type":"integer"}},"productimage_set":{"type":"array","description":"The images attached to the product.","readOnly":true,"items":{"$ref":"#/components/schemas/ProductImage"}},"attribute_set":{"type":"integer","description":"The identifier of the attribute set that defines the product's attributes."},"custom_attribute_set":{"type":["integer","null"],"description":"The identifier of an additional custom attribute set."},"is_listable":{"type":"boolean","description":"Whether the product is publicly listable. Determined by the system.","readOnly":true},"listing_code":{"type":["string","null"],"description":"The code that identifies the listable variant grouping."},"data_source":{"type":["integer","null"],"description":"The identifier of the default data source (seller) for the product."},"absolute_url":{"type":["string","null"],"description":"The storefront URL of the product, when available.","readOnly":true},"is_form_required":{"type":"boolean","description":"Whether the product requires form input."}}},"ProductImage":{"type":"object","description":"An image attached to the product.","properties":{"pk":{"type":"integer","readOnly":true},"status":{"type":"string","description":"The processing status of the image.","readOnly":true},"image":{"type":"string","description":"The image file path."},"order":{"type":"integer","description":"The display order of the image."},"created_date":{"type":"string","format":"date-time","description":"The date and time the image was created.","readOnly":true},"specialimage_set":{"type":"array","description":"Special image variants associated with the image.","items":{"type":"object"}}}},"Error":{"type":"object","description":"An error response.","properties":{"detail":{"type":"string","description":"A human-readable description of the error."}},"additionalProperties":true}},"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"}}}}}},"paths":{"/products/":{"get":{"tags":["Products"],"operationId":"listProducts","summary":"List products","description":"Returns a paginated list of products. You filter, order, and page through the catalog using query parameters.\n\nThe most commonly used filters are documented below and behave exactly as described for each parameter. Beyond these, a filter is automatically available for most other product fields: text fields (such as the product name) match on a case-insensitive partial match, while the remaining fields match exactly.\n\nResults are returned inside a pagination envelope that reports the total count and links to the next and previous pages.","parameters":[{"$ref":"#/components/parameters/page"},{"$ref":"#/components/parameters/limit"},{"$ref":"#/components/parameters/sort"},{"name":"id","in":"query","description":"Filter by exact product identifier.","required":false,"schema":{"type":"integer"}},{"name":"id__gt","in":"query","description":"Filter for products with an identifier greater than the given value.","required":false,"schema":{"type":"integer"}},{"name":"id__gte","in":"query","description":"Filter for products with an identifier greater than or equal to the given value.","required":false,"schema":{"type":"integer"}},{"name":"id__lt","in":"query","description":"Filter for products with an identifier less than the given value.","required":false,"schema":{"type":"integer"}},{"name":"id__lte","in":"query","description":"Filter for products with an identifier less than or equal to the given value.","required":false,"schema":{"type":"integer"}},{"name":"id__in","in":"query","description":"Filter by a comma-separated list of product identifiers.","required":false,"schema":{"type":"string"}},{"name":"pk__in","in":"query","description":"Filter by a comma-separated list of product identifiers.","required":false,"schema":{"type":"string"}},{"name":"sku","in":"query","description":"Filter by exact stock keeping unit (SKU).","required":false,"schema":{"type":"string"}},{"name":"sku__exact","in":"query","description":"Filter by exact stock keeping unit (SKU).","required":false,"schema":{"type":"string"}},{"name":"sku__in","in":"query","description":"Filter by a comma-separated list of SKUs.","required":false,"schema":{"type":"string"}},{"name":"base_code","in":"query","description":"Filter by exact base code.","required":false,"schema":{"type":"string"}},{"name":"base_code__exact","in":"query","description":"Filter by exact base code.","required":false,"schema":{"type":"string"}},{"name":"product_type","in":"query","description":"Filter by one or more product types. Repeat the parameter to filter by multiple types.","required":false,"schema":{"type":"array","items":{"$ref":"#/components/schemas/ProductType"}}}],"responses":{"200":{"description":"A paginated list of products.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedProductList"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}}}}
```


---

# 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/list-products.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.
