> For the complete documentation index, see [llms.txt](https://help.citrusad.com/retail-media-interface/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.citrusad.com/retail-media-interface/integration/fr/generating-ads/banner-x-responsive/requesting-banner-x-ads.md).

# Générez des annonces bannière X pour différents emplacements

Ce document fournit un guide complet sur la façon de générer des annonces de bannière X pour différents types d'emplacements. Banner X les annonces sont générées sur le `/bannerx` point de terminaison. Toutes les demandes de bannière X nécessitent le `contentStandardId` et le `bannerSlotIds` pour lequel vous demandez des annonces. Chaque demande d'API doit également inclure des détails sur le contexte, tels que :

* Emplacement
* ID de catalogue
* ID client
* ID de session
* Terme de recherche
* Le nombre maximum d'annonces à afficher

## Emplacement de recherche

### Conditions préalables

Vous devez effectuer les étapes suivantes avant de commencer à demander des annonces de bannière X pour l'emplacement de recherche.

#### 1. Ajouter des catalogues de produits

Assurez-vous que vos produits ont été ajoutés à vos catalogues et synchronisés avec la Epsilon Retail Media Plateforme. Pour plus d'informations, consultez [Introduction aux catalogues et aux produits](https://developers.citrusad.com/integration/docs/introduction-to-catalogs-and-products).

#### 2. Créer une campagne et configurer les termes de recherche

Assurez-vous d'avoir créé une campagne et configuré les termes de recherche. Pour plus de détails, reportez-vous à [Étape 4b : Configurer les termes de recherche](/retail-media-interface/integration/fr/generating-ads/banner-x-responsive/create-banner-x-campaigns.md#optional-step-4b-configure-search-terms). Définissez les termes de recherche que vous souhaitez cibler (inclure et exclure) pour vos annonces de produits. Vous pouvez spécifier une correspondance exacte, une correspondance d'expression et des termes de recherche négatifs pour vos annonces.

#### 3. Récupérer les clés API et l'URL de base

1. Vous devez disposer d'une clé API valide. Pour récupérer les clés API, procédez comme suit :
   1. Connectez-vous à votre Epsilon's Retail Media compte d'équipe.
   2. Accédez en haut à droite de la page et cliquez sur le menu déroulant.
   3. Sélectionnez **Paramètres d'intégration** dans le menu déroulant.

      <figure><img src="/files/ECzgbGc3BMLGbK8z9lP5" alt="" width="100%"><figcaption></figcaption></figure>
   4. Cliquez sur l'onglet **Clé API**. Votre clé API secrète est initialement masquée. Pour la afficher, cliquez sur le bouton **Afficher**. Une fois qu'elle devient visible, copiez votre clé API secrète. Utilisez cette clé pour passer des appels API.
2. Vous devez avoir l'URL de base pour le point de terminaison API. Par exemple, <https://staging-test.citrusad.com/v1/ads/generate> HTTP/1.1. Vérifiez auprès de votre Technical Account Manager pour l'URL de base.

### Générer des annonces

Effectuez les étapes suivantes pour générer des annonces de produits.

#### Requête HTTP

**Point de terminaison** : /v1/ads/generate

**Méthode** : POST

**En-têtes** :

* accept: application/json
* content-type: application/json
* Authorization: Basic \<API\_KEY>

#### Paramètres de la requête

Le corps de la requête doit être un objet JSON contenant les champs suivants :

| Objet             | Type                                                   | Description                                                                                                                                                                                                                                                          |
| ----------------- | ------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| customerId        | string, obligatoire                                    | Identifiant unique pour le client. Il est fourni par votre détaillant.                                                                                                                                                                                               |
| sessionId         | string, obligatoire                                    | Identifiant unique pour la session. Il est requis pour l'attribution et fourni par le détaillant.                                                                                                                                                                    |
| contentStandardId | string, obligatoire                                    | L'ID de norme de contenu pour votre bannière X.                                                                                                                                                                                                                      |
| bannerSlotIds     | string, obligatoire                                    | L'ID d'emplacement de votre bannière X.                                                                                                                                                                                                                              |
| placement         | string, obligatoire                                    | Contexte dans lequel l'annonce est affichée (par exemple, « search »).                                                                                                                                                                                               |
| catalogId         | string, obligatoire                                    | Identifiant unique pour le catalogue de produits à partir duquel les produits sont filtrés. Vous pouvez obtenir le catalogID à partir de l'interface utilisateur de Epsilon's Retail Media ou auprès du détaillant.                                                  |
| maxNumberOfAds    | integer, obligatoire                                   | Nombre maximal d'annonces à afficher. Lorsque vous demandez des annonces de bannière X, vous pouvez spécifier le nombre maximal de bannières que vous souhaitez recevoir par Emplacement de bannière. Vous pouvez contrôler cela avec le `maxNumberOfAds` paramètre. |
| searchTerm        | string, obligatoire pour les emplacements de recherche | Terme à rechercher dans le catalogue.                                                                                                                                                                                                                                |
| options           | object, facultatif                                     | Options supplémentaires telles que les modes de filtrage `AndOr`. Si spécifié, le système utilisera à la fois les conditions « AND » et « OR » pour affiner les résultats de recherche.                                                                              |

### Exemple de requête

Les emplacements de recherche sont généralement les plus faciles à demander. Ils nécessitent un `searchTerm` à spécifier dans la requête, comme dans l'exemple ci-dessous :

```http
POST $BASE_URL/v1/ads/bannerx HTTP/1.1
accept: application/json
content-type: application/json
Authorization: Basic <API_KEY>
{
    "customerId": "wertg5432a",
    "sessionId": "ec9-4e07-881d-3e9",
    "placement": "search",
    "catalogId": "628dbe95-2ec9-4e07-881d-3e9f92ab2e0b",
    "searchTerm": "chocolate",
    "options": {
   						 "filterMode": "AndOr"
 							 },
    "contentStandardId": "c61941e2-1435-460b-9d2b-5d838e3dba9c",
    "bannerSlotIds": [
    {
      "slotId": "<SLOT_ID>",
      "maxNumberOfAds": 1
    },
    {
      "slotId": "<SLOT_ID>",
      "maxNumberOfAds": 2
    }
  ]
}
```

## Emplacements de catégorie

Les emplacements de catégorie nécessitent `productFilters` à spécifier dans la requête. L'exemple ci-dessous montre où vous enverriez les filtres de catégorie :

```http
POST $BASE_URL/v1/ads/bannerx HTTP/1.1
accept: application/json
content-type: application/json
Authorization: Basic <API_KEY>
{
    "customerId": "wertg5432a",
    "sessionId": "ec9-4e07-881d-3e9",
    "placement": "category",
    "catalogId": "628dbe95-2ec9-4e07-881d-3e9f92ab2e0b",
    "productFilters": [
     	 ["category:Cupboard/Snacks"]
    ],
    "options": {
   							 "filterMode": "AndOr"
 							 },
    "contentStandardId": "fec2ab89-7a29-42b5-b58a-5675688b52d9",
    "bannerSlotIds": [
    {
      "slotId": "<SLOT_ID>",
      "maxNumberOfAds": 1
    },
    {
      "slotId": "<SLOT_ID>",
      "maxNumberOfAds": 2
    }
}
```

À mesure que d'autres catégories sont parcourues, vous devez mettre à jour votre appel d'API en conséquence.

## Emplacements de catégorie de vente croisée

Les emplacements de catégorie de vente croisée ont une requête très similaire à celle des emplacements de catégorie. Vous souhaiterez spécifier la catégorie exacte pour laquelle vous demandez des annonces. Il s'agit généralement de la page sur laquelle vous vous trouvez. Spécifiez la catégorie dans le `productFilters` de la requête. L'exemple ci-dessous montre où vous enverriez les filtres de catégorie :

```http
POST $BASE_URL/v1/ads/generate HTTP/1.1
accept: application/json
content-type: application/json
Authorization: Basic <API_KEY>
{
    "customerId": "wertg5432a",
    "sessionId": "ec9-4e07-881d-3e9",
    "placement": "category-cross-sell",
    "catalogId": "628dbe95-2ec9-4e07-881d-3e9f92ab2e0b",
    "productFilters": [
     	 ["category:Cupboard/Snacks"]
    ],
    "options": {
   							 "filterMode": "AndOr"
 							 },
    "contentStandardId": "fec2ab89-7a29-42b5-b58a-5675688b52d9",
    "bannerSlots": [
           {
      "slotId": "<SLOT_ID>",
      "maxNumberOfAds": 1
    },
    {
      "slotId": "<SLOT_ID>",
      "maxNumberOfAds": 2
    }
    ],
    "maxNumberOfAds": 3
}
```

À mesure que d'autres catégories sont parcourues, vous devez mettre à jour votre appel d'API en conséquence.

{% hint style="info" %}
Fusion du ciblage par catégorie organique et par vente croisée ?

Si vous cherchez à fusionner une demande d'annonce de catégorie organique et de vente croisée en un seul emplacement, vous devrez implémenter une logique de fusion et de diffusion pour vos clients. Cela relève de la responsabilité de l'intégrateur, bien que Epsilon Retail Media soit heureux d'être consulté.

En général, nous vous conseillons d'afficher les annonces de catégories organiques, et de positionner les publicités de vente croisée par catégorie après les emplacements organiques.
{% endhint %}

## Emplacements à ciblage large

Les emplacements larges tels que les pages d'accueil ou de paiement ne nécessitent aucun `productFilters` à spécifier dans la requête. Tous les filtres que le détaillant souhaite spécifier (en promotion, nouveau, etc.) peuvent être spécifiés dans le `productFilters` pour garantir que Epsilon Retail Media diffuse uniquement des annonces répondant aux exigences, comme dans l'exemple ci-dessous :

```http
POST $BASE_URL/v1/ads/bannerx HTTP/1.1
accept: application/json
content-type: application/json
Authorization: Basic <API_KEY>
{
    "customerId": "wertg5432a",
    "sessionId": "ec9-4e07-881d-3e9",
    "placement": "home",
    "catalogId": "628dbe95-2ec9-4e07-881d-3e9f92ab2e0b",
    "productFilters": [
     	 []
    ],
    "options": {
   							 "filterMode": "AndOr"
 							 },
    "contentStandardId": "fec2ab89-7a29-42b5-b58a-5675688b52d9",
    "bannerSlotIds": [
    {
      "slotId": "<SLOT_ID>",
      "maxNumberOfAds": 1
    },
    {
      "slotId": "<SLOT_ID>",
      "maxNumberOfAds": 2
    }
}
```

## Améliorations de la requête

Nous vous conseillons d'envisager les améliorations ci-dessous pour améliorer votre expérience utilisateur.

#### Recherches filtrées

Si votre client filtre sa recherche, vous pouvez étendre votre contexte pour fournir `productFilters`. Vous trouverez ci-dessous un exemple dans lequel le client filtre par la catégorie « Placard » et la restriction alimentaire « Sans gluten ». Ce même principe peut être appliqué à n'importe quelle catégorie ou emplacement à ciblage large.

```http
POST $BASE_URL/v1/ads/bannerx HTTP/1.1
accept: application/json
content-type: application/json
Authorization: Basic <API_KEY>
{
    "customerId": "wertg5432a",
    "sessionId": "ec9-4e07-881d-3e9",
    "placement": "search",
    "catalogId": "628dbe95-2ec9-4e07-881d-3e9f92ab2e0b",
    "searchTerm": "chocolate",
    "productFilters": [
     	 ["category:Cupboard"],["dietary:Gluten-free"]
    ],
    "options": {
   							 "filterMode": "AndOr"
 							 },
    "contentStandardId": "fec2ab89-7a29-42b5-b58a-5675688b52d9",
    "bannerSlotIds": [
    {
      "slotId": "<SLOT_ID>",
      "maxNumberOfAds": 1
    },
    {
      "slotId": "<SLOT_ID>",
      "maxNumberOfAds": 2
    }
}
```

#### Filtrage par localisation

Si vous synchronisez les filtres de localisation dans votre catalogue, vous pouvez étendre votre contexte pour fournir le magasin du client dans le `productFilters`, comme dans l'exemple ci-dessous :

```http
POST $BASE_URL/v1/ads/bannerx HTTP/1.1
accept: application/json
content-type: application/json
Authorization: Basic <API_KEY>
{
    "customerId": "wertg5432a",
    "sessionId": "ec9-4e07-881d-3e9",
    "placement": "search",
    "catalogId": "628dbe95-2ec9-4e07-881d-3e9f92ab2e0b",
    "searchTerm": "chocolate",
    "productFilters": [
     	 ["category:Cupboard"],["dietary:Gluten-free"],["location:Westenbury"]
    ],
    "options": {
   							 "filterMode": "AndOr"
 							 },
    "contentStandardId": "fec2ab89-7a29-42b5-b58a-5675688b52d9",
    "bannerSlotIds": [
    {
      "slotId": "<SLOT_ID>",
      "maxNumberOfAds": 1
    },
    {
      "slotId": "<SLOT_ID>",
      "maxNumberOfAds": 2
    }
}
```

## Banner X réponse

Toutes les réponses suivent le même format JSON. Tout le contenu requis pour afficher la bannière est fourni dans la réponse. Si la bannière n'a pas de composant configuré (comme l'absence d'image principale secondaire), Epsilon Retail Media ne diffusera pas la propriété.

```json
{
    "ads": [
        {
            "contentStandardId": "c619d1e2-1435-460b-9d2b-5d838e3dba9c",
            "slotId": "<SLOT_ID>",
            "banners": [
                {
                    "citrusAdId": "shotgun__vW5pOojxDfN7T9VwaXWQLF2wKw3NzE0MTA3",
                    "citrusCampaignName": "CitrusAd-Example-Category-Banner-X-Ad-52793b405f1347b22e72a38c5a08699b",
                    "citrusContentStandardId": "c619d1e2-1435-460b-9d2b-5d838e3dba9c",
                    "citrusSlotId": "<SLOT_ID>",
                    "citrusExpiry": "2021-05-17T02:47:52.849995214Z",
                    "headingText": "Banner Advertisement for Magnum Double Ice Cream with a product image and shop now button",
                    "bannerText": "<strong>Magnum Double Ice Cream</strong>",
                    "bannerTextColour": "6e6c6c",
                    "ctaFlag": true,
                    "ctaText": "Shop now",
                    "ctaTextAccessibility": "for Magnum products",
                    "ctaLink": "https://www.tesco.com/groceries/en-GB/search?query=magnums",
                    "backgroundColour": "e1d6ac",
                    "heroImage": "https://cdn.flavedo.io/s/9b93e7f9-d747-4c8b-bcba-2357b280a3b3",
                    "heroImageAltText": "Magnums",
                    "tags": {},
                    "gtins": [
                        "7714107",
                        "7733636",
                        "7733657",
                        "7163379",
                        "7733628"
                    ],
                    "position": 1
                }
            ]
        },
        {
            "contentStandardId": "c619d1e2-1435-460b-9d2b-5d838e3dba9c",
            "slotId": "<SLOT_ID>",
            "banners": [
                {
                    "citrusAdId": "shotgun_kZp9yTCMm71vTo7iyQaK9I_YB09FUFYzNzBTQ0FO",
                    "citrusCampaignName": "milo-campaign-lakjsdf09kj",
                    "citrusContentStandardId": "21r372ba-dce6-46f2-bd16-1b923b9189f9",
                    "citrusSlotId": "<SLOT_ID>",
                    "citrusExpiry": "2021-05-17T02:47:52.849995214Z",
                    "headingText": "A banner for Milo with a product image and a shop now button",
                    "bannerText": "<strong>Try Milo Cereal</strong>",
                    "bannerTextColour": "48a94c",
                    "heroImage": "https://assets.imageurl.io/s/85d2d333-eed5-44d7-b131-8851d59f0574",
                    "heroImageAltText": "Milo product image",
                    "ctaFlag": true,
                    "ctaText": "Shop now",
                    "ctaTextAccessibility": "for Milo products",
                    "ctaLink": "retailer.com/everything/search/heritage%20mill?pageNumber=1",
                    "secondaryHeroImage": "https://assets.imageurl.io/s/85d2d333-eed5-44d7-b131-8m435c34r",
                    "secondaryHeroImageAltText": "Milo Logo",
                    "secondaryHeroMode": "landscape",
                    "backgroundColour": "895b5b",
                    "backgroundImage": "https://assets.flavedo.io/s/9c6fa248-c5ff-4341-9833-7e2b08464ada",
                    "backgroundImagePosition": "FILL",
                    "secondaryBackgroundImage": "https://assets.flavedo.io/s/9c6fa248-c5ff-4341-9833-7e2b08464ada",
                    "tags": {},
                    "gtins": [
                         "16309011",
                         "57312011",
                         "65250011"
                                ],
                    "position": 1
                }
            ]
        }
    ]
}
```

Le `id` champ est votre Ad ID utilisé dans les rapports d'impressions et de clics. Veuillez vous référer à la référence pour plus d'informations sur chaque chaîne.

### Balises de suivi tierces

Pour les annonces de bannière X, Epsilon Retail Media prend en charge le passage de balises de suivi tierces au détaillant. Ces balises sont utilisées par les annonceurs pour vérifier leurs performances par un tiers de confiance.

Epsilon Retail Media prend en charge les balises de suivi ci-dessous :

* DoubleVerify (Javascript et Image)
* DCM Click
* DCM Impression
* IAS
* Adform Impression
* Adform click

Si une campagne a une balise de suivi configurée, elle apparaîtra dans le champ correspondant dans l'objet `trackingTags` ci-dessous. Veuillez noter que si une campagne n'a pas de balise configurée, les objets `tags`et `trackingTags` resteront vides.

```json
{
    "ads": [
        {
            "contentStandardId": "c619d1e2-1435-460b-9d2b-5d838e3dba9c",
            "slotId": "<SLOT_ID>",
            "banners": [
                {
                    "citrusAdId": "shotgun__vW5pOojxDfN7T9VwaXWQLF2wKw3NzE0MTA3",
                    "citrusCampaignName": "CitrusAd-Example-Category-Banner-X-Ad-52793b405f1347b22e72a38c5a08699b",
                    "citrusContentStandardId": "c619d1e2-1435-460b-9d2b-5d838e3dba9c",
                    "citrusSlotId": "<SLOT_ID>",
                    "citrusExpiry": "2021-05-17T02:47:52.849995214Z",
                    "headingText": "Banner Advertisement for Magnum Double Ice Cream with a product image and shop now button",
                    "bannerText": "<strong>Magnum Double Ice Cream</strong>",
                    "bannerTextColour": "6e6c6c",
                    "ctaFlag": true,
                    "ctaText": "Shop now",
                    "ctaTextAccessibility": "for Magnum products",
                    "ctaLink": "https://www.tesco.com/groceries/en-GB/search?query=magnums",
                    "backgroundColour": "e1d6ac",
                    "heroImage": "https://cdn.flavedo.io/s/9b93e7f9-d747-4c8b-bcba-2357b280a3b3",
                    "heroImageAltText": "Magnums",
                    "tags": {},
                  	"trackingTags": {
                        "ADFORM_CLICK": "https://track.adform.net...",
                        "ADFORM_IMPRESSION": "<img src=\"https://track.adform.net...",
                        "DCM_CLICK": "https://ad.doubleclick.net/ddm/trackclk/...",
                        "DCM_IMPRESSION": "<IMG SRC=\"https://ad.doubleclick.net/ddm/trackimp/...",
                        "DV": "<script src=\"https://cdn.doubleverify.com/dvtp_src.js?ctx=...",
                        "DV_IMAGE": "<img src=\"https://tps.doubleverify.com/visit.jpg?ctx=..."
                    },
                    "gtins": [
                        "7714107",
                        "7733636",
                        "7733657",
                        "7163379",
                        "7733628"
                    ],
                    "position": 1
                }
            ]
        }
    ]
}
```

As Epsilon Retail Media étant une intégration de serveur à serveur, les balises de suivi tierces nécessitent un développement supplémentaire de la part du détaillant. Contactez votre Integration Program Manager (IPM) si vous souhaitez utiliser cette fonctionnalité.

{% hint style="info" %}
`tags` objet

Pour les balises DoubleVerify (Javascript) et DCM, vous pouvez voir l'objet `tags` alimenté également. La meilleure pratique consiste à utiliser le `trackingTags` réponse.
{% endhint %}

### Annonces vidéo

Si une campagne a des annonces vidéo configurées, la réponse inclut un objet `adm`comme on peut le voir ci-dessous :

```
{

  "ads": [

    {

      "contentStandardId": "c47c9ca2-ad3b-48cc-880b-e899c1661726",

      "slotId": "Top_Banner",

      "banners": [

        {

          "citrusAdId": "shotgun_8SvgA7OvvuwtZkkOKR0vr8AXMvQKFgoURmluZ2VybGltZTI2LWZkeHZxMjcSABoMCO30r70GEKPplJQCIgIIAQ==",

          "citrusCampaignName": "Ads:74-330-96832622ed499dafb3da8de8b76340a2",

          "citrusContentStandardId": "c47c9ca2-ad3b-48cc-880b-e899c1661726",

          "citrusSlotId": "Top_Banner",

          "citrusExpiry": "2025-02-12T01:33:33.579155107Z",

          "headingText": "recusandae 3205",

          "bannerText": "placeat 2825",

          "bannerTextColour": "ffffff",

          "ctaFlag": true,

          "ctaText": "CTA text",

          "ctaTextAccessibility": "call to action accessibility text",

          "ctaLink": http://citrusad.com ,

          "backgroundColour": "000000",

          "backgroundImage": https://dev3.flavedo.io./citrus/8de07ed9-60b4-4611-8bd5-3f1f0c0b6be4,

          "secondaryBackgroundImage": https://dev3.flavedo.io./citrus/b7a70785-1366-42c6-8134-c7fe47a30c34,

          "secondaryBackgroundImagePosition": "rightaligned",

          "heroImage": https://dev3.flavedo.io./citrus/26798ca9-1022-422d-9100-1a3687c88372,

          "heroImageAltText": "hero image alt text",

          "secondaryHeroImage": https://dev3.flavedo.io./citrus/c4ee18b4-bf51-44d7-9eb6-eeb1dc4c422f,

          "secondaryHeroImageAltText": "secondary hero image alt text",

          "secondaryHeroMode": "landscape",

          "tags": {},

          "additionalFields": [

            {

              "id": "text-1",

              "value": "sed 5731"

            }

          ],

          "gtins": [

            "Fingerlime26-fdxvq27",

            "Oranges5-qgxeb6",

            "Cherries9-adkoj11",

            "Incaberries20-ppscn21",

            "Banana14-simfk15"

          ],

          "sellerId": "seller_id_772_659",

          "position": 1,

          "metadata": {

            "advertiserInfo": {

             "advertiser": "Bob's advertising agency",

             "onBehalfOf": "Brand company inc"

            }

          },
          "adm": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<VAST version=\"4.0\">\n    <Ad id=\"1\">\n        <InLine>\n            <AdSystem>CitrusAd</AdSystem>\n            <Impression><![CDATA[https://integration.BASE-URL.citrusad.com/v1/resource/first-i/shotgun_2DbJUbTdlM3HFvLuF75YoA2FgpwKBQoDMTIzEgAaCwjHsuG_BhD7sqZzIgIIAQ==]]></Impression>\n            <ViewableImpression>\n                <Viewable><![CDATA[https://integration.BASE-URL.citrusad.com/v1/resource/first-i/shotgun_2DbJUbTdlM3HFvLuF75YoA2FgpwKBQoDMTIzEgAaCwjHsuG_BhD7sqZzIgIIAQ==]]></Viewable>\n                <NotViewable></NotViewable>\n                <ViewUndetermined></ViewUndetermined>\n            </ViewableImpression>\n            <AdTitle>VAST-4.0-Short-Intro.mp4</AdTitle>\n            <Creatives>\n                <Creative>\n                    <UniversalAdId idRegistry=\"http://citrusad.com \" idValue=\"VAST-4.0-Short-Intro.mp4\">VAST-4.0-Short-Intro.mp4</UniversalAdId>\n                    <Linear>\n                        <Duration></Duration>\n                        <MediaFiles>\n                            <MediaFile delivery=\"progressive\" type=\"video/mp4\" width=\"0\" height=\"0\" bitrate=\"0\" codec=\"\"><![CDATA[https://cdn.flavedo.io./citrus/VAST-4.0-Short-Intro.mp4]]></MediaFile>\n                            <Mezzanine><![CDATA[https://cdn.flavedo.io./citrus/VAST-4.0-Short-Intro.mp4]]></Mezzanine>\n                        </MediaFiles>\n                        <VideoClicks>\n                            <ClickTracking><![CDATA[https://integration.BASE-URL.citrusad.com/v1/resource/second-c/shotgun_2DbJUbTdlM3HFvLuF75YoA2FgpwKBQoDMTIzEgAaCwjHsuG_BhD7sqZzIgIIAQ==]]></ClickTracking>\n                            <ClickThrough><![CDATA[a/a-national/everything/browse]]></ClickThrough>\n                        </VideoClicks>\n                    </Linear>\n                </Creative>\n            </Creatives>\n        </InLine>\n    </Ad>\n</VAST>"

       }

      ]

    }

  ]

}
```

### Produits complémentaires

Si une campagne a des produits complémentaires configurés, la réponse inclut un tableau d'objets `companionProducts`comme on peut le voir ci-dessous :

```
{
  "ads": [
    {
      "contentStandardId": "c47c9ca2-ad3b-48cc-880b-e899c1661726",
      "slotId": "Top_Banner",
      "banners": [
        {
          "citrusAdId": "shotgun_8SvgA7OvvuwtZkkOKR0vr8AXMvQKFgoURmluZ2VybGltZTI2LWZkeHZxMjcSABoMCO30r70GEKPplJQCIgIIAQ==",
          "citrusCampaignName": "Ads:74-330-96832622ed499dafb3da8de8b76340a2",
          "citrusContentStandardId": "c47c9ca2-ad3b-48cc-880b-e899c1661726",
          "citrusSlotId": "Top_Banner",
          "citrusExpiry": "2025-02-12T01:33:33.579155107Z",
          "headingText": "recusandae 3205",
          "bannerText": "placeat 2825",
          "bannerTextColour": "ffffff",
          "ctaFlag": true,
          "ctaText": "CTA text",
          "ctaTextAccessibility": "call to action accessibility text",
          "ctaLink": http://citrusad.com,
          "backgroundColour": "000000",
          "backgroundImage": https://dev3.flavedo.io./citrus/8de07ed9-60b4-4611-8bd5-3f1f0c0b6be4,
          "secondaryBackgroundImage": https://dev3.flavedo.io./citrus/b7a70785-1366-42c6-8134-c7fe47a30c34,
          "secondaryBackgroundImagePosition": "rightaligned",
          "heroImage": https://dev3.flavedo.io./citrus/26798ca9-1022-422d-9100-1a3687c88372,
          "heroImageAltText": "hero image alt text",
          "secondaryHeroImage": https://dev3.flavedo.io./citrus/c4ee18b4-bf51-44d7-9eb6-eeb1dc4c422f,
          "secondaryHeroImageAltText": "secondary hero image alt text",
          "secondaryHeroMode": "landscape",
          "tags": {},
          "additionalFields": [
            {
              "id": "text-1",
              "value": "sed 5731"
            }
          ],
          "gtins": [
            "Fingerlime26-fdxvq27",
            "Oranges5-qgxeb6",
            "Cherries9-adkoj11",
            "Incaberries20-ppscn21",
            "Banana14-simfk15"
          ],
          "sellerId": "seller_id_772_659",
          "position": 1,
          "metadata": {
            "advertiserInfo": {
             "advertiser": "Bob's advertising agency",
             "onBehalfOf": "Brand company inc"
            }
          },
          “companionProducts”: [
            "Banana14-simfk15"
            "Oranges5-qgxeb6",
            "Incaberries20-ppscn21",
          ]
        }
      ]
    }
  ]
}
```

<br>

### sellerId de Marketplace

Si vous intégrez des vendeurs de marketplace, vous verrez peut-être un champ supplémentaire `sellerId` par annonce dans la réponse. Cela n'apparaîtra que si l'équipe qui possède la campagne diffusée a un ID de vendeur configuré dans l'interface utilisateur. L'exemple ci-dessous montre une annonce avec un sellerId et une sans.

```json
{
    "ads": [
        {
            "contentStandardId": "c619d1e2-1435-460b-9d2b-5d838e3dba9c",
            "slotId": "<SLOT_ID>",
            "banners": [
                {
                    "citrusAdId": "shotgun__vW5pOojxDfN7T9VwaXWQLF2wKw3NzE0MTA3",
                    "citrusCampaignName": "CitrusAd-Example-Category-Banner-X-Ad-52793b405f1347b22e72a38c5a08699b",
                    "citrusContentStandardId": "c619d1e2-1435-460b-9d2b-5d838e3dba9c",
                    "citrusSlotId": "<SLOT_ID>",
                    "citrusExpiry": "2021-05-17T02:47:52.849995214Z",
                    "headingText": "Banner Advertisement for Magnum Double Ice Cream with a product image and shop now button",
                    "bannerText": "<strong>Magnum Double Ice Cream</strong>",
                    "bannerTextColour": "6e6c6c",
                    "ctaFlag": true,
                    "ctaText": "Shop now",
                    "ctaTextAccessibility": "for Magnum products",
                    "ctaLink": "https://www.retailer.com/groceries/en-GB/search?query=magnums",
                    "backgroundColour": "e1d6ac",
                    "heroImage": "https://cdn.flavedo.io/s/9b93e7f9-d747-4c8b-bcba-2357b280a3b3",
                    "heroImageAltText": "Magnums",
                    "tags": {},
                    "gtins": [
                        "7714107",
                        "7733636",
                        "7733657",
                        "7163379",
                        "7733628"
                    ],
                    "position": 1,
                    "sellerId": "1ben32-ss3d43-amea"
                }
            ]
        },
        {
            "contentStandardId": "c619d1e2-1435-460b-9d2b-5d838e3dba9c",
            "slotId": "<SLOT_ID>",
            "banners": [
                {
                    "citrusAdId": "shotgun_kZp9yTCMm71vTo7iyQaK9I_YB09FUFYzNzBTQ0FO",
                    "citrusCampaignName": "milo-campaign-lakjsdf09kj",
                    "citrusContentStandardId": "21r372ba-dce6-46f2-bd16-1b923b9189f9",
                    "citrusSlotId": "<SLOT_ID>",
                    "citrusExpiry": "2021-05-17T02:47:52.849995214Z",
                    "headingText": "A banner for Milo with a product image and a shop now button",
                    "bannerText": "<strong>Try Milo Cereal</strong>",
                    "bannerTextColour": "48a94c",
                    "heroImage": "https://assets.imageurl.io/s/85d2d333-eed5-44d7-b131-8851d59f0574",
                    "heroImageAltText": "Milo product image",
                    "ctaFlag": true,
                    "ctaText": "Shop now",
                    "ctaTextAccessibility": "for Milo products",
                    "ctaLink": "retailer.com/everything/search/heritage%20mill?pageNumber=1",
                    "secondaryHeroImage": "https://assets.imageurl.io/s/85d2d333-eed5-44d7-b131-8m435c34r",
                    "secondaryHeroImageAltText": "Milo Logo",
                    "secondaryHeroMode": "landscape",
                    "backgroundColour": "895b5b",
                    "backgroundImage": "https://assets.flavedo.io/s/9c6fa248-c5ff-4341-9833-7e2b08464ada",
                    "backgroundImagePosition": "FILL",
                    "secondaryBackgroundImage": "https://assets.flavedo.io/s/9c6fa248-c5ff-4341-9833-7e2b08464ada",
                    "tags": {},
                    "gtins": [
                         "16309011",
                         "57312011",
                         "65250011"
                                ],
                    "position": 1
                }
            ]
        }
    ]
}
```

### Balises de suivi tierces

Epsilon Retail Media prend en charge le passage de balises de suivi tierces au détaillant. Ces balises sont utilisées par les annonceurs pour vérifier leurs performances par un tiers de confiance.

Epsilon Retail Media prend en charge les balises de suivi ci-dessous :

* DoubleVerify
* DCM Click
* DCM Impression
* IAS

Si une campagne a une balise de suivi configurée, elle apparaîtra dans le champ correspondant dans le `tags` ci-dessous. Veuillez noter que si une campagne n'a pas de balise configurée, les objets `tags` resteront vides.

```json
{
    "ads": [],
    "banners": [
				{
            "id": "banner_XeemTeq59HapGSp4vccOYfBq_yvc3zMzNjM2",
            "contentStandardId": "fec2ab89-7a29-42b5-b58a-5675688b52d9",
            "slotId": "<SLOT_ID>",
            "imageUrl": "https://cdn.flavedo.io/s/-oW-C3cEViSSO2krWkwOBUXOhvUdhHOySx-YQLGZ1lA=",
            "linkUrl": "https://www.retailer.com/link",
            "altText": "Your local ice cream",
            "text": "",
            "gtins": [
                "7733628",
                "7714107",
                "7163379",
                "7733636",
                "7733657"
            ],
            "expiry": "2021-05-17T01:49:17.75503253Z",
            "tags": {
                "dv": "<script src=\"https://cdn.doubleverify.com/dvtp_src.js?ctx=919421&cmp=1074060503&sid=1073907024&plc=1075810393&adsrv=115&btreg=&btadsrv=&crt=&tagtype=&dvtagver=6.1.src\" type=\"text/javascript\"></script>",
                "dcmClick": "<script ..../>",
                "dcmImpression": "<script.... />",
                "ias": "<script.... />"            }
        }
				],
    "products": [],
     "memoryToken":"85ykKVv-luDHMWLZx2d6xcPq6sF7CgkJCSJDb3VudGVyIjogIjIiLAoJCQkiQWRzIjogWwoJCQkJImRpc3BsYXlfV05VV0NwQkRKMUpKNm5wdVZSVExvOU40TUxzNE1UWTBOemt5TWc9PSIsCgkJCQkiZGlzcGxheV9MME5NUHRxNmdCcVFvREJOd3J0dE9UTGJoWk0xTVRFeU9UYzRPUT09IiwKCQkJCSJkaXNwbGF5XzlCcEpmdUpaWk9VXzgyaWpFM3VCczgxd3VVczRNekkwTnpVeE5nPT0iLAoJCQkJImRpc3BsYXlfcW1VU1p4TkpMQ0lqeWQwdTFJRDk0RmxVZ0pnNE16STBOelV4Tnc9PSIsCgkJCQkiZGlzcGxheV9oeHlFZktCUnRrNWlxMThMQzE1SDJHcEN3QjgxTVRFeU9UYzVNQT09IiwKCQkJCSJkaXNwbGF5X1NkcjFEcU5aUEFtcGh0Q1FIUndoYUxFT1B0RXhNamsxT1RJNE5BPT0iLAoJCQkJImRpc3BsYXlfeVlSai1qV2Ntc2ozNzhrel9PMm0yOVlwTjhJeE5EazNPRE00TXc9PSIsCgkJCQkiZGlzcGxheV9Xbm9NZGZuLTRTVmhxcF9xQzVvLWxoT0paNm8xTkRJeE1UUTROdz09IgoJCQldLAoJCQkiVFRMIjogMTYyODk4NTYwMAoJCX0="
}
```

As Epsilon Retail Media étant une intégration de serveur à serveur, les balises de suivi tierces nécessitent un développement supplémentaire de la part du détaillant.

## Législation sur les services numériques

Epsilon Retail Media aide les détaillants à respecter leurs obligations au titre du Règlement sur les services numériques [Loi sur les services numériques (Digital Services Act)](https://commission.europa.eu/strategy-and-policy/priorities-2019-2024/europe-fit-digital-age/digital-services-act_en) (DSA) de l'Union européenne (UE). Le DSA établit un ensemble uniforme de règles à travers l'UE, ciblant la régulation des contenus en ligne, la publicité transparente et la désinformation. Pour plus d'informations, voir [Loi sur les services numériques (Digital Services Act)](/retail-media-interface/integration/fr/feature-integrations/digital-services-act.md).

### Exemple de requête d'annonce

```
{
    "catalogId": "57a5318b-5349-46fd-80ed-fd2e0be15819",
    "contentStandardId": "c47c9ca2-ad3b-48cc-880b-e899c1661726",
    "bannerSlotIds": [
        {
            "slotId": "Top_Banner",
            "maxNumberOfAds": 1
        }
    ],
    "customerId": "velit3193",
    "placement": "broad-display-60e9699d-984f-4a80-9383-2e6dc7a68d03",
    "options": {
        "includeAdvertiserInfo": true
    }
}
```

### Exemple de réponse d'annonce

```
{
  "ads": [
    {
      "contentStandardId": "c47c9ca2-ad3b-48cc-880b-e899c1661726",
      "slotId": "Top_Banner",
      "banners": [
        {
          "citrusAdId": "shotgun_8SvgA7OvvuwtZkkOKR0vr8AXMvQKFgoURmluZ2VybGltZTI2LWZkeHZxMjcSABoMCO30r70GEKPplJQCIgIIAQ==",
          "citrusCampaignName": "Ads:74-330-96832622ed499dafb3da8de8b76340a2",
          "citrusContentStandardId": "c47c9ca2-ad3b-48cc-880b-e899c1661726",
          "citrusSlotId": "Top_Banner",
          "citrusExpiry": "2025-02-12T01:33:33.579155107Z",
          "headingText": "recusandae 3205",
          "bannerText": "placeat 2825",
          "bannerTextColour": "ffffff",
          "ctaFlag": true,
          "ctaText": "CTA text",
          "ctaTextAccessibility": "call to action accessibility text",
          "ctaLink": "http://citrusad.com",
          "backgroundColour": "000000",
          "backgroundImage": "https://dev3.flavedo.io./citrus/8de07ed9-60b4-4611-8bd5-3f1f0c0b6be4",
          "secondaryBackgroundImage": "https://dev3.flavedo.io./citrus/b7a70785-1366-42c6-8134-c7fe47a30c34",
          "secondaryBackgroundImagePosition": "rightaligned",
          "heroImage": "https://dev3.flavedo.io./citrus/26798ca9-1022-422d-9100-1a3687c88372",
          "heroImageAltText": "hero image alt text",
          "secondaryHeroImage": "https://dev3.flavedo.io./citrus/c4ee18b4-bf51-44d7-9eb6-eeb1dc4c422f",
          "secondaryHeroImageAltText": "secondary hero image alt text",
          "secondaryHeroMode": "landscape",
          "tags": {},
          "additionalFields": [
            {
              "id": "text-1",
              "value": "sed 5731"
            }
          ],
          "gtins": [
            "Fingerlime26-fdxvq27",
            "Oranges5-qgxeb6",
            "Cherries9-adkoj11",
            "Incaberries20-ppscn21",
            "Banana14-simfk15"
          ],
          "sellerId": "seller_id_772_659",
          "position": 1,
          "metadata": {
            "advertiserInfo": {
             "advertiser": "Bob's advertising agency",
          "onBehalfOf": "Brand company inc"
            }
          }
        }
      ]
    }
  ]
}
```


---

# 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://help.citrusad.com/retail-media-interface/integration/fr/generating-ads/banner-x-responsive/requesting-banner-x-ads.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.
