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éfinissezBidResponse.seatbid.bid.apis
surVPAID_1
ouVPAID_2
. Pour le format JSON, vous pouvez définir cette valeur sur1
ou2
, respectivement.MRAID
DéfinissezBidResponse.seatbid.bid.apis
surMRAID_1
ou3
pour le format JSON.SIZELESS
DéfinissezBidResponse.seatbid.bid.attr
surRESPONSIVE
ou18
pour le format JSON.PLAYABLE
Pour ce faire, définissezBidResponse.seatbid.bid.attr
surUSER_INTERACTIVE
ou13
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
etBidResponse.seatbid.bid.h
dans votreBidResponse
. UneBidResponse
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.
Afficher l'exemple
Réponse sérialiséeid: "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"
Afficher l'exemple
{ "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" }
Afficher l'exemple
Réponse sérialiséead { 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
etWINNING_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 <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 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 Vous pouvez ajouter une URL à double échappement après |
CLICK_URL_ESC_ESC |
URL à double échappement de l'annonce. Utilisez cette macro à la place de 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 : Par exemple, si une création devait inclure |
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 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.
- 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
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.
- En pratique, cette valeur est toujours définie sur
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
Afficher l'exemple
Réponse sérialiséeid: "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 }
Afficher l'exemple
{ "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 } }
Afficher l'exemple
Réponse sérialiséead { 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
Afficher l'exemple
Réponse sérialiséeid: "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"
Afficher l'exemple
{ "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" }
Afficher l'exemple
Réponse sérialiséead { 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
Afficher l'exemple
Réponse sérialiséeid: "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"
Afficher l'exemple
{ "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" }
Afficher l'exemple
Réponse sérialiséead { 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
Afficher l'exemple
Réponse sérialiséeid: "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"
Afficher l'exemple
{ "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" }
Afficher l'exemple
Réponse sérialiséead { 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
Afficher l'exemple
Réponse sérialiséeid: "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"
Afficher l'exemple
{ "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" }
Afficher l'exemple
Réponse sérialiséefad { 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
Afficher l'exemple
Réponse sérialiséeid: "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 }
Afficher l'exemple
{ "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 } }