OpenRTB Native Ads Specification Draft 13 November
OpenRTB Native Ads Specification Draft 13 November
13
RTB Project
RTBProject
OpenRTBNativeAdsAPISpecification
Version1
November2014
Page 1
RTB Project
Introduction
The Native Ads sub-committee of the IAB OpenRTB Project assembled in May 2014 to develop
a new supplementary API specification for companies interested in an open protocol for the
automated trading of Native Ads enabled media across a broader range of platforms, devices,
and advertising solutions. This document is the culmination of those efforts.
About the IABs Networks & Exchanges Committee:
The IAB Networks & Exchanges Committee is comprised of senior leaders of ad networks and
ad exchanges member companies. The committee is dedicated to furthering the interests of
digital ecosystem in today's complex ad marketplace. Committee objectives are to foster the
highest standards of professionalism and accountability in relationships with publishers,
advertisers, intermediaries, and the agency community, to develop programs that enable
revenue growth, and to create best practices that protect consumers and the industry.
The OpenRTB Project is a working group within the IAB Advertising Technology Council.
License
OpenRTB Specification by OpenRTB is licensed under a Creative Commons Attribution 3.0
License, based on a work at openrtb.info. Permissions beyond the scope of this license may be
available at http://openrtb.info. To view a copy of this license, visit
http://creativecommons.org/licenses/by/3.0/ or write to Creative Commons, 171 Second
Street, Suite 300, San Francisco, CA 94105, USA.
Page 2
RTB Project
Table of Contents
Before You Get Started
1 Introduction
1.1 Mission / Overview
1.2 Credits / Project History
1.3 Resources
1.4 Version History
2 Native Ads Basics
2.1 IAB Core Six
2.2 Data Format
2.3 Versioning
2.4 Customization and Extensions
3 Bid Request Details
3.1 Native Object Hierarchy
4 Native Ad Request Markup Details
4.1 Native Markup Request Object
4.2 AssetObject
4.3 Title Object
4.4 Image Object
4.5 Video Object
4.6 Data Object
5 Native Ad Bid Response Markup
5.1 Native Ad Creative JSON
5.2 Native Object
5.3 Asset Object
5.4 Title Object
5.5 Image Object
5.6 Data Object
5.7 Video Object
5.8 Link Object
Page 3
RTB Project
Page 4
RTB Project
IMPORTANT: Since recommended parameters are not required, they may not be available
from all supply sources. It is suggested that all parties to OpenRTB transaction complete the
integration checklist(please refer to OpenRTB 2.3) to identify which parameters the supply
side supports in the bid request, and which parameters the demand side requires for ad
decisioning.
Page 5
RTB Project
1 Introduction
1.1 Mission / Overview
The mission of the OpenRTB Native project is to spur standardization and greater growth in
the Real-Time Bidding (RTB) marketplace for Native Ads by providing open industry standards
for communication between buyers of advertising and sellers of publisher inventory.
This specification is a sub-protocol of OpenRTB 2.3 to allow for the delivery of native
advertising formats, as their specifics differ from publisher to publisher. In May 2013, a
separate IAB subcommittee has been formed to define the request and response structures of
native ad units.
Establishing a true open standard for this new format will be instrumental to native ads
adoption by app publishers and demand side platforms. With a common framework on the
buy-side, the industry as a whole will benefit from increased demand for native ad formats.
Page 6
RTB Project
1.3 Resources
Resource
Location
OpenRTB Website
http://openrtb.info
http://github.com/openrtb/OpenRTB/NativeAds.ht
ml
http://groups.google.com/group/openrtb-native
In Feed Units
Paid Search Units
Recommendation Widgets
Promoted Listings
IAB Standard with Native Elements
Custom / Cant be contained
Page 7
RTB Project
Page 8
RTB Project
2.3 Versioning
The Native Object in the Bid Request (OpenRTB 2.3) contains a ver field defining the version
of the OpenRTB native extension.
Page 9
RTB Project
Scope
Type
ver
required
integer
Default
1
Description
Version of the Native Markup
version in use.
Page 10
RTB Project
layout
recommended
integer
adunit
recommended
integer
plcmtcnt
optional
integer
seq
optional
integer
assets
required
array of
objects
ext
optional
object
4.2 AssetObject
The main container object for each asset requested or supported by Exchange on behalf of
the rendering client. Any object that is required is to be flagged as such. Only one of the
{title,,img,video,data} objects should be present in each object. All others should be
null/absent. The id is to be unique within the AssetObject array so that the response can be
aligned.
Field
Scope
Type
id
required
int
req
optional
int
Default
Description
Page 11
RTB Project
title
optional1
object
img
optional1
object
video
optional1
object
data
optional1
object
ext
optional
object
: asset object may contain only one of title, img, data or video.
Scope
Type
Default
Description
len
required
integer
ext
optional
object
Scope
Type
type
optional
integer
Default
-
Description
Type ID of the image element
supported by the publisher. The
publisher can display this
Page 12
RTB Project
information in an appropriate
format. See Table Image Asset
Types for commonly used
examples..
w
optional
integer
wmin
recommended
integer
optional
integer
hmin
recommended
integer
mime
optional
array of
strings
All
types
allowed
ext
optional
object
Page 13
RTB Project
Scope
Type
Default
mimes
required
array
of
string
Description
minduration
required
integer
maxduration
required
integer
protocols
required
array of
integers
ext
optional
object
Scope
Type
Default
Description
Page 14
RTB Project
type
required
integer
len
optional
integer
ext
optional
object
Scope
Type
Default
native
required
object
Description
Top level Native object
Field
Scope
Type
ver
optional
integer
assets
required
array of
objects
Default
Description
Page 15
RTB Project
link
required
object
imptracker[]
optional
array of
strings
jstracker
optional
string
ext
optional
object
Scope
Type
id
required
int
req
optional
int
title
optional1
object
img
optional1
object
video
optional1
object
Default
Description
Page 16
RTB Project
optional1
object
link
optional
object
ext2
optional
object
: asset object may contain only one of title, img, data or video.
: Bidders are encouraged not to use asset.ext for exchanging text assets. Use data.ext with
custom type instead.
Scope
Type
Default
Description
text
required
String
ext
optional
object
Scope
Type
Default
url
required
string
Description
URL of the image asset.
Page 17
recommended
integer
recommended
integer
ext
optional
object
RTB Project
Scope
Type
Default
Description
label
optional
string
value
required
string
ext
optional
object
Scope
Type
Default
vasttag
required
string
Description
vast xml.
Page 18
RTB Project
Scope
Type
Default
Description
url
required
string
clktrck[]
optional
array of
strings
fallback
optional
string
(URL)
ext
optional
object
Theadmightlooklike
Page 19
RTB Project
Bid Request
{
"native":{
"assets":[
{
"id":1,
"req":1,
"title":{
"len":30
}
},
{
"id":2,
"req":0,
"data":{
"type":3,
"len":5
}
},
{
"id":3,
"req":1,
"img":{
"type":1,
"w":64,
Page 20
RTB Project
"h":64,
"mime":[
"image/png"
]
}
},
{
"id":4,
"req":0,
"data":{
"type":2,
"len":10
}
}
]
}
}
Bid Response
{
"native":{
"ver":1,
"link":{
"url":"http://i.am.a/URL",
"fallback":"deeplink://deeplink/url/into/app",
"clktrck":[
"http://a.com/a",
"http://b.com/b"
]
},
"imptracker":[
"http://a.com/a",
"http://b.com/b"
],
"assets":[
{
"id":1,
"title":{
"text":"InstallBOA"
},
"link":{
"url":"http://i.am.a/URL"
}
},
{
Page 21
RTB Project
"id":2,
"data":{
"value":5
}
},
{
"id":3,
"img":{
"url":"http://cdn.mobad.com/ad.png",
"w":64,
"h":64
}
},
{
"id":4,
"data":{
"value":"Install"
},
"link":{
"url":"http://i.am.a/URL"
}
}
]
}
}
Page 22
RTB Project
Bid Request
{
"native":{
"layout":4,
"assets":[
{
"id":1,
"req":1,
"title":{
"len":30
}
},
{
"id":2,
"req":0,
"data":{
"type":2,
"len":100
Page 23
RTB Project
}
},
{
"id":3,
"req":1,
"img":{
"type":1,
"w":64,
"h":64,
"mime":[
"image/png"
]
}
}
]
}
}
Bid Response
{
"native":{
"ver":1,
"link":{
"url":"http://i.am.a/URL",
"fallback":"deeplink://deeplink/url/into/app",
"clktrck":[
"http://a.com/a",
"http://b.com/b"
]
},
"imptracker":[
"http://a.com/a",
"http://b.com/b"
],
"assets":[
{
"id":1,
"title":{
"text":"InstallBOA"
}
},
{
"id":2,
"data":{
"value":"ManageFinancesonyourphone"
Page 24
RTB Project
}
},
{
"id":3,
"img":{
"url":"http://cdn.mobad.com/ad.png",
"w":64,
"h":64
}
}
]
}
}
Bid Request
Page 25
RTB Project
"native":{
"layout":6,
"assets":[
{
"id":1,
"req":1,
"title":{
"len":30
}
},
{
"id":2,
"req":0,
"data":{
"type":3,
"len":10
}
},
{
"id":3,
"req":1,
"type":1,
"img":{
"w":64,
"h":64,
"mime":[
"image/png"
]
}
},
{
"id":4,
"video":{
"linearity":1,
"minduration":15,
"maxduration":30,
"protocols":[
"VAST2.0"
]
}
},
{
"id":5,
"req":0,
"data":{
"type":2,
"len":10
}
}
]
Page 26
RTB Project
}
}
Bid Response
{
"native":{
"ver":1,
"link":{
"url":"http://i.am.a/URL",
"fallback":"deeplink://deeplink/url/into/app",
"clktrck":[
"http://a.com/a",
"http://b.com/b"
]
},
"assets":[
{
"id":1,
"title":{
"text":"InstallBOA"
}
},
{
"id":2,
"data":{
"value":5
}
},
{
"id":3,
"img":{
"url":"http://cdn.mobad.com/ad.png",
"w":1200,
"h":627
}
},
{
"id":4,
"video":{
"vasttag":"<VASTversion=2.0></VAST>"
}
},
{
"id":5,
"data":{
Page 27
RTB Project
"value":"Click"
},
"link":{
"url":"http://i.am.a/URL"
}
}
]
}
}
AnGoogletextadwithtitle,description1,description2anddisplayurlcanbe
representedas
Bid Request
{
"native":{
"assets":[
{
"id":1,
"title":{
"len":25
}
},
{
"id":2,
"data":{
"type":2,
"len":35
}
},
{
"id":3,
"data":{
"type":10,
"len":35
}
Page 28
RTB Project
},
{
"id":4,
"data":{
"type":11,
"len":35
}
}
]
}
}
Bid Response
{
"native":{
"ver":1,
"link":{
"url":"http://i.am.a/URL",
"fallback":"deeplink://deeplink/url/into/app",
"clktrck":[
"http://a.com/a",
"http://b.com/b"
]
},
"assets":[
{
"id":1,
"title":{
"text":"PlasmaTelevision"
}
},
{
"id":2,
"data":{
"value":"Hugerangeofequipmentonsale"
}
},
{
"id":3,
"data":{
"value":"Freedelivery.Ordernow."
}
},
{
"id":4,
"data":{
"value":"mybestplasmatvstore.com"
}
Page 29
RTB Project
}
]
}
}
7 Reference Lists/Enumerations
7.1 Native Layout IDs
Below is a list of the core layouts described in the introduction above.
An implementing exchange may not support all asset variants or introduce new ones
unique to that system.
Layout ID
Description
Content Wall
App Wall
News Feed
Chat List
Carousel
Content Stream
500+
Page 30
RTB Project
http://www.iab.net/media/file/IABNativeAdvertisingPlaybook120413.pdf
In feed unit is essentially a layout, it has been removed from the list.
An implementing exchange may not support all asset variants or introduce new ones
unique to that system.
Ad Unit ID
Description
Recommendation Widgets
Promoted Listings
500+
Type
ID
Name
Description
Format
sponsored
text
desc
text
Page 31
RTB Project
rating
number
formatted as
string
likes
number
formatted as
string
downloads
number
formatted as
string
price
number
formatted as
string
saleprice
number
formatted as
string
phone
Phone number
formatted
string
address
Address
text
10
desc2
text
11
displayurl
text
12
ctatext
text
500+
XXX
Unknown
Page 32
RTB Project
An implementing exchange may not support all asset variants or introduce new ones
unique to that system.
Type
ID
Name
Description
Icon
Icon image
Logo
Main
500+
XXX
8 Implementation Notes
8.1 Multi Placement Bid Requests
If the bid request has a placement count (plcmtcnt) greater than 1, then the implication is
that the bidder is submitting bids to a Generalized Second Price auction where multiple
identical placements are being offered in the same content feed or stream.
Example If a bid request is for 5 ad placements within a feed based layout. The bidder can
return 1-5 bids. The exchange runs a generalized second price auction across these bids. The
bidder can potentially win between 0-5 placements in the auction.
An example bid response would look like
{
"id":"1234567890",
"seatbid":[{
"bid":[{
"id":"1",
"impid":"1",
"price":10,
"nurl":"http://adserver.com/WinNoticeUrlThatReturnsNative1",
"adm":"<nativeresponse>"
},
Page 33
RTB Project
"bid":[{
"id":"2",
"impid":"1",
"price":20,
"nurl":"http://adserver.com/WinNoticeUrlThatReturnsNative2"
"adm":"<nativeresponse>"
}]
}]
}
Page 34