Targeting Dimensions
This page is a complete reference for all targeting dimensions available when writing Delegate strategies, and the corresponding bid request fields for traditional RTB demand sources (DSPs).
Geographic targeting
| Dimension | Delegate condition key | RTB field | Format | Example |
|---|---|---|---|---|
| Country | geo.country | device.geo.country | ISO 3166-1 alpha-2 | "AE", "GB", "US" |
| Region / State | geo.region | device.geo.region | ISO 3166-2 | "AE-DU", "GB-ENG", "US-CA" |
| City | geo.city | device.geo.city | City name | "Dubai", "London" |
Delegate example:
"conditions": {
"geo.country": ["AE", "SA", "KW"],
"geo.city": "Dubai"
}Multiple values use array syntax and OR logic within the same field. The example above matches any request from AE, SA, or KW. City is AND’d with country — both must match.
Device targeting
| Dimension | Delegate condition key | RTB field | Values |
|---|---|---|---|
| Device type | device.type | device.devicetype | "mobile", "desktop", "ctv", "tablet" |
| OS | device.os | device.os | "iOS", "Android", "Tizen", "webOS" |
| Make | device.make | device.make | "Samsung", "Apple", "LG" |
Delegate example — CTV only:
"conditions": {
"device.type": "ctv"
}Delegate example — mobile + tablet:
"conditions": {
"device.type": ["mobile", "tablet"]
}When using the Campaign API, pass device types as words in the targeting.devices array: ["mobile", "tablet", "ctv", "desktop"]. The system also accepts aliases like "connected tv", "phone", "pc".
Time targeting
Time values must be strings in Delegate conditions. "hour": "8" is correct; "hour": 8 will not match.
| Dimension | Delegate condition key | Format | Notes |
|---|---|---|---|
| Hour of day | hour | "0"–"23" | UTC hour when auction runs |
| Day of week | weekday | "0"–"6" | "0"=Sunday, "1"=Monday … "6"=Saturday |
Delegate example — business hours weekdays:
"conditions": {
"weekday": ["1", "2", "3", "4", "5"],
"hour": ["9", "10", "11", "12", "13", "14", "15", "16", "17"]
}Delegate example — prime time:
"conditions": {
"hour": ["18", "19", "20", "21", "22", "23"]
}For traditional RTB demand sources, time targeting is handled in your own bidder logic using the auction timestamp. Praevis does not send a hour or weekday field in the bid request — derive it from tmax context or server time.
Content targeting
| Dimension | Delegate condition key | RTB field | Format |
|---|---|---|---|
| Genre | content.genre | app.content.genre | Free text |
| IAB category | content.category | app.cat or site.cat | IAB 1.0 taxonomy |
| Content title | — | app.content.title | String |
| Live vs VOD | — | app.content.livestream | 0=VOD, 1=live |
| Language | — | app.content.language | ISO 639-1 |
Delegate example — genre targeting:
"conditions": {
"content.genre": ["drama", "thriller", "documentary"]
}IAB Taxonomy: Praevis uses IAB 1.0 content taxonomy (e.g. "IAB1", "IAB9-7"). Categories are matched as strings against the site.cat or app.cat arrays in the bid request. Use the IAB 1.0 format for all category targeting.
Genre values are set by the publisher when configuring their inventory. Common values on the Praevis network:
| Genre | Typical inventory |
|---|---|
drama | CTV drama series |
sport | Live and recorded sports |
news | News channels |
comedy | Sitcoms, comedy specials |
documentary | Factual content |
kids | Children’s programming |
reality | Reality TV |
movie | Feature films |
Inventory targeting
| Dimension | Delegate condition key | RTB field | Format |
|---|---|---|---|
| Publisher ID | publisher_id | app.publisher.id | UUID |
| Pool ID | pool_id | imp.ext.pool_id | UUID |
| Deal ID | deal_id | imp.pmp.deals[].id | String |
Delegate example — publisher-specific:
"conditions": {
"publisher_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}Ad format targeting
| Dimension | Delegate condition key | RTB field | Values |
|---|---|---|---|
| Secure | — | imp.secure | Always 1 on Praevis |
| Skip | — | imp.video.skip | 0=non-skip, 1=skippable |
| Start delay | — | imp.video.startdelay | 0=pre-roll, -1=mid-roll |
| Video dimensions | — | imp.video.w, imp.video.h | Pixels |
Combining conditions
All conditions within a single rule use AND logic. Multiple values within one condition use OR logic.
Example — CTV drama in UAE prime time:
"conditions": {
"device.devicetype": "3",
"geo.country": "AE",
"content.genre": "drama",
"hour": ["18", "19", "20", "21", "22", "23"]
}This matches only when ALL of: CTV device AND UAE AND drama genre AND evening hours.
Example — drama OR sport:
"conditions": {
"content.genre": ["drama", "sport"]
}This matches when genre is drama OR sport.
Empty conditions — match all
"conditions": {}An empty conditions object matches every auction — useful as a catch-all fallback rule with low priority and a low bid.