Beruflich Dokumente
Kultur Dokumente
Copyright in this document is the property of OpenX Ltd. and its contents shall be held in strict
confidence by the recipient hereof and shall be used solely for the purposes of doing business
with OpenX Ltd. Neither this document nor its content shall be disclosed to any other person or
used for any other purpose without prior written permission of OpenX Ltd.
Overview! 5
How real-time bidding works! 5
Configuring accounts! 6
RTB account attributes! 7
Setting up campaigns ! 8
RTB campaign attributes! 8
Setting up placements ! 9
RTB placement attributes! 9
Setting up creatives! 10
RTB creative attributes! 10
AdId structure! 16
Device structure! 17
Geo structure! 19
Deal structure! 20
DealPricingType! 21
DealExclusivity! 21
ThirdPartyKeyValue! 21
BidResponse! 22
About micros! 22
Bid structure! 24
Macros! 24
AuctionResults! 25
AuctionResult structure! 26
AuctionStatus structure! 27
User mapping! 28
Overview
OpenX provides a real-time bidding interface, which allows buyers to make real-time buying
decisions when sourcing mobile or display inventory from OpenX Market.
1. OpenX Market receives an ad request, and selects a set of real-time bidders to solicit bids
from.
2. OpenX Market requests bids from the selected set of real-time bidders.
3. Each bidder receives the request, evaluates the bidding opportunity, and responds to the
request (even if the bidder does not want to place a bid).
4. OpenX Market executes an auction.
5. OpenX Market delivers the ad of the winning bidder.
6. OpenX Market supplies auction result notices to participating bidders.
This version includes a new field in the Device structure, idforad_enabled, which indicates if
a user has tracking turned on or off on their device.
The following terms and definitions are used throughout this document:
Term Definition
Bid request The OpenX Market request (BidRequest), sent to a bidder, which
solicits a bid for an impression (BidResponse).
Note. In addition, OpenX provides an SSRTB Tester tool, which you can use to verify that your
RTB implementation is set up correctly.
Configuring accounts
If you are a buyer in OpenX Market, and you want to participate in real-time bidding, you need
to configure your account to support it. To do this, you need to set several RTB preferences for
your account through the OpenX Market Advertiser Console. If you do not set these
preferences, OpenX Market will not consider your account for bid requests.
Server-side Real-time Bid URL. The URL to which you want OpenX Market to send bid
requests. To reduce latency, you can specify multiple URLs for different global regions, based
on the location of the original ad request. This includes a U.S. West, U.S. East, Europe, and
Japan. OpenX Market will send the request to the URL closest to the location of the original
ad request.
Server-side Real-time Bid Result Notification URL. The URL to which you want OpenX
Market to send bid result notifications (e.g., win/loss notifications). You can specify region-
specific URLs similar to the Bid URL attribute.
RTB Data URL Template. The URL template you can use for mapping user data that OpenX
stores for you. See User mapping for more information.
Cookie-mapping URL Template. The URL you can use for mapping user data that you store.
See User mapping for more information.
In addition, you can set the following preferences, which may affect real-time bidding:
URL Blocklist. The list of publisher URLs to globally block on an account, which affects all
campaigns belonging to the bidder. These URLs are always blocked from consideration when
any of your placements bid on ad inventory, regardless of what campaign they belong to.
Category Blocklist. The list of publisher categories to globally block on an account, which
affects all campaigns belonging to the bidder. These categories are always removed from
consideration when any of your placements bid on ad inventory, regardless of what campaign
they belong to.
For more information about these settings, refer to the OpenX Market Advertiser Console User
Guide.
Setting up campaigns
Prior to receiving real-time bid requests, a real-time bidder needs to set-up at least one RTB
campaign in the OpenX Market Advertiser Console. The RTB campaign must also contain at
least one placement and creative. These campaigns, placements, and creatives are similar to
their traditional counterparts; however a URL for bid requests is set, rather than a bid value or
creative, and there are no budget smoothing options available (just spend caps).
In addition, you can specify the following setting, which may affect real-time bidding:
URL Blocklist. A list of URLs to block from a campaign,which affects all placements within the
campaign. These URLs are always blocked from consideration when a placement within the
campaign bids on ad inventory.
For more information about these settings, refer to the OpenX Market Advertiser Console User
Guide.
Setting up placements
Within an RTB campaign, you must set up at least one RTB placement in the OpenX Market
Advertiser Console, prior to receiving real-time bid requests.
In addition, you can set the following preferences, which may affect real-time bidding:
For more information about these settings, refer to the OpenX Market Advertiser Console User
Guide.
Setting up creatives
You must set up at least one RTB creative in the OpenX Market Advertiser Console, and assign
it to an RTB placement, prior to receiving real-time bid requests.
For more information about these settings, refer to the OpenX Market Advertiser Console User
Guide.
! http://bid.openx.net/ssrtb_tester/
2. In the Endpoint box, type in the URL where you want OpenX Market to send bid requests
(Server-side Real-time Bid URL). In this case, OpenX will send a test BidRequest message
to this URL.
3. The remaining fields in the form represent required and optional fields in the BidRequest
message. Make sure there are valid values for the required fields, and any others that you
want OpenX to include in the test BidRequest.
4. Click Go.
OpenX sends a test BidRequest message with the is_test field set. In turn, you can return a
BidResponse message to make sure that your RTB implementation is set up correctly.
The following steps are followed for each real-time bid request from OpenX Market:
BidRequest
When appropriate, OpenX Market will send a BidRequest to the URL specified for the Server-
side Real-time Bid URL setting. If a single bidder has multiple matching ads, OpenX Market
includes all of them in the BidRequest.
The following table describes the required and optional fields in each BidRequest message that
OpenX Market sends to bidders.
api_version int32 Indicates the version of the API that OpenX Yes
Market is using to communicate with the
bidder.
matching_ad_ids AdId The list of matching ads for which OpenX Yes
Market is soliciting bids from the bidder.
ad_height int32 The height of the ad unit where the ad of the Yes
winning bidder will display. If ad_height is
set in the AdId object, then it will override this
value.
For example: 250.
ad_width int32 The width of the ad unit where the ad of the Yes
winning bidder will display. If ad_width is set
in the AdId object, then it will override this
value.
For example: 300.
AdId structure
Device structure
dnt int32 Indicates if the user has set the Do Not Track No
(DNT) setting for their devices browser.
0 indicates that DNT is set to false.
1 indicates that their DNT is set to true (that
is, the user does not want to be tracked).
carrier string The mobile carrier for the users device, using No
the Mobile Country Code and the Mobile
Network Code; that is, MCC-MNC.
For example: 310-410.
language string The list of two letter codes for the users No
preferred browsing languages on their device.
For example: en
For example: 1, 2
androidid_md5 string The MD5 hash of the Android ID for the end- No
user's mobile device.
androidid_sha1 string The SHA-1 hash of the Android ID for the end- No
user's mobile device.
Geo structure
Deal structure
deal_cpm_micros int64 The CPM price for the line item associated No
with the deal, expressed in micros. For
example, a value of 1,250,000 micros equals
$1.25
DealPricingType
The DealPricingType enumeration indicates if the line item for the prearranged deal uses a fixed
price or a floor price (auction). Possible values are:
fixed = 1
floor = 2
DealExclusivity
The DealExclusivity enumeration indicates if the line item for the prearranged deal allows the
buyer to deliver demand even if it passes on the deal. Possible values are:
other_bids_accepted = 0
deal_bids_only = 1
ThirdPartyKeyValue
BidResponse
After processing a BidRequest from OpenX Market, each bidder returns a BidResponse
message. In each BidResponse for a given auction, you can submit multiple bids.
Note. Bidders must respond to bid requests even if they do not want to bid on the opportunity,
by returning either:
An empty list of bids,
An HTTP code of 204
An empty protobuf
A list of bids with a cpm_micros_bid of 0
Bidders have 125 milliseconds to successfully submit a bid response to OpenX Market. A
successful submission means that OpenX Market has received and registered the response.
So, if you are sending your response at 124 milliseconds, it is unlikely that it will be received and
registered within the allocated timeframe. Excessive timeouts will reduce the number of bid
requests sent to the bidder from OpenX Market
Note. A bidders response should be kept less than or equal to 1k in size, though responses
greater than 1k will be accepted.
About micros
Multiple fields in the BidResponse, Bid, and AuctionResult structures use micros to express their
values. The conversion for a micro is: $1.00 USD = 1,000,000 micro. For example:
$0.01 = 10,000 micros
$0.10 = 100,000 micros
$1.00 = 1,000,000 micros
$3.27 = 3,270,000 micros
The following table describes the required and optional fields in each BidResponse that you
send to OpenX Market.
Note. Some fields in the BidResponse have been deprecated, and are now part of the Bid
structure for each BidResponse.
api_version int32 Indicates the version of the API that you are Yes
using to respond to OpenX Market.
Note. This value must match the
api_version in the BidRequest.
auction_id string The unique ID for the auction, which OpenX Yes
Market generates and uses to identify the
BidRequest that this BidResponse is for. For
example: 888b4a7a-
d259-11e0-9912-000c29b0c11a.
Note. This value should match the
auction_id value in the BidRequest.
bids Bid The list of bids to return for the BidRequest. Yes
You can submit multiple bids for a single
auction.
Note. To submit a no bid response, include
an empty list of bids, a list of bids with a
cpm_bid_micros of 0, an HTTP 204, or an
empty protobuf.
next_highest_bid_mic int64 The next highest bid after the bids in this No
ros response, expressed in micros.
For example, a value of 1,250,000 micros
equals $1.25.
Bid structure
The following table describes the required and optional fields for each Bid structure that you
include in a BidResponse, which you can use to submit multiple bids for a matching ad.
cpm_bid_micros int64 The CPM bid price, or bid per 1000 Yes, when
impressions, expressed in micros. bidding
For example, a value of 1,250,000 micros
equals $1.25.
ad_code string The HTML code to serve if the bid wins the Yes, when
auction. You can include various macros in bidding
this field for things like click tracking.
click_through_urls string The list of destination URLs for the ad, Yes, when
representing the final landing page. bidding
For example: nike.com or http://
events.nike.com/showEvent?id=1.
Macros
OpenX Market supports the following macros (which are expressed in fields as
{macro_name}), which you can include in the ad_code field for each Bid in your
BidResponse, and are substituted dynamically before the ad is sent to the end-user:
The encrypted price has a fixed length of 28 bytes. It is comprised of a 16-byte initialization
vector, 8 bytes of ciphertext, and a 4-byte integrity signature. The encrypted price is web-safe
base-64-encoded, according to RFC 3548, with padding characters omitted. Thus, the 28-byte
encrypted price is encoded as a 38 character web-safe base-64 string. The price is encrypted
as:
so decryption calculates:
HMAC-SHA1(encryption_key, initialization_vector)
and xor's with the encrypted price to reverse the encryption. The integrity stage takes 4 bytes of
<HMAC-SHA1(integrity_key, price||initialization_vector)>
where || is concatenation.
Use this code snippet at the following link for price decryption:
https://github.com/openx/SSRTBPriceCrypter
AuctionResults
After OpenX Market evaluates bid responses, holds the auction, and serves the winning ad, it
can return an AuctionResults message to the appropriate notification endpoint (Server-side
Real-time Bid Result Notification URL) for each bidder that it solicited for a given auction. You
can use the same endpoint specified for the BidRequest, or set up a separate endpoint for the
AuctionResults. OpenX Market returns a notification for each bid included in a given
BidResponse (in the case of multiple bids), and no notification is sent for a BidResponse with no
actual bid.
The following table describes the required and optional fields in each AuctionResults message
that OpenX Market sends to a bidder.
api_version int32 Indicates the version of the API that OpenX Yes
Market is using to communicate with the
bidder.
auction_id string The unique ID for the auction, which OpenX Yes
Market generates and uses to identify the
BidRequest that this notification is for.
For example: 888b4a7a-
d259-11e0-9912-000c29b0c11a.
results AuctionResult The list of information about the results of the Yes
auction.
AuctionResult structure
The following table describes the required and optional fields in the AuctionResult structure for
each AuctionResults message that OpenX Market sends to the bidder. For a given auction,
OpenX Market includes an AuctionResult for each Bid in a bidders BidResponse. That is, if a
bidder submitted five bids for a given auction, then OpenX Market would return five notifications
- one AuctionResult for each Bid.
matching_ad_id AdId This structure will be the same as the one in Yes
the appropriate response message.
status AuctionStatus Indicates if the bidders Bid won or lost the Yes
auction, or if an error occurred.
loss_reason string If the result of the bid is a loss, then this field No
provides a reason for the loss, which can be
one of the following:
price
The Bid price was insufficient to win the
auction.
disqualification
The Bid was filtered out; for example, if the
advertiser was blocked.
winning_bid_micros int64 If the result of the bid is a loss, then this field No
indicates the bid price that actually won the
auction. This value is expressed in micros.
clearing_price_micros int64 If the bid won the auction, then this field No
indicates the actual price that the bidder paid
for the impression. This value is expressed in
micros.
AuctionStatus structure
The following table describes the AuctionStatus structure, which OpenX Market includes for
each AuctionResult.
status enum Indicates if the bidders Bid won or lost the Yes
auction, or if an error occurred. This can be
one of the following:
1 (win)
The bidder won the auction.
2 (loss)
The bidder lost the auction.
3 (error)
An error occurred in processing the bid.
User mapping
OpenX provides two mechanisms to synchronize your user data for real-time bidding. In one
method, OpenX stores information you provide about each user, and in the other method,
OpenX provides a user ID for you to store. Invoking user synchronization can be done by
dropping the appropriate pixel yourself, or by requesting that OpenX do this, or both to achieve
maximum coverage.
If you plan to drop pixels yourself, you will need to create a simple image pixel and invoke one
of the following URLs:
If OpenX does the drops for you, simply provide the appropriate URL, which will then be
wrapped in an image pixel maintained by OpenX.
Templates for URLs, along with your partner ID, are available in the OpenX Market Advertiser
Console at:
! https://ac.openx.com/account/real-time-bid-settings/base-url/
In this method, you send user data to OpenX, which stores it for you, and sends it as part of the
RTB bid request, in the rtb_data field.
If OpenX is managing the pixel drop, you must provide a URL that first calls your own servers,
and then redirects to the appropriate OpenX URL with the relevant RTB data included.
Note. You can target your placements only to bid on requests that include RTB data.
In this method, OpenX makes its user ID for a given user available to you for storing and
mapping against your own internal information. The OpenX user ID, when available, is included
in every RTB request.
The OpenX user ID is appended to the destination URL. Therefore, as a best practice, your
destination URL (the user synchronization endpoint hosted on your servers) should end with an
argument name and the equivalent of an equal sign (=). For example, a destination URL of:
http://myservice.com/usersync/openx?id=
http://myservice.com/usersync/openx?id=2370e610-d4dc-11e0-9572-0800200c9a66