Créer la réponse

Une fois que votre application a traité la requête d'enchère de Google, elle doit créer et envoyer une réponse. Ce guide explique comment coder votre application pour créer la réponse.

Créer un message Protobuf BidResponse

Authorized Buyers envoie le BidRequest en tant que corps de message d'une POST HTTP. Si votre point de terminaison d'enchères est configuré pour utiliser le format Protobuf, votre application doit envoyer une réponse avec l'en-tête Content-Type défini sur application/octet-stream et un corps de message constitué d'un tampon de protocole sérialisé. Le tampon de protocole est un message BidResponse tel que défini dans openrtb.proto. Votre application doit renvoyer un BidResponse analysable en réponse à chaque BidRequest. Les délais d'inactivité et les réponses qui ne peuvent pas être analysées sont considérés comme des erreurs. Google limite les enchérisseurs dont les taux d'erreur sont élevés.

Si vous ne souhaitez pas définir d'enchère pour une impression, vous devez renvoyer une réponse HTTP 204 vide. Vous pouvez obtenir openrtb.proto sur la page Données de référence.

ID de la création

Votre BidResponse spécifie une création via le champ BidResponse.seatbid.bid.crid (limite de 64 octets). Même les créations similaires doivent avoir des valeurs uniques pour ce champ si elles diffèrent sur des caractéristiques notables, y compris, mais sans s'y limiter, la taille, l'URL déclarée, les attributs de la création et les types de fournisseurs. En d'autres termes, vous devez attribuer des ID de création différents à deux annonces qui:

  • avoir un look ou un comportement différents ;
  • Affichez le rendu sur différentes images.
  • Affichage par différents moyens (par exemple, une annonce se compose d'une image, tandis que l'autre est une vidéo).

Lorsque vous concevez votre application, vous devez choisir une méthode systématique de génération d'identifiants adaptée aux types de créations que vous prévoyez d'envoyer.

Attributs d'annonce

Google recommande de déclarer des attributs de création pour décrire les caractéristiques de votre annonce et son ciblage à l'aide d'une combinaison de BidResponse.seatbid.bid.apis et BidResponse.seatbid.bid.attr, ou de l'extension BidResponse.seatbid.bid.ext.attribute. Vous trouverez ci-dessous la description de la déclaration d'attributs:

  • VPAID
    Définissez BidResponse.seatbid.bid.apis sur VPAID_1 ou VPAID_2. Pour le format JSON, vous pouvez définir cette valeur sur 1 ou 2, respectivement.
  • MRAID
    Définissez BidResponse.seatbid.bid.apis sur MRAID_1 ou 3 pour le format JSON.
  • SIZELESS
    Définissez BidResponse.seatbid.bid.attr sur RESPONSIVE ou 18 pour le format JSON.
  • PLAYABLE
    Pour ce faire, définissez BidResponse.seatbid.bid.attr sur USER_INTERACTIVE ou 13 pour le format JSON.

Consultez la ressource sur les créations pour savoir comment obtenir des commentaires sur les propriétés détectées de vos créations.

Champs Open Bidding

Les réponses aux enchères envoyées par les enchérisseurs de place de marché et de réseau participant à Open Bidding sont similaires à celles d'Authorized Buyers participant aux enchères en temps réel standards. Les clients Open Bidding peuvent spécifier un petit nombre de champs supplémentaires, et certains champs existants peuvent avoir d'autres utilisations. En voici quelques-uns:

OpenRTB Authorized Buyers Détails
BidResponse.imp[].pmp.deals[].id BidResponse.ad[].adslot[].exchange_deal_id

ID de l'accord de l'espace de noms de la place de marché associé à cette enchère et signalé aux éditeurs.

BidResponse.seatbid[].bid[].ext.exchange_deal_type BidResponse.ad[].adslot[].exchange_deal_type

Type d'accord signalé aux éditeurs, qui affecte la façon dont l'accord est traité dans l'enchère.

BidResponse.seatbid[].bid[].ext.third_party_buyer_token BidResponse.ad[].adslot[].third_party_buyer_token Jeton utilisé pour identifier les informations sur l'acheteur tiers final si la place de marché en tant qu'enchérisseur Open Bidding est un intermédiaire. Il est obtenu auprès de l'acheteur tiers et doit être transmis à Google tel quel dans la réponse à l'enchère.

Recommandations

  • Activez les connexions HTTPS persistantes (également appelées "keep-alive" ou "réutilisation de la connexion") sur vos serveurs. Définissez le délai avant expiration sur au moins 10 secondes. Des valeurs plus élevées sont bénéfiques dans de nombreux cas. Google vérifie cela lors des tests de latence initiaux de votre application, car Authorized Buyers envoie des requêtes à un débit élevé et doit éviter les coûts liés à la latence liés à l'établissement d'une connexion TCP distincte pour chaque requête.
  • Incluez l'URL de suivi des impressions facultative pour suivre le moment où l'impression s'affiche plutôt que le moment où l'enchérisseur remporte l'enchère. En raison de la baisse entre les victoires et les rendus, les statistiques de suivi sont plus précises.

  • Assurez-vous que votre code d'enchérisseur ne dépend pas de champs obsolètes, ce qui pourrait entraîner l'échec de vos enchères avec des erreurs.
  • Incluez BidResponse.seatbid.bid.w et BidResponse.seatbid.bid.h dans votre BidResponse. Une BidResponse pour une demande incluant plusieurs tailles d'annonces doit inclure ces champs, sinon elle sera supprimée de l'enchère.
  • Limitez la taille de votre réponse à moins de 8 ko. Des réponses très volumineuses peuvent augmenter la latence du réseau et entraîner des délais avant expiration.
  • Suivez les consignes concernant les enchères sur l'inventaire iOS nécessitant une attribution SKAdNetwork.

Exemple de réponse aux enchères

Les exemples suivants représentent des exemples lisibles par l'homme des requêtes Protobuf et JSON.

Réponse sérialisée
id: "9u09jhHJXT2fbaDZ9V1x66"
seatbid {
  bid {
    id: "37Td8Gbw1Lr8161bA4B"
    impid: "1"
    price: 0.075
    adm: "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>"
    adomain: "google.com"
    adomain: "google.com"
    crid: "test_creative_id_156129"
    cat: "IAB22"
    w: 320
    h: 50
    language: "es"
    slotinpod: SLOT_POSITION_POD_ANY
    cattax: IAB_CONTENT_1_0
    [com.google.doubleclick.bid] {
      impression_tracking_url: "https://test.com/impression?id=123456"
      exchange_deal_type: OPEN_AUCTION
      event_notification_token {
        payload: "token"
      }
      billing_id: 61560909063
    }
  }
  seat: "4778:9251:780612"
}
cur: "USD"
{
  "id": "9u09jhHJXT2fbaDZ9V1x66",
  "seatbid": [
    {
      "bid": [
        {
          "id": "37Td8Gbw1Lr8161bA4B",
          "impid": "1",
          "price": 0.075,
          "adm": "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>",
          "adomain": [
            "google.com",
            "google.com"
          ],
          "crid": "test_creative_id_156129",
          "cat": [
            "IAB22"
          ],
          "w": 320,
          "h": 50,
          "language": "es",
          "slotinpod": 0,
          "cattax": 1,
          "ext": {
            "impression_tracking_url": [
              "https://test.com/impression?id=123456"
            ],
            "exchange_deal_type": 0,
            "event_notification_token": {
              "payload": "token"
            },
            "billing_id": "61560909063"
          }
        }
      ],
      "seat": "4778:9251:780612"
    }
  ],
  "cur": "USD"
}
Réponse sérialisée
ad {
  html_snippet: "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>"
  adslot {
    id: 1
    max_cpm_micros: 226722
    billing_id: 78614473201
    currency: "USD"
  }
  click_through_url: "google.com"
  attribute: 105
  buyer_creative_id: "test_creative_id_827359"
  width: 336
  height: 280
  impression_tracking_url: "https://test.com/imp?id=123456"
  event_notification_token: "token"
}

Important:Les messages Protobuf représentés dans les exemples sont présentés ici sous forme de texte lisible par l'homme. Cependant, ce n'est pas ainsi que les messages sont envoyés sur le fil. Lorsque vous utilisez le format Google ou OpenRTB Protobuf, seuls les messages BidResponse sérialisés sont acceptés.

Vous pouvez créer et sérialiser un message BidResponse à l'aide du code C++ suivant:

BidResponse bid_response;
// fill in bid response with bid information
string post_response;
if (bid_response.SerializeToString(&post_response)) {
  // respond to the POST with post_response as the content
} else {
  // return an error to the POST
}

Spécifier la création

Votre réponse à l'enchère spécifie la création à diffuser si votre enchère est gagnante. Votre enchère doit inclure l'un des formats d'annonces compatibles (AMP, vidéo, native). Dans cet exemple, nous spécifions la création à l'aide du champ html_snippet.

Vous pouvez également spécifier votre création à l'aide de l'un des champs suivants, en fonction du format de l'annonce:

  • Annonce affichée par le SDK
    • BidResponse.seatbid.bid.ext.sdk_rendered_ad
  • AMP
    • BidResponse.seatbid.bid.amp_ad_url
  • Vidéo
    • BidResponse.seatbid.bid.adm
  • Native
    • BidResponse.seatbid.bid.adm_native

Spécifiez une annonce hébergée sur votre ou vos serveurs à l'aide d'un extrait HTML dans le champ BidResponse.seatbid.bid.adm. L'extrait est inclus dans un iFrame inséré dans la page Web. L'annonce est ainsi récupérée et affichée lorsque la page est chargée. Vous devez créer l'extrait HTML de sorte que l'annonce (bannière ou interstitielle) s'affiche correctement dans un iFrame et à une taille appropriée pour l'emplacement publicitaire sur lequel vous enchérissez.

De plus, la taille de l'annonce déclarée dans la réponse à l'enchère doit correspondre exactement à l'une des combinaisons de tailles de la demande d'enchère lorsque:

  • L'annonce est une bannière standard (et non une vidéo, une annonce native ou un interstitiel).
  • L'enchérisseur a déclaré la taille dans la réponse à l'enchère. La déclaration de taille est obligatoire chaque fois qu'une demande comporte plusieurs tailles.
  • Une exception est faite pour les annonces interstitielles. Pour les interstitiels, la largeur doit être d'au moins 50% de la largeur de l'écran et la hauteur d'au moins 40% de sa hauteur.

Vous pouvez spécifier une création d'extrait de code HTML à l'aide de n'importe quel code HTML valide qui s'affiche correctement, mais gardez à l'esprit les restrictions concernant la spécification du champ crid dans la section Créer un message BidResponse. Vous pouvez par exemple utiliser cette fonctionnalité pour ajouter des informations supplémentaires aux arguments des URL extraites de vos serveurs lors de l'affichage de l'annonce. Vous pouvez ainsi renvoyer des données arbitraires sur l'impression à vos propres serveurs.

La plupart des règles concernant les extraits HTML renvoyés dans les réponses aux enchères sont les mêmes que pour les annonces tierces. Pour en savoir plus, consultez les Consignes du programme des acheteurs autorisés, les Conditions requises pour la diffusion d'annonces par des tiers et Déclarer les URL de suivi dans les annonces.

Spécifier des macros

Les macros sont du texte mis en forme intégré à certains champs de réponse aux enchères contenant des URL qui sont remplacées par une valeur pertinente au moment de la diffusion de l'annonce. Par exemple, si votre enchère gagnante incluait la macro AUCTION_PRICE dans la création d'extrait de code HTML incluse avec votre enchère, la macro serait remplacée par une valeur que vous pourriez déchiffrer pour déterminer le montant que vous avez payé pour l'impression lors de l'enchère.

Vous pouvez inclure des macros dans les champs suivants:

  • BidResponse.seatbid.bid.adm

    Les macros sont acceptées pour les formats d'extrait de code HTML, natif, URL de vidéo et XML VAST vidéo.

  • BidResponse.seatbid.bid.adm_native.eventtrackers.url

  • BidResponse.seatbid.bid.adm_native.imptrackers

  • BidResponse.seatbid.bid.ext.amp_ad_url

    Seules les macros WINNING_PRICE et WINNING_PRICE_ESC spécifiques à Google sont acceptées pour les créations AMP.

  • BidResponse.seatbid.bid.burl

  • BidResponse.seatbid.bid.ext.impression_tracking_url

    Utilisez-le à la place de BidResponse.seatbid.bid.burl si vous avez besoin de plusieurs URL de facturation.

Par exemple, vous pouvez inclure une macro dans un extrait HTML en insérant ${MACRO} dans l'URL utilisée pour extraire la création, MACRO étant l'une des macros compatibles décrites dans la spécification OpenRTB.

Macros Google RTB

Google accepte des macros supplémentaires en plus de celles que vous trouverez dans la spécification OpenRTB. Elles sont mises en forme différemment et s'affichent sous la forme %%MACRO%% si elles sont intégrées à une URL. Le tableau suivant décrit ces macros:

Macro Description
ADVERTISING_IDENTIFIER Permet aux acheteurs de recevoir l'IDFA iOS ou l'identifiant publicitaire Android lors de l'affichage de l'impression. Pour en savoir plus, consultez Décrypter les identifiants des annonceurs.
CACHEBUSTER Représentation sous forme de chaîne d'un entier aléatoire non signé de quatre octets.
CLICK_URL_UNESC

URL de destination sans échappement de l'annonce. Dans l'extrait, une version échappée de l'URL de clic tierce doit suivre directement la macro.

Par exemple, si l'URL de suivi des clics tiers est http://my.adserver.com/some/path/handleclick?click=clk, le code suivant peut être utilisé avec la version à une seule échappée de l'URL de suivi des clics tiers après l'appel de la macro:

<a href="%%CLICK_URL_UNESC%%http%3A%2F%2Fmy.adserver.com%2Fsome%2Fpath%2Fhandleclick%3Fclick%3Dclk"></a>

Au moment de la diffusion de l'annonce, cet extrait est remplacé par:

<a href="http://google-click-url?...&ad_url=http%3A%2F%2Fmy.adserver.com%2Fsome%2Fpath%2Fhandleclick%3Fclick%3Dclk"></a>

L'URL enregistre d'abord le clic auprès de Google, puis redirige vers l'URL de suivi des clics tiers.

CLICK_URL_ESC

URL de destination de l'annonce avec échappement. Utilisez cette macro à la place de CLICK_URL_UNESC si vous devez d'abord transférer la valeur via un autre serveur qui renverra la redirection.

Par exemple, le code suivant peut être utilisé dans un extrait HTML:

<a href="http://my.adserver.com/click?google_click_url=%%CLICK_URL_ESC%%"></a>

Au moment de la diffusion de l'annonce, cet extrait est remplacé par:

<a href="http://my.adserver.com/click?google_click_url=http://google-click- url%3F...%26ad_url%3D"></a>

Le clic sera enregistré avec my.adserver.com, qui sera ensuite chargé de rediriger vers l'URL transmise dans le paramètre google_click_url. Cela suppose que my.adserver.com échappe le paramètre google_click_url.

Vous pouvez ajouter une URL à double échappement après %%CLICK_URL_ESC%%. Une fois l'échappement inverse effectué par my.adserver.com, une version de l'URL avec un seul échappement est ajoutée à google_click_url. Lorsque google_click_url est extrait, il est à nouveau dé-encodé, puis redirigé.

CLICK_URL_ESC_ESC

URL à double échappement de l'annonce. Utilisez cette macro à la place de CLICK_URL_UNESC si vous devez d'abord transférer la valeur via un autre serveur qui renverra la redirection.

Par exemple, le code suivant peut être utilisé dans un extrait HTML:

<a href="http://my.adserver.com/click?google_click_url=%%CLICK_URL_ESC_ESC%%"></a>

Au moment de la diffusion de l'annonce, cet extrait est remplacé par:

<a href="http://my.otheradserver.com/click?google_click_url=http%3A%2F%2Fmy.adserver.com%2Fclick%3Fgoogle_click_url%3Dhttp%3A%2F%2Fgoogle-click-%20url%253F...%2526ad_url%253D"></a>
SCHEME Développé en http: si la demande d'enchère ne nécessite pas de SSL ou en https: si elle nécessite de SSL.
SITE Domaine avec séquence d'échappement dans l'URL de contenu ou ID anonyme pour l'inventaire anonyme.
SITE_URL Obsolète. Remplacement par la macro SITE, qui offre une fonctionnalité identique.
TZ_OFFSET Décalage de fuseau horaire.
VERIFICATION

Différentes valeurs pour la production et lorsque la création est analysée dans le pipeline de validation. Le format est le suivant : %%?VERIFICATION:true-val:false-val%%, où toutes les valeurs, à l'exception des macros, peuvent être utilisées pour true-val et false-val, y compris les chaînes vides. Pour Open Bidding, nous recommandons aux places de marché d'utiliser cette macro. Une fois qu'elles l'auront fait, les plates-formes côté demande n'auront pas besoin d'apporter de modifications.

Par exemple, si une création devait inclure %%?VERIFICATION:-1:5000%%, le remplacement de texte serait 5000 lors de la diffusion et -1 dans le pipeline de validation. Cela permet de différencier ces deux ensembles de pings.

WINNING_PRICE

Le coût de l'impression codée (CPI plutôt que CPM) en micro-unités de la devise du compte. Par exemple, une enchère au CPM gagnante d'un montant de 5 USD équivaut à 5 000 000 micro-unités de CPM, soit 5 000 micro-unités de CPI. La valeur décodée de WINNING_PRICE serait dans ce cas de 5 000. Le prix gagnant est exprimé en CPI.

Pour analyser cette macro, vous devrez implémenter une application qui déchiffre les confirmations de prix. Pour en savoir plus, consultez la page Décrypter les confirmations de prix.

WINNING_PRICE_ESC WINNING_PRICE encodée en URL.

Google vous demande d'utiliser la macro CLICK_URL_UNESC ou CLICK_URL_ESC dans la création de l'annonce diffusée par un tiers. Google utilise les macros CLICK_URL pour le suivi des clics.

L'échappement d'URL dans les macros utilise le schéma suivant:

  • Le caractère espace est remplacé par un signe plus (+).
  • Les caractères alphanumériques (0-9, a-z, A-Z) et les caractères de l'ensemble !()*,-./:_~ restent inchangés.
  • Tous les autres caractères sont remplacés par %XX, où XX est le nombre hexadécimal représentant le caractère.

Restrictions et exigences applicables aux éditeurs

La demande d'enchère inclut des informations sur les types de restrictions et d'exigences que les éditeurs imposent aux créations lors de l'enchère.

  • BidRequest.bcat
    • Vous pouvez comparer les catégories bloquées spécifiées par ce champ à celles détectées pour vos créations envoyées à l'aide du champ detectedCategories de l'API Real-time Bidding.
  • BidRequest.imp.ext.allowed_vendor_type
  • BidRequest.imp.secure
    • En pratique, cette valeur est toujours définie sur true, car Google exige la prise en charge de SSL pour toutes les créations.
  • BidRequest.imp.{audio/banner/native/video}
  • BidRequest.imp.{audio/banner/native/video}.api
  • BidRequest.imp.{audio/banner/native/video}.battr
  • BidRequest.imp.{audio/banner/video}.mimes

N'enchérissez jamais avec une annonce contenant une fonctionnalité soumise à restriction. Pour les fonctionnalités autorisées telles que le type de fournisseur, ne renvoyez une annonce que si son type de fournisseur figure dans la liste allowed_vendor_type de BidRequest. Seuls les formats d'annonces spécifiés dans la demande d'enchères en remplissant des champs tels que BidRequest.imp.banner doivent être inclus dans votre enchère. Pour en savoir plus, consultez les commentaires de ces champs dans la définition du protocole BidRequest.

Si une annonce est renvoyée dans BidResponse, vous devez définir avec précision les champs BidResponse.seatbid.bid.attr, BidResponse.seatbid.bid.cat et BidResponse.seatbid.bid.adomain ou BidResponse.seatbid.bid.adm_native.link.url dans BidResponse. Si une annonce comporte plusieurs valeurs applicables pour ces champs, vous devez inclure toutes les valeurs. Pour en savoir plus, consultez les commentaires de ces champs dans la définition du tampon de protocole BidResponse. Les réponses pour lesquelles ces champs ne sont pas définis sont supprimées.

Open Measurement

Open Measurement vous permet de spécifier des fournisseurs tiers qui fournissent des services de mesure et de validation indépendants pour les annonces diffusées dans les environnements d'applications mobiles.

Les formats d'annonces compatibles incluent les annonces vidéo, les bannières et les interstitiels. Pour en savoir plus sur l'utilisation d'Open Measurement dans une réponse d'enchère contenant ces formats, consultez l'article du Centre d'aide sur le SDK Open Measurement.

Exemples de réponses aux enchères

Les sections suivantes présentent des exemples de réponses aux enchères pour différents types d'annonces.

Bannière d'application

Réponse sérialisée
id: "8L85Di7e9374c3jriwo2W0"
seatbid {
  bid {
    id: "0L7hx7783rjD1hT81FH"
    impid: "1"
    price: 0.4000000059604645
    adm: "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>"
    adomain: "google.com"
    crid: "test_creative_id_192654"
    w: 300
    h: 50
    burl: "https://test.com/imp?id=123456"
    [com.google.doubleclick.bid] {
      impression_tracking_url: "https://test.com/impression?id=123456"
      billing_id: 70614819650
      skadn {
        version: "3.0"
        network: "Y8HK1z22"
        campaign: "72382716"
        itunesitem: "953637916"
        sourceapp: "com.google.testapp"
        fidelities {
          fidelity: VIEW_THROUGH_ADS
          nonce: "bf105d9a-6df9-4d49-a10d-44e21a539415"
          timestamp: "1730359683568"
          signature: "589Vb2BJlF955D6kUj197D84U8UWWtngYQ73o1SVMEcAk6ju348j0454AOxpR74j95BF13RLC119Qo73nyq2qgp4IJENP6yE"
        }
        fidelities {
          fidelity: STOREKIT_RENDERED_ADS
          nonce: "bf105d9a-6df9-4d49-a10d-44e21a539415"
          timestamp: "1730359683568"
          signature: "3Av39t8684YefY03NT715Z2dTtXQ39pQH7C9aq6Wuh4WzbS044734J7FAlw7690Nm7743G7Z4P6hX8K7H607886b7FBHTCYY"
        }
        skadn_opts {
          always_open_appstore: true
        }
      }
      app_promotion_type: INSTALLS
    }
  }
  seat: "4095:5416:758587"
}
cur: "USD"
[com.google.doubleclick.bid_response] {
  processing_time_ms: 16
}
{
  "id": "8L85Di7e9374c3jriwo2W0",
  "seatbid": [
    {
      "bid": [
        {
          "id": "0L7hx7783rjD1hT81FH",
          "impid": "1",
          "price": 0.4000000059604645,
          "adm": "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>",
          "adomain": [
            "google.com"
          ],
          "crid": "test_creative_id_192654",
          "w": 300,
          "h": 50,
          "burl": "https://test.com/imp?id=123456",
          "ext": {
            "impression_tracking_url": [
              "https://test.com/impression?id=123456"
            ],
            "billing_id": "70614819650",
            "skadn": {
              "version": "3.0",
              "network": "Y8HK1z22",
              "campaign": "72382716",
              "itunesitem": "953637916",
              "sourceapp": "com.google.testapp",
              "fidelities": [
                {
                  "fidelity": 0,
                  "nonce": "bf105d9a-6df9-4d49-a10d-44e21a539415",
                  "timestamp": "1730359683568",
                  "signature": "589Vb2BJlF955D6kUj197D84U8UWWtngYQ73o1SVMEcAk6ju348j0454AOxpR74j95BF13RLC119Qo73nyq2qgp4IJENP6yE"
                },
                {
                  "fidelity": 1,
                  "nonce": "bf105d9a-6df9-4d49-a10d-44e21a539415",
                  "timestamp": "1730359683568",
                  "signature": "3Av39t8684YefY03NT715Z2dTtXQ39pQH7C9aq6Wuh4WzbS044734J7FAlw7690Nm7743G7Z4P6hX8K7H607886b7FBHTCYY"
                }
              ],
              "skadn_opts": {
                "always_open_appstore": 1
              }
            },
            "app_promotion_type": 1
          }
        }
      ],
      "seat": "4095:5416:758587"
    }
  ],
  "cur": "USD",
  "ext": {
    "processing_time_ms": 16
  }
}
Réponse sérialisée
ad {
  html_snippet: "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>"
  adslot {
    id: 1
    max_cpm_micros: 44095
    billing_id: 99718422589
  }
  click_through_url: "google.com"
  attribute: 47
  attribute: 50
  category: 7
  buyer_creative_id: "test_creative_id_997551"
  advertiser_name: "Google"
  width: 300
  height: 250
  impression_tracking_url: "https://test.com/imp?id=123456"
  skadn {
    version: "4.0"
    network: "DofiF4X5"
    itunesitem: "448730563"
    sourceapp: "195751234"
    fidelities {
      fidelity_type: VIEW_THROUGH_ADS
      nonce: "a869c155-3566-475c-8cb9-d0a75159e0c5"
      timestamp: 1728803273481
      signature: "0KXE97ri9xnW9M10NDg64r014MsN7SO5R11N29oe8h8Cuao3K477i9dFH61bKny28iA6337A6EK6T3fgR9p9EJK12qvaY96E"
    }
    fidelities {
      fidelity_type: STOREKIT_RENDERED_ADS
      nonce: "a869c155-3566-475c-8cb9-d0a75159e0c5"
      timestamp: 1728803273481
      signature: "EF1Vj82st371O79029Q9067AL00972U3NqNG9u295r8B4681c12Se2jk34XSR8404681c9WGa9a69779CQ87o9T81Y85198C"
    }
    source_identifier: 1
  }
  advertised_app_id: "APP_ID_OMITTED"
  app_promotion_type: INSTALLS
}
processing_time_ms: 13

Interstitiel pour une application

Réponse sérialisée
id: "6700Z3L2o0zSw9g8IqmiQ5"
seatbid {
  bid {
    id: "0UBHDN63xQ8hj1F8184"
    impid: "1"
    price: 0.016728
    adid: "test_creative_id_179418"
    adm: "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>"
    adomain: "google.com"
    crid: "test_creative_id_179418"
    cat: "IAB13-7"
    w: 300
    h: 600
    burl: "https://test.com/imp?id=123456"
    [com.google.doubleclick.bid] {
      billing_id: 14443955188
      dsa {
        behalf: "TEST_ADVERTISER"
        paid: "TEST_PAYING_ENTITY"
        adrender: false
      }
    }
  }
  seat: "2054:4176:757161"
  group: false
}
bidid: "TI590379-wi3Z9CU8-6j8V-Uj0l1I102h2q"
cur: "USD"
{
  "id": "6700Z3L2o0zSw9g8IqmiQ5",
  "seatbid": [
    {
      "bid": [
        {
          "id": "0UBHDN63xQ8hj1F8184",
          "impid": "1",
          "price": 0.016728,
          "adid": "test_creative_id_179418",
          "adm": "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>",
          "adomain": [
            "google.com"
          ],
          "crid": "test_creative_id_179418",
          "cat": [
            "IAB13-7"
          ],
          "w": 300,
          "h": 600,
          "burl": "https://test.com/imp?id=123456",
          "ext": {
            "billing_id": "14443955188",
            "dsa": {
              "behalf": "TEST_ADVERTISER",
              "paid": "TEST_PAYING_ENTITY",
              "adrender": 0
            }
          }
        }
      ],
      "seat": "2054:4176:757161",
      "group": 0
    }
  ],
  "bidid": "TI590379-wi3Z9CU8-6j8V-Uj0l1I102h2q",
  "cur": "USD"
}
Réponse sérialisée
ad {
  html_snippet: "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>"
  adslot {
    id: 1
    max_cpm_micros: 80117
    min_cpm_micros: 0
    billing_id: 12608068331
    deal_id: 0
  }
  click_through_url: "google.com"
  attribute: 47
  buyer_creative_id: "test_creative_id_266407"
  advertiser_name: "Google"
  width: 756
  height: 384
  impression_tracking_url: "https://test.com/imp?id=123456"
  event_notification_token: "token"
  dsa_transparency {
    buyer_render: true
  }
}
processing_time_ms: 11

Vidéo interstitielle pour une application

Réponse sérialisée
id: "79N7F1708654i75q3k69j1"
seatbid {
  bid {
    id: "1gR655162hOsH9q3X6R"
    impid: "1"
    price: 2.3833
    adid: "test_creative_id_648299"
    adm: "https://video.test.com/ads?id=123456&wprice=%%WINNING_PRICE%%"
    adomain: "google.com"
    crid: "test_creative_id_648299"
    attr: VIDEO_IN_BANNER_AUTO_PLAY
    w: 1920
    h: 1080
    [com.google.doubleclick.bid] {
      event_notification_token {
        payload: "token"
      }
      billing_id: 11004606416
      skadn {
        version: "4.0"
        network: "O5O88B57"
        itunesitem: "509167749"
        nonce: ""
        sourceapp: "com.google.testapp"
        timestamp: "OMITTED"
        signature: "OMITTED"
        fidelities {
          fidelity: VIEW_THROUGH_ADS
          nonce: "d3be52b1-8ef6-4277-8922-54450b07fd5b"
          timestamp: "1730409097616"
          signature: "8d52E359K158Dj1u89EpLP3544Qz7B10CV0a92YZJ6JXX8d9uXi72N43ZxjRl96Ph7v8R5u1k5y9Aoy3jZcN3C5dxRU390qc"
        }
        fidelities {
          fidelity: STOREKIT_RENDERED_ADS
          nonce: "d3be52b1-8ef6-4277-8922-54450b07fd5b"
          timestamp: "1730409097616"
          signature: "43C2b79X4nPY913Qs3jJLLhCjUNZg39cK022pCE2wH731Ie7q4584b5UGG137Jh12I2R6a0e35LJbvQJbn5o564roQ7G1Mtd"
        }
        sourceidentifier: "1"
      }
      app_promotion_type: INSTALLS
    }
  }
  seat: "1061:9160:833989"
}
bidid: "m7V3rjn0-aF599ZZ6-37hA-b9o7DU8CLrtp"
cur: "USD"
{
  "id": "79N7F1708654i75q3k69j1",
  "seatbid": [
    {
      "bid": [
        {
          "id": "1gR655162hOsH9q3X6R",
          "impid": "1",
          "price": 2.3833,
          "adid": "test_creative_id_648299",
          "adm": "https://video.test.com/ads?id=123456&wprice=%%WINNING_PRICE%%",
          "adomain": [
            "google.com"
          ],
          "crid": "test_creative_id_648299",
          "attr": [
            6
          ],
          "w": 1920,
          "h": 1080,
          "ext": {
            "event_notification_token": {
              "payload": "token"
            },
            "billing_id": "11004606416",
            "skadn": {
              "version": "4.0",
              "network": "O5O88B57",
              "itunesitem": "509167749",
              "nonce": "",
              "sourceapp": "com.google.testapp",
              "timestamp": "OMITTED",
              "signature": "OMITTED",
              "fidelities": [
                {
                  "fidelity": 0,
                  "nonce": "d3be52b1-8ef6-4277-8922-54450b07fd5b",
                  "timestamp": "1730409097616",
                  "signature": "8d52E359K158Dj1u89EpLP3544Qz7B10CV0a92YZJ6JXX8d9uXi72N43ZxjRl96Ph7v8R5u1k5y9Aoy3jZcN3C5dxRU390qc"
                },
                {
                  "fidelity": 1,
                  "nonce": "d3be52b1-8ef6-4277-8922-54450b07fd5b",
                  "timestamp": "1730409097616",
                  "signature": "43C2b79X4nPY913Qs3jJLLhCjUNZg39cK022pCE2wH731Ie7q4584b5UGG137Jh12I2R6a0e35LJbvQJbn5o564roQ7G1Mtd"
                }
              ],
              "sourceidentifier": "1"
            },
            "app_promotion_type": 1
          }
        }
      ],
      "seat": "1061:9160:833989"
    }
  ],
  "bidid": "m7V3rjn0-aF599ZZ6-37hA-b9o7DU8CLrtp",
  "cur": "USD"
}
Réponse sérialisée
ad {
  adslot {
    id: 1
    max_cpm_micros: 2454000
    billing_id: 95400492935
    deal_id: 1
  }
  click_through_url: "google.com"
  attribute: 22
  attribute: 105
  buyer_creative_id: "test_creative_id_716344"
  width: 0
  height: 0
  video_vast_xml: "OMITTED_VAST_XML"
  event_notification_token: "token"
  skadn {
    version: "4.0"
    network: "113tdmXM"
    itunesitem: "460184775"
    sourceapp: "751592940"
    fidelities {
      fidelity_type: STOREKIT_RENDERED_ADS
      nonce: "1c3ed154-33f5-4cb7-960a-3e571cb9c3b9"
      timestamp: 1728932156118
      signature: "7m3PDLV778PZ741T2I3561kkCW3UjIp5p63989cP311iiZ2445v20HP5ymfD8ThYO7437h22075h4h9O21S8A08U1kw3qis2"
    }
    fidelities {
      fidelity_type: VIEW_THROUGH_ADS
      nonce: "1c3ed154-33f5-4cb7-960a-3e571cb9c3b9"
      timestamp: 1728932156118
      signature: "28X90AX01Z762a3W92186a40Eb4J8ekACsYFo55J8vD445f5pcA80MH45753Iy887596gK8ax0s55ndC23eg0V7P862yS240"
    }
    source_identifier: 1
  }
  advertised_app_id: "APP_ID_OMITTED"
  app_promotion_type: INSTALLS
}
processing_time_ms: 51

Application native

Réponse sérialisée
id: "96Z599PGNvp7Mr99138Fm0"
seatbid {
  bid {
    id: "NQb32Ge7Rtt84wFn2p8"
    impid: "1"
    price: 0.153584
    adid: "test_creative_id_272596"
    adomain: "google.com"
    crid: "test_creative_id_272596"
    cat: "IAB13-7"
    burl: "https://test.com/imp?id=123456"
    adm_native {
      ver: "1.2"
      assets {
        id: 1
        required: true
        title {
          text: "Luxury Mars Cruises"
        }
      }
      assets {
        id: 2
        required: true
        data {
          value: "Visit the planet in a luxury spaceship."
        }
      }
      assets {
        id: 3
        required: false
        data {
          value: "Book today"
        }
      }
      assets {
        id: 4
        required: true
        data {
          value: "Galactic Luxury Cruises"
        }
      }
      assets {
        id: 5
        required: true
        img {
          url: "https://native.test.com/image?id=123456"
          w: 1200
          h: 627
        }
      }
      link {
        url: "https://www.google.com"
      }
      eventtrackers {
        event: IMPRESSION
        method: IMG
        url: "https://test.com/event?id=123456"
      }
      privacy: "https://adssettings.google.com/whythisad?source=display&reasons=OMITTED"
    }
    [com.google.doubleclick.bid] {
      ad_choices_destination_url: "https://test.com/preferences"
      billing_id: 29846056590
      dsa {
        behalf: "TEST_ADVERTISER"
        paid: "TEST_PAYING_ENTITY"
        adrender: false
      }
    }
  }
  bid {
    id: "4vwb23qm6iqU6w6G978"
    impid: "1"
    price: 0.153584
    adid: "test_creative_id_272596"
    adomain: "google.com"
    crid: "test_creative_id_272596"
    cat: "IAB21"
    burl: "https://test.com/imp?id=123456"
    adm_native {
      ver: "1.2"
      assets {
        id: 1
        required: true
        title {
          text: "Luxury Mars Cruises"
        }
      }
      assets {
        id: 2
        required: true
        data {
          value: "Visit the planet in a luxury spaceship."
        }
      }
      assets {
        id: 3
        required: false
        data {
          value: "Book today"
        }
      }
      assets {
        id: 4
        required: true
        data {
          value: "Galactic Luxury Cruises"
        }
      }
      assets {
        id: 5
        required: true
        img {
          url: "https://native.test.com/image?id=123456"
          w: 1200
          h: 627
        }
      }
      link {
        url: "https://www.google.com"
      }
      eventtrackers {
        event: IMPRESSION
        method: IMG
        url: "https://test.com/event?id=123456"
      }
      privacy: "https://adssettings.google.com/whythisad?source=display&reasons=OMITTED"
    }
    [com.google.doubleclick.bid] {
      ad_choices_destination_url: "https://test.com/preferences"
      dsa {
        behalf: "TEST_ADVERTISER"
        paid: "TEST_PAYING_ENTITY"
        adrender: false
      }
    }
  }
  seat: "4528:1161:591635"
  group: false
}
bidid: "hgu4ev7j-ZK929XM0-79f7-0A23O0VN2CFC"
cur: "USD"
{
  "id": "96Z599PGNvp7Mr99138Fm0",
  "seatbid": [
    {
      "bid": [
        {
          "id": "NQb32Ge7Rtt84wFn2p8",
          "impid": "1",
          "price": 0.153584,
          "adid": "test_creative_id_272596",
          "adomain": [
            "google.com"
          ],
          "crid": "test_creative_id_272596",
          "cat": [
            "IAB13-7"
          ],
          "burl": "https://test.com/imp?id=123456",
          "ext": {
            "ad_choices_destination_url": "https://test.com/preferences",
            "billing_id": "29846056590",
            "dsa": {
              "behalf": "TEST_ADVERTISER",
              "paid": "TEST_PAYING_ENTITY",
              "adrender": 0
            }
          },
          "adm": "{\"ver\":\"1.2\",\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"text\":\"Luxury Mars Cruises\"}},{\"id\":2,\"required\":1,\"data\":{\"value\":\"Visit the planet in a luxury spaceship.\"}},{\"id\":3,\"required\":0,\"data\":{\"value\":\"Book today\"}},{\"id\":4,\"required\":1,\"data\":{\"value\":\"Galactic Luxury Cruises\"}},{\"id\":5,\"required\":1,\"img\":{\"url\":\"https://native.test.com/image?id=123456\",\"w\":1200,\"h\":627}}],\"link\":{\"url\":\"https://www.google.com\"},\"eventtrackers\":[{\"event\":1,\"method\":1,\"url\":\"https://test.com/event?id=123456\"}],\"privacy\":\"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED\"}"
        },
        {
          "id": "4vwb23qm6iqU6w6G978",
          "impid": "1",
          "price": 0.153584,
          "adid": "test_creative_id_272596",
          "adomain": [
            "google.com"
          ],
          "crid": "test_creative_id_272596",
          "cat": [
            "IAB21"
          ],
          "burl": "https://test.com/imp?id=123456",
          "ext": {
            "ad_choices_destination_url": "https://test.com/preferences",
            "dsa": {
              "behalf": "TEST_ADVERTISER",
              "paid": "TEST_PAYING_ENTITY",
              "adrender": 0
            }
          },
          "adm": "{\"ver\":\"1.2\",\"assets\":[{\"id\":1,\"required\":1,\"title\":{\"text\":\"Luxury Mars Cruises\"}},{\"id\":2,\"required\":1,\"data\":{\"value\":\"Visit the planet in a luxury spaceship.\"}},{\"id\":3,\"required\":0,\"data\":{\"value\":\"Book today\"}},{\"id\":4,\"required\":1,\"data\":{\"value\":\"Galactic Luxury Cruises\"}},{\"id\":5,\"required\":1,\"img\":{\"url\":\"https://native.test.com/image?id=123456\",\"w\":1200,\"h\":627}}],\"link\":{\"url\":\"https://www.google.com\"},\"eventtrackers\":[{\"event\":1,\"method\":1,\"url\":\"https://test.com/event?id=123456\"}],\"privacy\":\"https://adssettings.google.com/whythisad?source=display&reasons=OMITTED\"}"
        }
      ],
      "seat": "4528:1161:591635",
      "group": 0
    }
  ],
  "bidid": "hgu4ev7j-ZK929XM0-79f7-0A23O0VN2CFC",
  "cur": "USD"
}
Réponse sérialisée
ad {
  adslot {
    id: 1
    max_cpm_micros: 158000
    billing_id: 41106584355
    deal_id: 1
  }
  click_through_url: "google.com"
  attribute: 70
  buyer_creative_id: "test_creative_id_251451"
  advertiser_name: "Google"
  native_ad {
    headline: "Luxury Mars Cruises"
    body: "Visit the planet in a luxury spaceship."
    call_to_action: "Book today"
    advertiser: "Galactic Luxury Cruises"
    image {
      url: "https://native.test.com/image?id=123456"
      width: 1200
      height: 222
    }
    app_icon {
      url: "https://native.test.com/icon?id=123456"
      width: 512
      height: 512
    }
    star_rating: 4.300000190734863
    click_link_url: "https://www.google.com"
  }
  impression_tracking_url: "https://test.com/imp?id=123456"
  impression_tracking_url: "https://test.com/imp?id=123456"
  event_notification_token: "token"
  skadn {
    version: "4.0"
    network: "l6x39K4z"
    itunesitem: "731305960"
    sourceapp: "627009739"
    fidelities {
      fidelity_type: STOREKIT_RENDERED_ADS
      nonce: "9216faff-74a9-4b35-badc-66878c35f67c"
      timestamp: 1728975919221
      signature: "b0USXkmg02Q3v6p301kYOHG36CCOWWdEo52RHRttB9t8PTNi79qL17E4D6h7UeUSuq479oTK13G2Ev34MJlU86C5vY1SMVw2"
    }
    fidelities {
      fidelity_type: VIEW_THROUGH_ADS
      nonce: "9216faff-74a9-4b35-badc-66878c35f67c"
      timestamp: 1728975919221
      signature: "4Cf4NH6239z9f3wa8j6420Z7H0UISYxyxN5720444dkq6457I5FY0Jg8bk1xge2P8YgiDp74l2738136v2g1A8D50331IRm0"
    }
    source_identifier: 1
  }
  click_tracking_urls: "https://google.com/rtb/click?imp_id=55d2112c-4947-4da5-bc37-b79ebf4577dd"
  advertised_app_id: "APP_ID_OMITTED"
  app_promotion_type: INSTALLS
}
processing_time_ms: 63

Vidéo Web

Réponse sérialisée
id: "b2F6m05a9d83V7I35iw415"
seatbid {
  bid {
    id: "Ob7259K5679O36pMt00"
    impid: "1"
    price: 1.52
    adid: "test_creative_id_262797"
    adm: "https://video.test.com/ads?id=123456&wprice=%%WINNING_PRICE%%"
    adomain: "google.com"
    crid: "test_creative_id_262797"
    exp: 3600
    [com.google.doubleclick.bid] {
      event_notification_token {
        payload: "token"
      }
      billing_id: 47460168025
    }
  }
  bid {
    id: "0890di791A75n9R13jM"
    impid: "1"
    price: 1.2
    adid: "test_creative_id_262797"
    adm: "https://video.test.com/ads?id=123456&wprice=%%WINNING_PRICE%%"
    adomain: "google.com"
    crid: "test_creative_id_262797"
    exp: 3600
    [com.google.doubleclick.bid] {
      event_notification_token {
        payload: "token"
      }
    }
  }
  seat: "2121:7826:598388"
}
cur: "USD"
{
  "id": "b2F6m05a9d83V7I35iw415",
  "seatbid": [
    {
      "bid": [
        {
          "id": "Ob7259K5679O36pMt00",
          "impid": "1",
          "price": 1.52,
          "adid": "test_creative_id_262797",
          "adm": "https://video.test.com/ads?id=123456&wprice=%%WINNING_PRICE%%",
          "adomain": [
            "google.com"
          ],
          "crid": "test_creative_id_262797",
          "exp": 3600,
          "ext": {
            "event_notification_token": {
              "payload": "token"
            },
            "billing_id": "47460168025"
          }
        },
        {
          "id": "0890di791A75n9R13jM",
          "impid": "1",
          "price": 1.2,
          "adid": "test_creative_id_262797",
          "adm": "https://video.test.com/ads?id=123456&wprice=%%WINNING_PRICE%%",
          "adomain": [
            "google.com"
          ],
          "crid": "test_creative_id_262797",
          "exp": 3600,
          "ext": {
            "event_notification_token": {
              "payload": "token"
            }
          }
        }
      ],
      "seat": "2121:7826:598388"
    }
  ],
  "cur": "USD"
}
Réponse sérialisée
fad {
  adslot {
    id: 1
    max_cpm_micros: 68340760
    min_cpm_micros: 0
    billing_id: 75752641104
    deal_id: 0
  }
  click_through_url: "google.com"
  vendor_type: 145
  attribute: 47
  attribute: 8
  video_url: "https://video.test.com/ads?id=123456&wprice=%%WINNING_PRICE%%"
  buyer_creative_id: "test_creative_id_877383"
  advertiser_name: "Google"
  event_notification_token: "token"
  dsa_transparency {
    buyer_render: true
  }
}
processing_time_ms: 17

Bannière Web mobile pour les enchérisseurs d'enchères en ligne

Réponse sérialisée
id: "l30Zu42070Man1Z5u751yG"
seatbid {
  bid {
    id: "4X6uu65F9J3m467C571"
    impid: "1"
    price: 0.17
    adm: "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>"
    adomain: "google.com"
    crid: "test_creative_id_941528"
    w: 320
    h: 50
    [com.google.doubleclick.bid] {
      impression_tracking_url: "https://test.com/impression?id=123456"
      impression_tracking_url: "https://test.com/impression?id=123456"
      event_notification_token {
        payload: "token"
      }
      billing_id: 50962964480
    }
  }
  seat: "7632:7504:809671"
}
bidid: "II638Xkf-6432F06d-VGu8-27B4407D136w"
[com.google.doubleclick.bid_response] {
  processing_time_ms: 70
}
{
  "id": "l30Zu42070Man1Z5u751yG",
  "seatbid": [
    {
      "bid": [
        {
          "id": "4X6uu65F9J3m467C571",
          "impid": "1",
          "price": 0.17,
          "adm": "<iframe marginwidth=0 marginheight=0 height=600 frameborder=0 width=160 scrolling=no src=\"https://test.com/ads?id=123456&curl=%%CLICK_URL_ESC%%&wprice=%%WINNING_PRICE_ESC%%\"></iframe>",
          "adomain": [
            "google.com"
          ],
          "crid": "test_creative_id_941528",
          "w": 320,
          "h": 50,
          "ext": {
            "impression_tracking_url": [
              "https://test.com/impression?id=123456",
              "https://test.com/impression?id=123456"
            ],
            "event_notification_token": {
              "payload": "token"
            },
            "billing_id": "50962964480"
          }
        }
      ],
      "seat": "7632:7504:809671"
    }
  ],
  "bidid": "II638Xkf-6432F06d-VGu8-27B4407D136w",
  "ext": {
    "processing_time_ms": 70
  }
}