> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kameleoon.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Récupérer des recommandations de produits

> Apprenez à récupérer et à afficher des recommandations de produits à l'aide de la Product Recommendation API de Kameleoon dans votre application web ou mobile.

Ce guide explique comment récupérer des **recommandations de produits** à l'aide de la Product Recommendation API sans intégrer l'élément HTML Kameleoon. Consultez le [guide d'intégration visuelle](/user-manual/recommendations-and-merchandising/recommendations/use-a-product-recommendation-block-in-a-campaign) pour la méthode visuelle.

Utilisez l'endpoint suivant :

* **[Retrieve recommendations](../all-endpoints/Recommend/get-recommend)**

## Pourquoi utiliser l'API ?

<Warning>
  Utilisez l'API pour les applications mobiles.
</Warning>

Selon vos besoins, cette approche offre plusieurs avantages :

* **Contrôle total** : personnalisez l'affichage de la variation pour correspondre à vos standards de design et d'UX.
* **Meilleures performances** : utilisez des appels API optimisés pour réduire les délais de chargement des pages par rapport aux solutions basées sur des scripts.
* **Débogage plus facile** : journalisez, surveillez et déboguez les intégrations dans votre base de code client à l'aide d'outils standards.
* **Aucune dépendance à un script tiers** : utilisez des appels directs pour éviter les scripts externes, réduire les conflits potentiels et vous aligner sur les politiques de sécurité.
* **Compatible SPA** : intégrez directement dans les applications monopage pour éviter les problèmes de timing et vous adapter au routage côté client.
* **Résilience face aux ad blockers** : diffusez les expériences de manière cohérente sans scripts tiers ni marqueurs HTML spécifiques. Pour plus de détails sur l'impact des ad blockers sur Kameleoon, consultez la **[FAQ](../../../feature-experimentation/technical-reference/faq-global#how-do-ad-blockers-affect-kameleoon)**.

## Objectif

Récupérez des recommandations depuis le catalogue de produits à l'aide de la Product Recommendation API. L'image suivante montre une section de recommandations ajoutée à une page produit :

<Frame>
  ![Product Page without Recommendations](https://storage.googleapis.com/kameleoon-storage-documentation/developers/images/api-tutorial/product-page-without-recommendations.jpg)
</Frame>

## Prérequis

* Un compte Kameleoon valide avec un **Store ID (`shop_id`)**.
  * Obtenez votre `shop_id` dans **Recommendations** > **Settings** > **Store settings** dans l'application Kameleoon. Contactez votre Customer Success Manager pour obtenir la clé si nécessaire.

<Frame>
  ![Store Key](https://storage.googleapis.com/kameleoon-storage-documentation/developers/images/api-tutorial/store-key.jpg)
</Frame>

* Un **Device ID (`did`)** et un **Session ID (`sid`)**. (Requis uniquement lors de l'utilisation de filtres ou d'algorithmes reposant sur des données historiques de l'appareil/de l'utilisateur).
  * Pour **Kameleoon Web Experimentation**, obtenez-les à partir des cookies suivants :
    * `KameleoonProducts_device_id` → **Device ID (`did`)**
    * `KameleoonProducts_session_code` → **Session ID (`sid`)**
  * Sinon, générez ces valeurs manuellement.

## Étapes

### 1. Récupérer les cookies (Kameleoon Web Experimentation uniquement)

<Warning>
  Générez ces valeurs manuellement pour les implémentations backend ou les environnements sans Kameleoon Web Experimentation. Consultez l'**[endpoint Init](../all-endpoints/Initialize/init)** pour plus de détails.
</Warning>

```javascript theme={null}
function getCookie(name) {
  const match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));
  if (match) return match[2];
}
const did = getCookie('KameleoonProducts_device_id');
const sid = getCookie('KameleoonProducts_session_code');
```

### 2. Configurer vos recommandations de produits

Accédez à **Recommendations** > **Product Recommendations** > **Recommendation Blocks** dans l'application Kameleoon.

Pour les blocs non configurés, suivez [ce guide](/user-manual/recommendations-and-merchandising/recommendations/configure-and-add-a-recommendation-block).

Identifiez le `recommender_code`.

<Frame>
  ![Recommender Code](https://storage.googleapis.com/kameleoon-storage-documentation/developers/images/api-tutorial/recommender-code.jpg)
</Frame>

<Warning>
  L'API ne renvoie pas les styles CSS configurés dans l'application Kameleoon.
</Warning>

### 3. Requête

**Endpoint :**

```sqlite3 theme={null}
GET https://api.products.kameleoon.com/recommend/{%recommender_code%}
```

<Note>
  Remplacez `{recommender_code}` par la valeur récupérée à l'[Étape 2](#2-configure-your-product-recommendations).
</Note>

| Paramètre        | Type          | Requis    | Description                                                                                                                                                                                                              |
| :--------------- | :------------ | :-------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `did`            | String        | True      | Device ID                                                                                                                                                                                                                |
| `shop_id`        | String        | True      | Store Key                                                                                                                                                                                                                |
| `sid`            | String        | True      | ID de session utilisateur temporaire                                                                                                                                                                                     |
| `resize_image`   | Integer       | False     | Taille de l'image (px) pour le redimensionnement. Valeurs prises en charge : `120`, `140`, `160`, `180`, `200`, `220`.                                                                                                   |
| `extended`       | Integer/Empty | Optionnel | Ajoute des informations étendues pour les produits recommandés. Si `1`, l'API renvoie toutes les informations sur le produit. Si vide, l'API ne renvoie que les IDs des produits.                                        |
| `with_locations` | Boolean       | False     | Si `true` et que `extended` est également true, la réponse inclut `location_ids` pour la disponibilité des produits. Si `extended` est manquant ou `false`, l'API ignore `with_locations` et utilise `false` par défaut. |

**Exemple :**

```bash theme={null}
curl -X GET -L 'https://api.products.kameleoon.com/recommend/trending_products_01' \
             -H 'Content-Type: application/json' \
             -d '{
  "did": "abc123-kam-device-id",
  "shop_id": "shop_4567_example",
  "sid": "session_7890_example",
}'
```

### 4. Réponse

| Nom          | Type   | Description                                                                                       |
| :----------- | :----- | :------------------------------------------------------------------------------------------------ |
| `html`       | string | Code HTML pour le bloc de produits. Personnalisez le template dans le compte personnel Kameleoon. |
| `title`      | string | Titre du bloc. Correspond à la valeur de l'élément "Action" dans les règles du bloc.              |
| `recommends` | array  | Liste des produits.                                                                               |
| `id`         | number | Identifiant unique du bloc. Correspond à l'ID du bloc dans le compte personnel Kameleoon.         |

<Note>
  Si `extended = 1`, les produits contiennent tous les **[détails du produit](../all-endpoints/Recommend/get-product-list#champs-de-produit)**. Sinon, l'API ne renvoie que les IDs des produits sous forme de chaînes.
</Note>

<Note>
  L'application mobile peut ignorer `html`.
</Note>

<Warning>
  L'API ne renvoie pas de CSS ; vous devez styliser la sortie manuellement.
</Warning>

L'image suivante montre la page produit avec la réponse HTML intégrée :

<Frame>
  ![Product Page with Recommendations](https://storage.googleapis.com/kameleoon-storage-documentation/developers/images/api-tutorial/product-page-with-recommendations.jpg)
</Frame>

#### a. Avec extended = 0

```json theme={null}
{
    "id": 2476,
    "recommends": [
        "AsTi-01-black-4",
        "C-02-black-7",
        "C-01-white-8",
        "VN-09-beige-4",
        "DM-03-red-6",
        "DM-02-black-5"
    ],
    "title": "Popular products",
    "link": "",
    "html": "<div class=\"kn-reco-block_2476\"> ... <\/div>"
}
```

#### b. Avec extended = 1

```json theme={null}
{
    "id": 870,
    "recommends": [
        {
            "name": "CONVERSE | TODDLER CHUCK TAYLOR ALL STAR AXEL MID",
            "url": "https://kameleoon-store.myshopify.com/products/converse-toddler-chuck-taylor-all-star-axel-mid?variant=40023417028772&recommended_by=dynamic&recommended_code=bdf46866294e4b8733eb2c2084423967",
            "category_ids": [
                "1",
                "295508017316"
            ],
            "barcode": "C-03-black-5",
            "vendor_code": "CO",
            "brand": "Converse",
            "leftovers": "few",
            "rating": 5,
            "picture": "https://images.products.kameleoon.com/resize-images/180/9fa630bf863db7a87fc6d5fd2a188f/3919221.jpg",
            "price_formatted": "$ 70",
            "price": 70,
            "currency": "$",
            "id": "C-03-black-5"
        }
    ],
    "title": "Popular Products",
    "link": "",
    "html": "<section class=\"KameleoonProducts-recommend\"> ... <\/section>"
}
```

}

```
```
