Обработать запрос
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Взаимодействие в режиме реального времени при размещении ставок начинается, когда Google отправляет запрос на размещение ставки в ваше приложение. В этом руководстве объясняется, как запрограммировать ваше приложение для обработки запроса на размещение ставки.
Анализ запроса
Google отправляет запрос на размещение ставки, сериализованный в форматах OpenRTB JSON или Protobuf, в качестве полезной нагрузки HTTP POST-запроса. Полученный формат зависит от конфигурации вашей конечной точки . См. пример запроса на размещение ставки .
Для получения сериализованного BidRequest необходимо разобрать этот запрос. Если вы используете формат Protobuf, необходимо загрузить openrtb.proto и openrtb-adx.proto со страницы справочных данных и использовать их для генерации библиотеки, которая может использоваться для разбора сообщения BidRequest . Например, следующий код на C++ анализирует запрос, получив POST-запрос в виде строки:
Получив объект BidRequest вы можете работать с ним как с объектом, извлекая и интерпретируя необходимые поля. Например, в C++ итерация по сделкам в объекте OpenRTB `BidRequest` может выглядеть следующим образом:
Запрос на размещение ставки поступает, когда рекламный инвентарь издателя нацелен на одну или несколько ваших настроек предварительного таргетинга . BidRequest.imp.ext.billing_id будет заполнен идентификаторами выставления счетов всех подходящих покупателей и соответствующими настройками предварительного таргетинга. Кроме того, для инвентаря, доступного по сделкам , вы можете найти идентификаторы выставления счетов, связанные с соответствующими покупателями, используя BidRequest.imp.pmp.deal.ext.billing_id . При размещении ставки можно указать только идентификаторы выставления счетов покупателей, включенных в запрос на размещение ставки.
Если в запросе на участие в тендере указано несколько идентификаторов для выставления счетов, необходимо указать идентификатор покупателя, которому вы собираетесь присвоить свою ставку, в поле BidResponse.seatbid.bid.ext.billing_id .
imp {
ext {
// The billing IDs of all of your matching pretargeting configs and eligible child seats are
// stored in a flat list here.
billing_id: 123
billing_id: 456
billing_id: 789
}
pmp {
// All eligible deals are stored in a single flat list.
deal {
id: 1000
ext {
// The specific billing IDs eligible to bid on this deal are indicated here.
billing_id: 789
}
...
}
deal {
id: 2000
ext {
billing_id: 123
billing_id: 456
}
...
}
}
...
}
...
Определите заблокированные категории
При размещении ставки, включенный в нее рекламный материал не должен содержать категорий, заблокированных издателем. В противном случае ставка будет исключена из аукциона.
Заблокированные категории для показа можно найти, просмотрев поле BidRequest.bcat , которое заполняется категориями из таксономии, настроенной для вашей учетной записи.
В следующем примере показаны заблокированные категории на основе настроенной таксономии категорий объявлений:
Классификация контента IAB 1.0
// Bid request{// Indicates the blocked categories using IAB Content 1.0 Taxonomy."bcat":["IAB9-9",// Cigars"IAB8-18"// Wine]"imp":{...}}
Таксономия категорий рекламы Google
// Bid request{// Indicates the blocked categories using Google Ad Category Taxonomy."bcat":["10138",// Cigar and tobacco collecting"10080",// Tobacco"11649",// Wine"10674",// Wine collecting"13008"// Wine clubs]"imp":{...}}
Словарные файлы
В запросе на участие в тендере используются идентификаторы, определенные в файлах словаря, которые доступны на странице справочных данных .
Макросы URL-адресов участников торгов
При желании, некоторую информацию из BidRequest можно вставить в URL-адреса конечных точек размещения ставок с помощью макросов. Если вы настроите URL-адрес конечной точки с одним или несколькими макросами, они будут развернуты, если эта информация присутствует в запросе на размещение ставки. Это может быть полезно, например, если вы хотите выполнить балансировку нагрузки на основе информации из BidRequest . Обратитесь к своему менеджеру по работе с клиентами, чтобы запросить поддержку новых макросов.
Макро
Описание
%%GOOGLE_USER_ID%%
Заменяется идентификатором пользователя Google, найденным в BidRequest.user.id . Например, URL-адрес участника торгов http://google.bidder.com/path?gid=%%GOOGLE_USER_ID%% будет заменен на что-то вроде http://google.bidder.com/path?gid=dGhpyBhbiBleGFtGxl во время запроса.
Если идентификатор пользователя Google неизвестен, вместо него подставляется пустая строка, в результате получается нечто подобное.
http://google.bidder.com/path?gid=
%%HAS_MOBILE%%
Заменяется на 1 , чтобы указать, что запрос на ставку поступил с мобильного устройства, или 0 в противном случае. Это основано на значении BidRequest.device.devicetype , где мобильные устройства обозначаются как HIGHEND_PHONE ( 4 ) или Tablet ( 5 ).
%%HAS_VIDEO%%
Заменяется на 1 чтобы указать, что запрос на ставку содержит видеоконтент, или 0 в противном случае. Это зависит от того, заполнено ли поле BidRequest.imp.video в запросе на ставку.
%%HOSTED_MATCH_DATA%%
Заменено значением, основанным на BidRequest.user.buyeruid .
%%MOBILE_IS_APP%%
Заменяется на 1 чтобы указать, что запрос на участие в торгах предназначен для размещения рекламы в мобильном приложении, или 0 в противном случае. Это зависит от того, заполнено ли поле BidRequest.app .
Найдите идентификатор мобильного приложения в URL-адресе транзакции.
В сообщениях о транзакциях мобильных приложений будут отображаться URL-адреса следующего вида:
mbappgewtimrzgyytanjyg4888888.com
Используйте декодер в формате Base32 для расшифровки выделенной жирным шрифтом части строки ( gewtimrzgyytanjyg4888888 ).
Вы можете использовать онлайн-декодер , но вам придётся писать буквы заглавными и заменять цифры 8 в конце на знак = .
Итак, расшифровав это значение:
GEWTIMRZGYYTANJYG4======
в результате:
1-429610587
Строка 429610587 — это идентификатор приложения iFunny для iOS.
Вот ещё один пример. Сообщённый URL-адрес:
mbappgewtgmjug4ytmmrtgm888888.com
Расшифровка этого значения:
GEWTGMJUG4YTMMRTGM======
в результате:
1-314716233
Результат 314716233 — это идентификатор приложения TextNow для iOS.
Найдите название мобильного приложения по URL-адресу транзакции.
Вот пример получения названия приложения. Полученный URL-адрес выглядит следующим образом:
В результате получилось приложение slither.io для Android.
Открытые поля для торгов
Запросы на участие в торгах, отправляемые участникам биржевых и сетевых торгов, участвующим в открытом тендере, аналогичны запросам авторизованных покупателей, участвующих в стандартном тендере в режиме реального времени. Участники открытого тендера получат небольшое количество дополнительных полей, а некоторые существующие поля могут иметь альтернативное назначение. К ним относятся следующие:
OpenRTB
Подробности
BidRequest.imp.ext.dfp_ad_unit_code
Содержит сетевой код Ad Manager издателя, за которым следует иерархия рекламных блоков, разделенных косыми чертами.
Например, это будет выглядеть примерно так: /1234/cruises/mars .
BidRequest.user.data.segment
Повторяющиеся пары ключ-значение, отправляемые издателем участнику торгов на бирже.
Вы можете определить, что значения представляют собой пары ключ-значение, отправленные издателем, если для BidRequest.user.data.name установлено значение “Publisher Passed” .
Объявить разрешенных поставщиков
Технологические компании, предоставляющие такие услуги, как исследования рынка, ремаркетинг и показ рекламы, могут участвовать во взаимодействии между покупателями и продавцами. К участию в процессе взаимодействия с авторизованными покупателями допускаются только те компании, которые прошли проверку Google.
Чтобы понять, BidRequest и как создать BidResponse , необходимо учитывать два различных способа указания поставщиков технологий:
Другие поставщики могут участвовать только в том случае, если они указаны в BidRequest :
В BidRequest поле BidRequest.imp.ext.allowed_vendor_type указывает, каких поставщиков разрешает продавец. Поставщики, которые будут указаны в поле allowed_vendor_type , перечислены в словаре vendors.txt .
Пример запроса на участие в тендере
Приведенные ниже примеры представляют собой удобочитаемые образцы запросов Protobuf и JSON.
Чтобы преобразовать запрос на ставку в двоичный формат, подобный тому, который вы получаете из полезной нагрузки POST-запроса в реальном запросе, можно сделать следующее (на C++). Однако следует отметить, что это неприменимо к JSON OpenRTB.
Обратная связь в режиме реального времени доступна авторизованным покупателям, а также биржам и сетям, использующим открытые торги.
Обратная связь в режиме реального времени заполняет поле BidRequest.ext.bid_feedback на основе результатов одной или нескольких ставок, сделанных вами ранее, и может использоваться для получения таких сведений, как победа ставки на аукционе или минимальная ставка, необходимая для победы на аукционе. Для включения обратной связи в режиме реального времени обратитесь к своему менеджеру по работе с клиентами.
В дополнение к полям по умолчанию, отправляемым в ответ на заявку, вы также можете отправлять пользовательские данные в ответе на заявку, используя поле BidResponse.seatbid.bid.ext.event_notification_token . Полю event_notification_token относятся произвольные данные, известные только участнику торгов, которые могут помочь в отладке, например: новый идентификатор таргетинга или идентификатор заявки, представляющий новую тактику, или метаданные, связанные с креативом, известные только участнику торгов. Подробности см. в файле OpenRTB Extensions Protocol Buffer .
Когда уполномоченные покупатели отправляют запрос на участие в торгах участнику торгов, участник торгов отвечает сообщением BidResponse . Если у участника торгов включена обратная связь в режиме реального времени, то в последующем запросе на участие в торгах уполномоченные покупатели отправляют отзыв об ответе в сообщении BidFeedback :
messageBidFeedback{//TheuniqueidfromBidRequest.id.optionalstringrequest_id=1;//Thestatuscodeforthead.Seecreative-status-codes.txtinthe//technicaldocumentationforalistofids.optionalint32creative_status_code=2;//Deprecated.ThisfieldisnotpopulatedandwillberemovedafterMarch,//2025.Ifthebidwontheauction,thisisthepricepaidinyouraccount//currency.Ifthebidparticipatedintheauctionbutwasout-bid,this//istheCPMthatshouldhavebeenexceededinordertowin.Thisisnot//setifthebidwasfilteredpriortotheauction,ifthepublisheror//winningbidderhasoptedoutofpricefeedbackorifyouraccounthas//optedoutofsharingwinningpriceswithotherbidders.Forfirst-price//auctions,minimum_bid_to_winispopulatedinsteadofthisfield.optionaldoubleprice=3[deprecated=true];//Theminimumbidvaluenecessarytohavewontheauction,inyouraccount//currency.Ifyourbidwontheauction,thisisthesecondhighestbid//thatwasnotfiltered(includingthefloorprice).Ifyourbiddidn't win//theauction,thisisthewinningcandidate's bid. This field will only be//populatedifyourbidparticipatedinafirst-priceauction,andwillnot//bepopulatedifyourbidwasfilteredpriortotheauction.optionaldoubleminimum_bid_to_win=6;//Deprecated.ThisfieldwillberemovedinFebruary2026.//Theminimumbidvaluenecessarytohavewontheserver-sidecomponentof//theoverallauctiongiventhattherewasalsoaninterestgroupbidding//componenttotheoverallauctionwhichranusingtheProtectedAudience//API.ThevalueisexpressedinCPMofthebuyeraccountcurrency.The//minimumbidtowinfortheoverallauction,includingbidsfromthe//server-sideandtheon-deviceinterestgroupcomponents,ispopulatedin//theminimum_bid_to_winfieldofthesameBidFeedbackobject.optionaldoublesscminbidtowin=14[deprecated=true];//Billableeventratemultiplierthatwasappliedtothisbidduring//ranking.Theadjustmentreflectsthelikelihoodthatyourbidwould//generateabillableevent(namely,theadrenderssuccessfully)ifitwon//theauction,relativetotheprobabilitythatotherbidsgeneratea//billableeventiftheywontheauction.Thisadjustmentcanbelargeror//smallerthan1.Thisaffectsthefinalrankingintheauctiononly;in//particular,thismultiplierdoesnotaffectthepaymentorwhetherthe//bidclearsanyfloorprice.optionalfloatbillable_event_rate_bid_adjustment=13[default=1];//WhenapublisherusesanRTBauctionandwaterfall-basedSDKmediationon//thesamequery,thewinnerofthereal-timeauctionmustalsocompetein//amediationwaterfall(whichisorderedbyprice)towintheimpression.//Ifthebidparticipatedintheauctionandtherewasnowaterfall,the//valueofthisfieldis0.Ifthebidparticipatedintheauctionand//therewasawaterfall,thevalueofthisfieldisapricerepresentinga//samplebidfromtheeligiblemediationnetworksthatwerehigherthanthe//auctionwinner,weightedbyexpectedfillrate.Thisfieldcanbeused//inconjunctionwithminimum_bid_to_wintotrainbiddingmodels.TheCPM//isinyouraccountcurrency.optionaldoublesampled_mediation_cpm_ahead_of_auction_winner=8;messageEventNotificationToken{//Thecontentsofthetoken.optionalstringpayload=1;}//Thetokenincludedinthecorrespondingbid.optionalEventNotificationTokenevent_notification_token=4;//ThecreativeIDincludedinthecorrespondingbid.optionalstringbuyer_creative_id=5;//Possibletypesofbidresponsefeedbackobjects.enumFeedbackType{FEEDBACK_TYPE_UNSPECIFIED=0;//Feedbackforabidthatwassubmittedonabidresponse.BID_FEEDBACK=1;//Feedbackforaninterestgroupbuyersubmittedonabidresponseto//particpateinaninterestgroupbiddingcomponentoftheauctionrun//usingtheProtectedAudienceAPI.INTEREST_GROUP_BUYER_FEEDBACK=2;}//Deprecated.ThisfieldwillberemovedinFebruary2026.//ThetypeoftheBidFeedbackmessage.Googlewillsendseparate//BidFeedbackobjectsfor://a)Eachbidsubmittedonabidresponse//b)Eachbuyersubmittedonabidresponsetoparticpateinaninterest//groupbiddingcomponentoftheauctionrunusingtheProtectedAudience//API.optionalFeedbackTypefeedbacktype=15[deprecated=true];//Deprecated.ThisfieldwillberemovedinFebruary2026.//Originofaninterestgroupbuyerthatwasincludedinthebidresponse.//Thisfieldispopulatedonlyforfeedbackwhereabidderoptedinan//interestgroupbuyertoparticipateintheinterestgroupbidding//componentoftheoverallauctionrunusingtheProtectedAudienceAPI.//Tolearnmoreaboutorigins,seehttps://www.rfc-editor.org/rfc/rfc6454.//TolearnmoreaboutinterestgroupbiddingandtheProtectedAudience//API,see//https://developers.google.com/authorized-buyers/rtb/fledge-origin-trial.optionalstringbuyerorigin=16[deprecated=true];//Deprecated.ThisfieldwillberemovedinFebruary2026.//Thestatuscodeforthesubmittedinterestgroupbuyer.Thisfieldis//onlypopulatedinthefeedbackforaninterestgroupbuyerthatabidder//requestedtoenterintotheinterestgroupauctionthroughthebid//response.Individualcreativestatuscodesofbidssubmittedbythebuyer//intheon-deviceinterestgroupauctionarenotavailable.See//https://storage.googleapis.com/adx-rtb-dictionaries/interest-group-buyer-status-codes.txt//foralistofinterestgroupbuyerstatuscodes.optionalint32igbuyerstatus=17[deprecated=true];}
В этом сообщении первым полем, которое следует проверить, является bid_feedback.creative_status_code ; значение кода можно найти в файле creative-status-codes.txt . Обратите внимание, что если вы выиграете аукцион, вы можете отказаться от получения обратной связи по цене. Для получения дополнительной информации см. раздел «Как отказаться» .
Обратная связь в режиме реального времени включает идентификатор запроса на участие в тендере и один из следующих параметров:
Результаты аукциона
Обратная связь в режиме реального времени
Покупатель не подал заявку.
Ничего.
Покупатель подал заявку, которая была отфильтрована до начала аукциона.
Разработайте модель торгов для аукционов первой цены.
После размещения ставки на аукционе первой цены вы будете получать обратную связь в режиме реального времени, включая поля minimum_bid_to_win и sampled_mediation_cpm_ahead_of_auction_winner если ставка не была исключена из аукциона. Эти сигналы можно использовать для корректировки вашей логики торгов, чтобы определить, насколько выше или ниже могла быть ваша ставка для получения показа.
minimum_bid_to_win : Минимальная ставка, которую можно было сделать, чтобы выиграть аукцион в режиме реального времени. Если вы выиграли аукцион, это будет самая низкая ставка, которую вы могли сделать, чтобы выиграть. Если вы проиграли аукцион, это будет выигрышная ставка.
sampled_mediation_cpm_ahead_of_auction_winner : Если в цепочке медиации есть другие сети, значение этого поля представляет собой цену, отражающую примерную ставку одной из подходящих сетей медиации, которая была выше, чем у победителя аукциона, с учетом ожидаемого коэффициента заполнения. Это значение будет установлено на 0, если ни одна из сетей в цепочке медиации, как ожидается, не будет заполнена, или если издатель не использует медиацию SDK.
Как это работает
Для описания расчетов, используемых для определения возможных значений параметров minimum_bid_to_win и sampled_mediation_cpm_ahead_of_auction_winner , нам сначала необходимо определить следующее:
Ниже представлен список CPM в цепочке медиации в порядке убывания:
\[C_1, C_2, …, C_n\]
Ниже представлены соответствующие коэффициенты заполнения для CPM в цепочке медиации:
\[f_1, f_2, …, f_n\]
Ниже представлена функция, используемая для определения ожидаемого значения CPM и его вероятности на основе элемента цепочки медиации. \(i\)исходя из заданного коэффициента заполнения:
\(X_i = \{C_i\) с вероятностью \(f_i\); \(0\) с вероятностью \(1 - f_i\}\)
Итоговая цепочка медиации, приведшая к победе, будет выглядеть следующим образом:
\[\{C_1, C_2, …, C_K, W\}\]
где \(W\) является выигрышной заявкой, и \(C_K > W >= C_{K+1}\)
Резервная цена, или нижний предел, обозначается как \(F\).
Предложение, занявшее второе место, обозначается как \(R\).
Расчеты для победителя аукциона
Поле
Расчет
minimum_bid_to_win
\(max\{F, R, X_{K+1}, …, X_n\}\)
sampled_mediation_cpm_ahead_ of_auction_winner
\(\{C_i\) с вероятностью \(\prod_{j=1}^{i-1}(1-f_j) \cdot f_i \div \prod_{j=1}^{K}(1-f_j)\}\)
Для \(1 <= i <= K\).
Расчеты для проигравшего на аукционе
Поле
Расчет
minimum_bid_to_win
\(max\{F, W\}\)
sampled_mediation_cpm_ahead_ of_auction_winner
\(max\{X_1, …, X_K\}\)
Пример с простой цепочкой посредничества.
Предположим, издатель использует как торги в реальном времени, так и цепочку посредничества SDK следующим образом:
Цепочка посредничества SDK
Ожидаемый CPM
Коэффициент заполнения
Сеть 1
\(C_1 = $3.00\)
\(f_1 = 5\%\)
Сеть 2
\(C_2 = $2.00\)
\(f_2 = 45\%\)
Сеть 3
\(C_3 = $0.50\)
\(f_3 = 80\%\)
Сеть 4
\(C_4 = $0.10\)
\(f_4 = 85\%\)
Предположим, что результатом аукциона RTB стали следующие события:
Аукцион RTB
CPM
Победитель аукциона (W)
1,00 долл.
Второе место на аукционе (R)
0,05 доллара
Резервная цена / Минимальная цена (F)
0 долларов
Ставка, выигравшая аукцион
Ниже приведён пример того, как рассчитываются значения и вероятности для minimum_bid_to_win и sampled_mediation_cpm_ahead_of_auction_winner для ставки, которая выиграла.
Ниже приведён пример того, как рассчитываются значения и вероятности для minimum_bid_to_win и sampled_mediation_cpm_ahead_of_auction_winner для ставок, которые были проиграны.
minimum_bid_to_win
Вероятность
\(max(F, W) = $1.00\)
\(100\%\)
sampled_mediation_cpm_ ahead_of_auction_winner
Вероятность
\(C_1 = $3.00\)
\(f_1 = 5\%\)
\(C_2 = $2.00\)
\((1-f_1) \cdot f_2 =~ 42.8\%\)
\(0\)
\((1-f_1) \cdot (1-f_2) =~ 52.2\%\)
Сглаживание цен предложений
Сглаживание запросов на ставки описывает обработку одного сложного BidRequest в несколько запросов на ставки, которые отправляются в ваше приложение. При сглаживании запроса на ставки вы можете определить, какие запросы на ставки были частью исходного запроса, поскольку они будут иметь одинаковое значение в поле BidRequest.ext.google_query_id .
Функция сглаживания ставок включена по умолчанию, но вы можете связаться со своим менеджером по работе с клиентами, если хотите ее отключить.
Форматы рекламы
Некоторые рекламные площадки могут принимать несколько форматов. При использовании механизма сглаживания ставок каждый формат отправляется в отдельном запросе на назначение ставки, где такие атрибуты, как соответствующие идентификаторы платежных систем, имеют отношение к формату, указанному в запросе.
Заявки на участие в тендере, содержащие следующие форматы, будут объединены в отдельные заявки:
Баннер
Видео
Аудио
Родной
Пример сглаживания формата рекламы
Ниже приведён пример, демонстрирующий упрощённый JSON-запрос ставки OpenRTB без сглаживания формата объявления в сравнении с аналогичным набором запросов без сглаживания:
Возможность размещения рекламы для конкретного участника торгов может применяться к различным типам сделок, помимо открытого аукциона. При использовании механизма сглаживания ставок для сделок, один запрос на ставку будет отправлен для открытого аукциона, и по одному для каждого типа сделки с фиксированной ценой. На практике ограничения на рекламу могут различаться между аукционами и сделками с фиксированной ценой. Например, для данной возможности размещения видеорекламы, доступной как для открытого аукциона, так и для сделки с фиксированной ценой, участник торгов получит отдельные запросы на ставки для каждого типа, где ограничения, такие как максимальная продолжительность рекламы и возможность пропуска рекламы, могут различаться. В результате, применение механизма сглаживания ставок к возможности размещения рекламы позволяет легче определить ограничения на рекламу для открытого аукциона и сделки с фиксированной ценой.
Возможность пропуска и продолжительность видео
В спецификации OpenRTB отсутствуют отдельные поля для указания максимальной продолжительности видео для пропускаемых и непропускаемых рекламных роликов. В реализации Google используется механизм сглаживания ставок для различения этих категорий с помощью существующих полей BidRequest.video.maxduration и BidRequest.video.skip .
Ниже приведён пример того, как происходит выравнивание видеорекламного инвентаря, когда максимальная продолжительность непропускаемой рекламы составляет 15 , а максимальная продолжительность пропускаемой рекламы — 60 .
Пример
max_ad_duration
skip (истина ИЛИ ложь)
Исходный запрос без сглаживания
15
true
Сглаженный запрос №1: Непропускаемый
15
false
Сглаженный запрос №2: Пропускаемый
60
true
Сглаживание запросов на продолжительность пропускаемых видеороликов будет происходить только при соблюдении следующих условий:
Запрос позволяет записывать видео.
Допускаются как пропускаемые, так и непропускаемые видеоролики, при этом максимальная продолжительность каждого из них различается.
Данная заявка может быть выдвинута на частный или открытый аукцион.
Вы можете отказаться от такого типа сглаживания, связавшись со своим техническим менеджером по работе с клиентами. Если эта функция отключена, и издатель разрешает как пропускаемые, так и непропускаемые видеорекламы с разной максимальной продолжительностью в зависимости от возможности пропуска, skip будет установлен в значение true , а maxduration будет установлен на ту продолжительность, которая короче между ограничениями для пропускаемой и непропускаемой рекламы.
Видеокапсулы
Запросы на размещение рекламы в видеоролике с несколькими рекламными возможностями объединяются таким образом, что каждый запрос на размещение рекламы относится к отдельной рекламной возможности в этом видеоролике. Это позволяет размещать ставки на несколько рекламных возможностей в рамках одного видеоролика.
Открытое измерение
Open Measurement позволяет указывать сторонних поставщиков, предоставляющих независимые услуги по измерению и проверке эффективности рекламы, показываемой в мобильных приложениях.
Вы можете определить, поддерживает ли издатель Open Measurement в запросе на назначение ставок, проверив, исключает ли рекламная возможность атрибут OmsdkType: OMSDK 1.0 который находится в атрибутах креатива, исключаемых издателем . Этот атрибут можно найти в атрибуте battr для баннера или видео , в зависимости от формата.
Для получения дополнительной информации о том, как интерпретировать запросы на участие в тендерах, содержащие сигналы Open Measurement, обратитесь к статье в Справочном центре SDK Open Measurement .
Примеры запросов на участие в тендерах
В следующих разделах представлены примеры запросов на размещение ставок для различных типов объявлений.
[null,null,["Последнее обновление: 2026-01-20 UTC."],[],["Bid requests are HTTP POSTs using OpenRTB Protobuf, replacing the deprecated Google RTB protocol. Parsing involves `ParseFromString()` to access fields in the `BidRequest` object. Billing IDs, found in `BidRequest.imp.ext.billing_id` and `BidRequest.imp.pmp.deal.ext.billing_id`, must be specified in `BidResponse.seatbid.bid.ext.billing_id`. Key information comes from dictionary files. Bid URL macros dynamically insert `BidRequest` data. Complex bid requests can be broken into simpler, flattened requests per format or deal, such as skippable/non-skippable video ads, or video pods. Bidders get real-time feedback. The provided sample requests are used to help the process.\n"]]