Device Object

Note

Fields marked with an asterisk (*) are optional.

In the even that a user has opted-out under the GDPR or CCPA, the following data will be removed from the request, device.ip or ipv6, and device.ifa

Device Object Properties

Value

Type

Description

geo

object

(Recommended) Geo Object as derived from the device’s location services, or supplied by the Supplier if the device IP is missing. For more information, see the Geo Object section.

ip

string

Specifies the IPv4 address closest to the device.

  • Semi-Required One of IP or IPv6 required

  • Required for almost all requests, any containing invalid IP addresses will be discarded based on IP Validation e.g. 87.224.77.0

  • Note: This field is only optional for Connected TV inventory

ipv6

string

Semi-Required One of IP or IPv6 required. IP address in IPv6, for example fe80:0:0:0:200:f8ff:fe21:67cf

ua*

string

Browser or application user agent string, for example, "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:35.0)Gecko/20100101Firefox/35.0"

Browser user agent string. This field represents a raw user agent string from the browser. For backwards compatibility, exchanges are recommended to always populate ua with the User-Agent string, when available from the end user’s device, even if an alternative representation, such as the User-Agent Client-Hints, is available and is used to populate sua. No inferred or approximated user agents are expected in this field. If a client supports User-Agent Client Hints, and sua field is present, bidders are recommended to rely on sua for detecting device type, browser type and version and other purposes that rely on the user agent information, and ignore ua field. This is because the ua may contain a frozen or reduced user agent string.

sua*

object

Structured user agent. If both ua and sua are present in the bid request, sua should be considered the more accurate representation of the device attributes. This is because the ua may contain a frozen or reduced user agent string.

language*

string

Alpha-2/ISO 639-1 code of browser language, for example, en

langb*

string

Browser language using IETF BCP 47. Only one of language or langb should be present.

carrier*

string

Carrier or ISP derived from the IP address, for example, WIFI

connectiontype*

integer

Connection type as defined in OpenRTB, for example, 2

ifa**

string

The ID for Advertisers (IFA) in clear text (i.e. not hashed), for example Apple’s IDFA or Android’s Advertising ID. Note: This field is required for in-app requests.

The Apple IDFA is usually uppercase, and the Android Advertiser ID is usually lowercase. For example:

  • Android "035911ea-467d-4056-903b-65cf44f5633b"

  • iOS "30255BCE-4CDA-4F62-91DC-4758FDFF8512"

  • iOS 14 "00000000-0000-0000-0000-000000000000", with Apple’s deprecation of the IDFA as part of iOS 14, this field should be passed using all zeros, rather than removed or an empty string, as all zeros are the expected format.

Note: This fields can use UUIDv4 or UUIDv5 formats. If passing synthetic IFAs, you should use either the v4 or v5 implementation of RFC 4122 to generate them. There’s a number of online tools for checking the version if you need to troubleshoot UUID issues, e.g. UUID / GUID Validator

make*

string

Device maker, for example, "Apple"

mccmnc*

string

Mobile carrier as the concatenated MCC-MNC code (e.g., "310-005" identifies Verizon Wireless CDMA in the USA). Refer to https://en.wikipedia.org/wiki/Mobile_country_code for further examples. Note: that the dash between the MCC and MNC parts is required to remove parsing ambiguity

model*

string

Device mode, for example, "iPhone"

os*

string

Device operating system, for example, "iOS"

osv*

string

Device operating system version, for example, "3.1.2"

h*

integer

Physical height of the screen in pixels, for example, 750

w*

integer

Physical width of the screen in pixels, for example, 1334

pxratio*

float

The ratio of physical pixels to device independent pixels, for example, 1.0

dnt*

integer

(Recommended) Do not track.

  • 0: do not track is set to false

  • 1: do not track is set to true in the browser, for example, 0

lmt*

integer

(Recommended) Limit Ad Tracking. Signal commercially endorsed (e.g., iOS, recommended Android):

  • 0: tracking is unrestricted,

  • 1: tracking must be limited per commercial guidelines, for example, 0

devicetype*

integer

Device type as defined by OpenRTB, for example, 4

js*

integer

1 if the device supports JavaScript; otherwise 0.

flashver*

string

Flash version detected, for example, 10.1

ext*

object

Device extension object

didsha1*

string

Hardware device ID (e.g., IMEI); hashed via SHA1, for example, CCF6DC12B98AEB2346AFE1BEE7860DF01FDE158B

Deprecated since version 5.3.

didmd5*

string

Hardware device ID (e.g., IMEI); hashed via MD5. 93D05D4D69DEE2BC6645D9F0A0C1938C

Deprecated since version 5.3.

dpidsha1*

string

Platform device ID (e.g., Android ID); hashed via SHA1, for example, CCF6DC12B98AEB2346AFE1BEE7860DF01FDE158B

Deprecated since version 5.3.

dpidmd5*

string

Platform device ID (e.g., Android ID); hashed via MD5, for example, 93D05D4D69DEE2BC6645D9F0A0C1938C

Deprecated since version 5.3.

Structured User Agent

Structured user agent information, which can be used when a client supports User-Agent Client Hints. If both device.ua and device.sua are present in the bid request, device.sua should be considered the more accurate representation of the device attributes. This is because the device.ua may contain a frozen or reduced user agent string due to deprecation of user agent strings by browsers.

Device Structured User Agent

Value

Type

Description

browsers*

array of objects

Each Brand Version object identifies a browser or similar software component. Implementers should send brands and versions derived from the Sec-CH-UA-Full-Version-List header or an equivalent JavaScript accessor from NavigatorUAData interface. This header or accessor are only available for browsers that support User-Agent Client Hints. See the Brand Version Object.

platform*

object

A BrandVersion object that identifies the user agent’s execution platform / OS. Implementers should send a brand derived from the Sec-CH-UA-Platform header, and version derived from the Sec-CH-UAPlatform-Version header or an equivalent JavaScript accessor from NavigatorUAData interface. See the Brand Version Object.

mobile*

int

Indicates a mobile version:

  • 0 For desktop content

  • 1 if the agent prefers a mobile version of the content

architecture*

string

Device’s major binary architecture, e.g. “x86” or “arm”

bitness*

string

Device’s bitness, e.g. “64” for 64-bit architecture.

model*

string

Device model.

source*

integer

The source of data used to create this object

  • 0 Unknown

  • 1 User-Agent Client Hints (only low-entropy headers were available)

  • 2 User-Agent Client Hints (with high-entropy headers available)

  • 3 Parsed from User-Agent header (the same string carried by the ua field)

Brand Version Object

Structured User Agent Brand Version

Value

Type

Description

brand*

string

(Required) A brand identifier, for example, “Chrome” or “Windows”. The value may be sourced from the User-Agent Client Hints headers, representing either the user agent brand (from the Sec-CH-UA-Full-Version header) or the platform brand (from the Sec-CH-UA-Platform header).

version*

array of strings

A sequence of version components, in descending hierarchical order (major, minor, build, patch, etc e.g. ["102", "0", "5005", "115"]

Device Ext

Device Ext Object Properties

Value

Type

Description

atts*

int

(iOS Only) An integer passed to represent the app’s app tracking authorization status, can contain the following values.

  • 0 = not determined

  • 1 = restricted

  • 2 = denied

  • 3 = authorized

truncated_ip*

integer

Indicates whether the IP address in the device.ip field is truncated. 1 = truncated 0 = not truncated. It is assumed not truncated and required if the IP address is truncated. If not declared the bid request might be classified as invalid traffic, by Google. This is a field only for Google, see the Display & Video 360 OpenRTB Specification

ifa_type*

string

Indicates the origin of the device.ifa field, whether it was provided from the device itself or generated by a publisher or Supplier in the supply chain. Takes the following values from the Guidelines for Identifier for Advertising (IFA) on CTV/OTT platforms

  • "aaid" Android TV

  • "rida" Roku

  • "afai" Amazon Fire

  • "idfa" Apple tvOS

  • "msai" Xbox/Microsoft

  • "dpid" Generic device platform ID

  • "ppid" Publisher provided ID

  • "sspid" SSP provided ID

  • "sessionid" Short-lived session ID (frequency capping only)

idv*

str

Passes the ID for Vendor (IDFV). A persistent unique identifier for each app on a device that identifies the device to the app’s vendor. The value of this property is the same for apps that come from the same vendor running on the same device. A different value is returned for apps on the same device that come from different vendors, and for apps on different devices regardless of vendor, e.g. "1F277D46-12BF-482A-9085-B4F811DD6E4D"

Note

Initially this field was passed as idfv but was officially changed after version 1 of the IAB specification. You should expect to see this is both forms: idfv or idv.