Nachdem Ihre Anwendung die Gebotsanfrage von Google verarbeitet hat, muss sie eine Antwort erstellen und senden. In diesem Leitfaden wird beschrieben, wie Sie Ihre Anwendung so programmieren, dass die Antwort erstellt wird.
Protobuf-BidResponse-Nachricht erstellen
Authorized Buyers sendet die BidRequest als Nachrichtentext einer HTTP-POST. Wenn Ihr Gebotsendepunkt für das Protobuf-Format konfiguriert ist, muss Ihre Anwendung eine Antwort mit dem Content-Type-Header application/octet-stream und einem Nachrichtentext senden, der aus einem serialisierten Protokoll-Zwischenspeicher besteht. Der Protokollpuffer ist eine BidResponse-Nachricht gemäß der Definition in openrtb.proto. Ihre Anwendung muss für jede BidRequest eine analysierbare BidResponse zurückgeben. Zeitüberschreitungen und Antworten, die nicht geparst werden können, gelten als Fehler. Google drosselt Bieter mit hoher Fehlerrate.
Wenn Sie kein Gebot für eine Impression abgeben möchten, müssen Sie eine leere HTTP-204-Antwort zurückgeben. openrtb.proto finden Sie auf der Seite Referenzdaten.
Creative-ID
In Ihrem BidResponse wird ein Creative über das Feld BidResponse.seatbid.bid.crid angegeben (64 Byte). Selbst ähnliche Creatives müssen eindeutige Werte für dieses Feld haben, wenn sie sich in wichtigen Merkmalen unterscheiden, z. B. Größe, deklarierte URL, Creative-Attribute und Anbietertypen. Das bedeutet, dass Sie zwei Anzeigen, die
anders aussehen oder sich anders verhalten.
Rendern Sie das Bild in verschiedenen Bildern.
Sie werden auf unterschiedliche Weise gerendert (z. B. besteht eine Anzeige aus einem Bild, die andere aus einem Video).
Beim Entwerfen Ihrer Anwendung sollten Sie sich für eine systematische Methode zur Generierung von IDs entscheiden, die für die Art der Creatives sinnvoll ist, die Sie einreichen möchten.
Anzeigenattribute
Google empfiehlt, Creative-Attribute zu deklarieren, um die Eigenschaften und das Targeting Ihrer Anzeige zu beschreiben. Verwenden Sie dazu entweder eine Kombination aus BidResponse.seatbid.bid.apis und BidResponse.seatbid.bid.attr oder die Erweiterung BidResponse.seatbid.bid.ext.attribute. Im Folgenden wird beschrieben, wie Sie Attribute deklarieren:
VPAID
Legen Sie BidResponse.seatbid.bid.apis auf VPAID_1 oder VPAID_2 fest. Für das JSON-Format kann dies auf 1 oder 2 festgelegt werden.
MRAID
Legen Sie für BidResponse.seatbid.bid.apis den Wert MRAID_1 oder 3 für das JSON-Format fest.
SIZELESS
Legen Sie für BidResponse.seatbid.bid.attr den Wert RESPONSIVE oder 18 für das JSON-Format fest.
PLAYABLE
Legen Sie dazu für BidResponse.seatbid.bid.attr den Wert USER_INTERACTIVE oder 13 für das JSON-Format fest.
In der Creative-Ressource erfahren Sie, wie Sie Feedback zu den erkannten Eigenschaften Ihrer Creatives erhalten.
Open Bidding-Felder
Gebotsanfragen, die von Anzeigenplattformen und Netzwerken gesendet werden, die Open Bidding nutzen, ähneln denen von Authorized Buyers, die standardmäßige Echtzeitgebote verwenden. Open Bidding-Kunden können eine kleine Anzahl zusätzlicher Felder angeben. Einige vorhandene Felder können auch anders verwendet werden. Dazu gehören:
OpenRTB
Authorized Buyers
Details
BidResponse.imp[].pmp.deals[].id
BidResponse.ad[].adslot[].exchange_deal_id
Die Deal-ID aus dem Namespace der Anzeigenplattform, die mit diesem Gebot verknüpft und an Publisher gesendet wird.
Token, das verwendet wird, um Informationen zu Endkäufern von Drittanbietern zu identifizieren, wenn die Anzeigenplattform als Open Bidding-Nutzer ein Vermittler ist. Dieser Wert wird vom Drittanbieter-Käufer abgerufen und muss in der Gebotsantwort unverändert an Google übergeben werden.
Empfehlungen
Aktivieren Sie persistente HTTPS-Verbindungen (auch als „Keep-Alive“ oder „Verbindungswiederverwendung“ bezeichnet) auf Ihren Servern. Legen Sie das Zeitlimit auf mindestens 10 Sekunden fest. Höhere Werte sind in vielen Fällen von Vorteil. Google prüft dies bei den ersten Latenztests Ihrer Anwendung, da Authorized Buyers Anfragen mit hoher Geschwindigkeit sendet und den Latenzoverhead beim Herstellen einer separaten TCP-Verbindung für jede Anfrage vermeiden muss.
Fügen Sie die optionale Impressions-Tracking-URL hinzu, um zu erfassen, wann die Impression gerendert wird, anstatt wann der Bieter den Zuschlag erhält. Aufgrund des Rückgangs zwischen Impressionen und Conversions ergeben sich so genauere Tracking-Statistiken.
Der Gebotscode darf keine Abhängigkeiten von veralteten Feldern haben, da dies zu Fehlern bei Geboten führen kann.
Fügen Sie BidResponse.seatbid.bid.w und BidResponse.seatbid.bid.h in Ihre BidResponse ein. Ein BidResponse für eine Anfrage mit mehreren Anzeigengrößen muss diese Felder enthalten, da es sonst aus der Auktion ausgeschlossen wird.
Begrenzen Sie die Antwortgröße auf unter 8 KB. Sehr große Antworten können die Netzwerklatenz erhöhen und zu Zeitüberschreitungen führen.
Wichtig:Die in den Beispielen dargestellten Protobuf-Nachrichten sind hier als visuell lesbarer Text dargestellt. So werden die Nachrichten jedoch nicht über das Netzwerk gesendet. Wenn Sie das Google- oder OpenRTB-Protobuf-Format verwenden, werden nur serialisierte BidResponse-Nachrichten akzeptiert.
Mit dem folgenden C++-Code können Sie eine BidResponse-Nachricht erstellen und serialisieren:
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
}
Creative angeben
In Ihrer Gebotsantwort wird das Creative angegeben, das ausgeliefert werden soll, wenn Ihr Gebot den Zuschlag erhält. Ihr Gebot muss eines der unterstützten Anzeigenformate (AMP, Video, nativ) enthalten. In diesem Beispiel geben wir das Creative über das Feld html_snippet an.
Alternativ können Sie Ihr Creative mit einem der folgenden Felder angeben, je nach Anzeigenformat:
SDK-gerenderte Anzeige
BidResponse.seatbid.bid.ext.sdk_rendered_ad
AMP
BidResponse.seatbid.bid.amp_ad_url
Video
BidResponse.seatbid.bid.adm
Native App
BidResponse.seatbid.bid.adm_native
Geben Sie im Feld BidResponse.seatbid.bid.adm eine Anzeige an, die auf Ihren eigenen Servern gehostet wird. Verwenden Sie dazu ein HTML-Snippet. Das Snippet ist in einem iFrame enthalten, der in die Webseite eingefügt wird. Dadurch wird die Anzeige beim Laden der Seite abgerufen und gerendert. Das HTML-Snippet muss so erstellt werden, dass die Anzeige (Banner oder Interstitial) in einem iFrame korrekt gerendert wird und die richtige Größe für den Anzeigenblock hat, auf den Sie bieten.
Außerdem muss die in der Gebotsantwort angegebene Anzeigengröße genau mit einer der Größenkombinationen in der Gebotsanfrage übereinstimmen, wenn Folgendes zutrifft:
Eine Anzeige ist ein normales Banner (kein Video-, natives oder Interstitial-Anzeigenformat).
Der Bieter hat die Größe in der Gebotsantwort angegeben. Eine Größendeklaration ist immer dann erforderlich, wenn die Anfrage mehr als eine Größe enthält.
Eine Ausnahme gilt für Interstitial-Anzeigen. Bei Interstitials muss die Breite mindestens 50% der Bildschirmbreite und die Höhe mindestens 40% der Bildschirmhöhe betragen.
Sie können ein HTML-Snippet-Creative mit beliebigem gültigen HTML-Code angeben, der richtig gerendert wird. Beachten Sie jedoch die Einschränkungen bei der Angabe des Felds crid im Abschnitt Create BidResponse-Nachricht.
So können Sie beispielsweise zusätzliche Informationen in Argumente der URLs einfügen, die beim Rendern der Anzeige von Ihren Servern abgerufen werden. So können Sie beliebige Daten zur Impression an Ihre eigenen Server zurückgeben.
Makros sind formatierter Text, der in einige Felder für Gebotsanfragen eingebettet ist und URLs enthält, die bei der Anzeigenauslieferung durch einen relevanten Wert ersetzt werden. Wenn Ihr erfolgreiches Gebot beispielsweise das Makro AUCTION_PRICE im HTML-Snippet-Creative enthielt, das mit Ihrem Gebot gesendet wurde, wird das Makro durch einen Wert ersetzt, den Sie entschlüsseln können, um den Betrag zu ermitteln, den Sie für die Impression in der Auktion bezahlt haben.
Sie können Makros in die folgenden Felder einfügen:
BidResponse.seatbid.bid.adm
Makros werden für HTML-Snippets, native Formate, Video-URLs und VAST-XML-Videoformate unterstützt.
Verwenden Sie diese URL anstelle von BidResponse.seatbid.bid.burl, wenn Sie mehr als eine Abrechnungs-URL benötigen.
Sie können beispielsweise ein Makro als Teil eines HTML-Snippets einfügen, indem Sie ${MACRO} in die URL einbetten, über die das Creative abgerufen wird. MACRO ist eines der in der OpenRTB-Spezifikation beschriebenen unterstützten Makros.
Google RTB-Makros
Google unterstützt neben den in der OpenRTB-Spezifikation aufgeführten Makros auch zusätzliche Makros. Diese sind anders formatiert und werden in eine URL eingebettet als %%MACRO%% angezeigt. In der folgenden Tabelle werden diese Makros beschrieben:
Makro
Beschreibung
ADVERTISING_IDENTIFIER
Käufer können beim Rendern von Impressionen die iOS-IDFA oder die Android-Werbe-ID erhalten.
Weitere Informationen finden Sie unter Werbetreibenden-IDs entschlüsseln.
CACHEBUSTER
Eine Stringdarstellung einer zufälligen, vorzeichenlosen, vier Byte großen Ganzzahl.
CLICK_URL_UNESC
Die nicht maskierte Klick-URL für die Anzeige. Im Snippet sollte direkt nach dem Makro eine entschlüsselte Version der Drittanbieter-Klick-URL folgen.
Wenn die Klick-URL des Drittanbieters beispielsweise http://my.adserver.com/some/path/handleclick?click=clk lautet, könnte der folgende Code mit der einmal ent escapeten Version der Klick-URL des Drittanbieters nach der Makroaufruf verwendet werden:
Über die URL wird der Klick zuerst bei Google registriert und dann an die Klick-URL des Drittanbieters weitergeleitet.
CLICK_URL_ESC
Die URL für Klicks auf die Anzeige, die mit einem Escape-Zeichen versehen ist. Verwenden Sie dieses Makro anstelle von CLICK_URL_UNESC, wenn der Wert zuerst an einen anderen Server übergeben werden muss, der dann eine Weiterleitung zurückgibt.
Der folgende Code könnte beispielsweise in einem HTML-Snippet verwendet werden:
Dadurch wird der Klick bei my.adserver.com registriert, das dann für die Weiterleitung an die im Parameter google_click_url übergebene URL verantwortlich ist. Dabei wird davon ausgegangen, dass my.adserver.com den Parameter google_click_url entwirft.
Sie können nach %%CLICK_URL_ESC%% eine doppelt doppelte URL-Escaping-Zeichenfolge anhängen. Nachdem die Entfernung der Escape-Sequenzen durch my.adserver.com abgeschlossen ist, bleibt eine einzelne Escape-Version der URL übrig, die an google_click_url angehängt wird. Wenn die google_click_url abgerufen wird, wird sie noch einmal entescaped und dann weitergeleitet.
CLICK_URL_ESC_ESC
Die doppelt maskierte URL für die Anzeige. Verwenden Sie dieses Makro anstelle von CLICK_URL_UNESC, wenn der Wert zuerst an einen anderen Server übergeben werden muss, der dann eine Weiterleitung zurückgibt.
Der folgende Code könnte beispielsweise in einem HTML-Snippet verwendet werden:
Wird auf http: erweitert, wenn für die Gebotsanfrage kein SSL erforderlich ist, oder auf https:, wenn für die Gebotsanfrage SSL erforderlich ist.
SITE
Die Domain mit maskierter URL der Content-URL oder bei anonymem Inventar die anonyme ID.
SITE_URL
Verworfen. Wurde durch das SITE-Makro ersetzt, das dieselbe Funktionalität bietet.
TZ_OFFSET
Die Zeitzonenverschiebung.
VERIFICATION
Die verschiedenen Werte für die Produktion und für das Scannen des Creatives in der Bestätigungspipeline. Das Format lautet:
%%?VERIFICATION:true-val:false-val%%. Dabei können für true-val und false-val beliebige Werte verwendet werden, mit Ausnahme von Makros, einschließlich leerer Strings. Für Open Bidding empfehlen wir Anzeigenplattformen, dieses Makro zu verwenden. In diesem Fall müssen auf Nachfrageseite keine Änderungen vorgenommen werden.
Wenn ein Creative beispielsweise %%?VERIFICATION:-1:5000%% enthält, ist der Textersatz beim Ausliefern 5000 und in der Überprüfungspipeline -1. So können Sie diese beiden Pings unterscheiden.
WINNING_PRICE
Die codierten Kosten für die Impression (das heißt CPI statt CPM) in millionstel Einheiten der Kontowährung. Ein erfolgreiches CPM-Gebot von 5 US-Dollar entspricht 5.000.000 Millionstel CPM oder 5.000 Millionstel CPI. Der decodierte Wert von WINNING_PRICE wäre in diesem Fall 5.000.
Der Gewinnerpreis wird in CPI angegeben.
Um dieses Makro zu parsen, müssen Sie eine Anwendung implementieren, die Preisbestätigungen entschlüsselt. Weitere Informationen finden Sie auf der Seite Preisbestätigungen entschlüsseln.
WINNING_PRICE_ESC
WINNING_PRICE mit URL-Escaping
Google verlangt, dass Sie im Creative der vom Drittanbieter ausgelieferten Anzeige entweder das CLICK_URL_UNESC- oder das CLICK_URL_ESC-Makro verwenden. Google verwendet die CLICK_URL-Makros für das Klick-Tracking.
Für die URL-Escaping-Funktion in Makros wird das folgende Schema verwendet:
Das Leerzeichen wird durch ein Pluszeichen (+) ersetzt.
Alphanumerische Zeichen (0–9, a–z, A–Z) und Zeichen aus dem Satz !()*,-./:_~ bleiben unverändert.
Alle anderen Zeichen werden durch %XX ersetzt, wobei XX die Hexadezimalzahl ist, die für das Zeichen steht.
Einschränkungen und Anforderungen für Publisher
Die Gebotsanfrage enthält Informationen zu den Einschränkungen und Anforderungen, die Publisher an Creatives in der Auktion stellen.
BidRequest.bcat
Sie können die in diesem Feld angegebenen blockierten Kategorien mit denjenigen vergleichen, die für Ihre eingereichten Creatives im Feld detectedCategories der Real-time Bidding API erkannt wurden.
BidRequest.imp.ext.allowed_vendor_type
BidRequest.imp.secure
In der Praxis wird diese Einstellung immer auf true festgelegt, da Google SSL-Unterstützung für alle Creatives erfordert.
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
Geben Sie niemals Gebote für Anzeigen ab, die eine eingeschränkte Funktion enthalten. Bei zulässigen Funktionen wie dem Anbietertyp darf eine Anzeige nur zurückgegeben werden, wenn der Anbietertyp in der Liste allowed_vendor_type in BidRequest enthalten ist. Nur Anzeigenformate, die in der Gebotsanfrage durch Ausfüllen von Feldern wie BidRequest.imp.banner angegeben sind, sollten in Ihr Gebot aufgenommen werden. Weitere Informationen finden Sie in den Kommentaren zu diesen Feldern in der BidRequest-Protokoll-Bufferdefinition.
Wenn eine Anzeige in BidResponse zurückgegeben wird, müssen Sie die Felder BidResponse.seatbid.bid.attr, BidResponse.seatbid.bid.cat und entweder BidResponse.seatbid.bid.adomain oder BidResponse.seatbid.bid.adm_native.link.url in BidResponse korrekt festlegen. Wenn für eine Anzeige mehrere Werte für diese Felder gelten, müssen Sie alle angeben. Weitere Informationen finden Sie in den Kommentaren zu diesen Feldern in der BidResponse-Protokollpufferdefinition.
Antworten, für die diese Felder nicht festgelegt sind, werden verworfen.
Open Measurement
Mit Open Measurement können Sie Drittanbieter angeben, die unabhängige Analyse- und Überprüfungsdienste für Anzeigen in mobilen App-Umgebungen anbieten.
Zu den unterstützten Anzeigenformaten gehören Video-, Banner- und Interstitial-Anzeigen. Weitere Informationen zur Verwendung von Open Measurement in einer Gebotsantwort, die diese Formate enthält, finden Sie im Hilfeartikel Open Measurement SDK.
Beispiel für Gebotsantworten
In den folgenden Abschnitten finden Sie Beispielgebotsantworten für verschiedene Anzeigentypen.
id:"96Z599PGNvp7Mr99138Fm0"seatbid{bid{id:"NQb32Ge7Rtt84wFn2p8"impid:"1"price:0.153584adid:"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:1required:truetitle{text:"Luxury Mars Cruises"}}assets{id:2required:truedata{value:"Visit the planet in a luxury spaceship."}}assets{id:3required:falsedata{value:"Book today"}}assets{id:4required:truedata{value:"Galactic Luxury Cruises"}}assets{id:5required:trueimg{url:"https://native.test.com/image?id=123456"w:1200h:627}}link{url:"https://www.google.com"}eventtrackers{event:IMPRESSIONmethod:IMGurl:"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:29846056590dsa{behalf:"TEST_ADVERTISER"paid:"TEST_PAYING_ENTITY"adrender:false}}}bid{id:"4vwb23qm6iqU6w6G978"impid:"1"price:0.153584adid:"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:1required:truetitle{text:"Luxury Mars Cruises"}}assets{id:2required:truedata{value:"Visit the planet in a luxury spaceship."}}assets{id:3required:falsedata{value:"Book today"}}assets{id:4required:truedata{value:"Galactic Luxury Cruises"}}assets{id:5required:trueimg{url:"https://native.test.com/image?id=123456"w:1200h:627}}link{url:"https://www.google.com"}eventtrackers{event:IMPRESSIONmethod:IMGurl:"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"
OpenRTB JSON
Beispiel anzeigen
{"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"}
ad{adslot{id:1max_cpm_micros:158000billing_id:41106584355deal_id:1}click_through_url:"google.com"attribute:70buyer_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:1200height:222}app_icon{url:"https://native.test.com/icon?id=123456"width:512height:512}star_rating:4.300000190734863click_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_ADSnonce:"9216faff-74a9-4b35-badc-66878c35f67c"timestamp:1728975919221signature:"b0USXkmg02Q3v6p301kYOHG36CCOWWdEo52RHRttB9t8PTNi79qL17E4D6h7UeUSuq479oTK13G2Ev34MJlU86C5vY1SMVw2"}fidelities{fidelity_type:VIEW_THROUGH_ADSnonce:"9216faff-74a9-4b35-badc-66878c35f67c"timestamp:1728975919221signature:"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
[null,null,["Zuletzt aktualisiert: 2025-02-12 (UTC)."],[[["Bid responses must be serialized `BidResponse` protocol buffers with the `Content-Type` header set to `application/octet-stream` for Protobuf, and a parsable `BidResponse` is required for each `BidRequest`, while an empty HTTP 204 response signals no bid."],["Each creative needs a unique `crid` (creative ID) limited to 64 bytes, and this ID must be unique across creatives if there are differences in size, declared URL, attributes, vendor types, appearance, behavior, or rendering method."],["Ad characteristics should be declared using `BidResponse.seatbid.bid.apis`, `BidResponse.seatbid.bid.attr`, or `BidResponse.seatbid.bid.ext.attribute`, with specific values indicating VPAID, MRAID, SIZELESS, or PLAYABLE attributes, respectively, and additional attributes from `buyer-declarable-creative-attributes.txt`."],["Responses should remain under 8KB, utilize persistent HTTPS connections with at least a 10-second timeout, and employ `BidResponse.seatbid.bid.burl` or `BidResponse.seatbid.bid.ext.impression_tracking_url` for tracking impressions."],["The `BidResponse` must accurately set creative attributes (`BidResponse.seatbid.bid.attr`), categories (`BidResponse.seatbid.bid.cat`), and advertiser domain (`BidResponse.seatbid.bid.adomain`) or native ad link (`BidResponse.seatbid.bid.adm_native.link.url`), as responses lacking these are discarded."]]],["Applications must respond to each `BidRequest` with a parsable `BidResponse`, using Protobuf or an HTTP 204 for no bids. Creatives are identified by a unique `crid`. Ad attributes, such as VPAID and MRAID, are declared in specific fields. Utilize impression tracking URLs and avoid deprecated fields. Open Bidding bid responses are similar to Authorized Buyers. Ad sizes in the response must match the request. Macros are used in URLs. Publisher requirements are specified in the `BidRequest`. The response must accurately reflect these requirements and provide the accurate ad attributes and links.\n"]]