---
title: "Order products for the best recommendation."
method: POST
path: "/recommendation-engine/product/actions/order"
tags: ["Product recommendation engine"]
---

# Order products for the best recommendation.

`POST /recommendation-engine/product/actions/order`

The method returns the algorithm ordered products from the initial list (best first). Results depend on the customer and his previous shopping behavior. If needed, the initial parameter might define the number of results.

## Headers

- `Accept-Language` string

## Request body

- object
  - `customer_id` string, required — The unique ID of the customer.
  - `product_id_list` string[] — List of the product IDs. Initial products of the recommendation engine.
  - `count` integer — The number of records to return.

## Response `200`

OK

- object
  - `data` object
    - `recommended_products_list` RecommendedProduct[] — List of the recommended products.
      - `product_id` string — The unique ID of the product. [GET /products](https://carecloud.readme.io/reference/getproducts)
      - `plu_ids` PluId[] — An array of all available pluIds from the particular product lists (default is Product ID from Global product list (consist cleaned data - unique ID of every product across all POS systems)).
        - `list_code` string, required — Code of the particular product list (basic is code of Global product list (consist cleaned data - unique ID of every product across all POS systems)). For example, “GLOBAL”, “SKU”, “PLU”, etc.
        - `code` string, required — Code of product from the product list (basic is Product ID from Global product list (consist cleaned data - unique ID of every product across all POS systems)).
    - `total_items` integer — The number of all found product IDs.

## Other responses

- `400` — Bad input parameter. The response body's `error.error_data.invalid_params[]` array lists the parameters that caused the failure, each carrying a `reason` code. See the `BadRequestErrorBody` schema for the generic reason taxonomy. Operations with domain-specific business rules document additional reasons at the operation level.
- `401` — The client has invalid credentials or auth token.
- `403` — The client does not exist or the client tried to access an unauthorized property or resource.
- `404` — The resource was not found.
- `405` — The resource does not support the specified HTTP method.
- `429` — Too many requests - more than the resource limit.
- `500` — Server is not working as expected.
- `503` — Temporary state when the service is temporarily unavailable, overloaded or there is a maintenance window.

---

[API](https://skmtc.net/crmcarecloud/apis/rest-api-reference.md) · [All operations](https://skmtc.net/crmcarecloud/apis/rest-api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/crmcarecloud/rest-api-reference/revisions/329c06dbf8d9/schema)
