Supply Tag API
Creating a Supply Tag
SDK
Use tab completion with SDK to auto-complete function names or show field options!
tag = springserve.supply_tags.new({'name': 'TEST API DOCS', 'rate': 0.02, 'js_vpaid_enabled': false) print tag.ok, tag.id True, 28852
REST API
Method: POST
Endpoint URL: /api/v0/supply_tags
Notes: Note that for flat waterfalls, the tier parameter defaults to 1. Same goes for any demand tag included in demand_tag_priorities that does not specify the tier parameter.
name - (required, type: string) Name of the new supply tag.
rate
- (required, type: float) CPM rate of the new supply tag.
supply_partner_id - (required, type: int) ID of supply partner to be associated with.
js_vpaid_enabled - (required, type: boolean) Response type, JS VPAID or VAST Only
Request:
POST /api/v0/supply_tags Content-Type: application/json Authorization: "yourAuthToken" { "name": "MS TEST API DOCS", "rate": 0.02, "js_vpaid_enabled": false }
Response:
HTTP/1.1 201 Created Content-Type: application/json { "id": 730124, "account_id": 391, "name": "TEST API DOCS", "active": true, "rate": "0.02", "js_vpaid_enabled": false, ....... }
Examples
Python Example
import requests import json url = "https://console.springserve.com/api/v0/supply_tags/" payload = json.dumps({ "name": "TEST API DOCS", "rate": 10.25, "js_vpaid_enabled": False }) headers = { 'Authorization': 'yourAuthToken', 'Content-Type': 'application/json', } response = requests.request("POST", url, headers=headers, data=payload) print(response.text)
NodeJS Example
var request = require('request'); var options = { 'method': 'POST', 'url': 'https://console.springserve.com/api/v0/supply_tags/', 'headers': { 'Authorization': 'yourAuthToken', 'Content-Type': 'application/json' }, body: JSON.stringify({ "name": "TEST API DOCS", "rate": 10.25, "js_vpaid_enabled": false }) }; request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); });
Get a Supply Tag
SDK
Use tab completion with SDK to auto-complete function names or show field options!
tag = springserve.supply_tags.get(730124) print tag.id, tag.name 730124, "TEST API DOCS"
REST API
Method: GET
Endpoint URL: /api/v0/supply_tags/<id>
- id - (required, type: integer) ID of the supply tag.
Request:
GET /api/v0/supply_tags/730124 Content-Type: application/json Authorization: "yourAuthToken"
Response:
HTTP/1.1 200 OK Content-Type: application/json { "id": 730124, "account_id": 391, "name": "TEST API DOCS", "active": true, "rate": "0.02", ....... }
Examples:
Python Example
import requests import json url = "https://console.springserve.com/api/v0/supply_tags/730124" payload = "" headers = { 'Authorization': 'yourAuthToken', 'Content-Type': 'application/json' } response = requests.request("GET", url, headers=headers, data=payload) print(response.text)
NodeJS Example
var request = require('request'); var options = { 'method': 'GET', 'url': 'https://console.springserve.com/api/v0/supply_tags/730124', 'headers': { 'Authorization': 'yourAuthToken', 'Content-Type': 'application/json' } }; request(options, function (error, response) { if (error) throw new Error(error); console.log(response.body); });
Edit a Supply Tag
SDK
tag = springserve.supply_tags.get(28852) tag.name = "I want to change the name" changed = tag.save() changed.ok True
Note that when enabling post_imp_detection, you must also set at least one of post_imp_percentage_whiteops, post_imp_percentage_moat, post_imp_percentage_ias to >0 before saving your changes.
REST API
Method: PATCH
Endpoint URL: /api/v0/supply_tags/<id>
- id - (required, type: integer) ID of the supply tag.
Request:
PATCH /api/v0/supply_tags/730124 Content-Type: application/json Authorization: "yourAuthToken" { "name": "I want to change the name" }
Response:
HTTP/1.1 200 OK Content-Type: application/json { "id": 730124, "account_id": 391, "name": "I want to change the name", "active": true, "rate": "0.02", ....... }
Add Demand to a Supply Tag
SDK
tag = springserve.supply_tags.get(123456) tag.demand_tag_priorities = [{'demand_tag_id':2345}] saved_tag = tag.save() print saved_tag.ok, saved_tag.demand_tag_priorities True, [{'demand_tag_id':2345}]
REST API
Method: PATCH
Endpoint URL: /api/v0/supply_tags/<id>
Notes - You will need to pass back other demand_tag_priorities objects in order to not delete them
- id - (required, type: integer) ID of the supply tag.
Request:
PATCH /api/v0/supply_tags/730124 Content-Type: application/json Authorization: "yourAuthToken" { "demand_tag_priorities": [ { "demand_tag_id": 1110673 } ] }
Response:
HTTP/1.1 200 OK Content-Type: application/json { "id": 730124, "account_id": 391, "name": "I want to change the name", ....... "demand_tag_priorities": [ { "demand_tag_id": 1110673, "priority": 1, "tier": 1, "locked": false, "ratio": null, "slot_number": 0, "slot_order": "n/a" } } ....... }
Duplicate a Supply Tag
Please note that this works for both Managed and Direct Connect tags.
SDK
In [1]: tag = springserve.supply_tags.get(28852) In [2]: dupe = tag.duplicate() In [4]: dupe.ok Out [4]: True In [5]: print dupe.id 65034
REST API
GET /api/v0/supply_tags/<id>/duplicate
Headers
Content-Type application/json Authorization "yourAuthToken"
Response
Status code 200
{ ... 'id': 65034, 'name': 'I want to change the name', 'rate': '0.02', ... }
Create a Direct Connect Supply Tag
SDK
In [1]: import springserve In [2]: tag = springserve.connected_supply.new({'direct_connect':'true', 'supply_partner_id':10000, 'name': 'TEST API DC', 'rate': 0.02, 'demand_tag_priorities':[{'demand_tag_id':30420, 'priority':1}]}) In [3]: print tag.ok, tag.id True, 28852
Note that for flat waterfalls, the tier parameter defaults to 1. Same goes for any demand tag included in demand_tag_priorities that does not specify the tier parameter.
REST API
POST /api/v0/connected_supply
Headers
Content-Type application/json Authorization "yourAuthToken"
Body (example)
{ |
Required parameters: name, demand_tag_priorities, supply_partner_id, direct_connect, rate
Response
Status code 200
{ 'account_id': 1, 'active': True, 'allowed_player_sizes': [ 's', 'm', 'l', 'u' ], 'country_codes': [], 'country_targeting': 'All', 'demand_tag_priorities': [ { 'demand_tag_id': 30424, 'locked': False, 'priority': 1, 'tier': 1 } ], 'detected_domain_targeting': False, 'detected_player_size_targeting': False, 'direct_connect': False, 'dma_codes': [], 'dma_targeting': 'All', 'domain_list_ids': [], 'domain_targeting': 'All', 'environment': 'desktop', 'flash_vpaid_enabled': False, 'id': 65034, 'js_vpaid_enabled': True, 'js_vpaid_flash_enabled': True, 'key_ids': [], 'name': 'I want to change the name', 'optimization': { 'active': True, 'learn_pct': '1.0', 'settings': { 'lookback_minutes': '60', 'metric': 'fill_speed', 'minimum_requests': '250' }, 'version': '' }, 'payment_terms': 'CPM', 'player_size_targeting': 'All', 'post_imp_detection_enabled': True, 'pre_bid_blocking_enabled': True, 'pre_bid_blocking_components': ['whiteops', 'springserve'], 'rate': '0', 'segment_user_as': [], 'supply_group_id': None, 'supply_partner_id': None, 'supply_type': None, 'tag_health': None, 'targeting_supply_ids': [], 'targeting_supply_white_list': '', 'timeout': None, 'tracking_player_cost': False, 'updated_at': '2017-07-07T15:17:28.315Z', 'user_agent_devices': [], 'user_agent_operating_systems': [] }
Enabling a Supply Tag for Open Market
SDK
In [1]: import springserve In [2]: tag = springserve.supply_tags.get(123456) In [3]: tag.open_market_enabled = True In [4]: saved_tag = tag.save() In [5]: print saved_tag.ok, saved_tag.id True, 123456
REST API
PATCH /api/v0/supply_tags/<id>
Headers
Content-Type application/json Authorization "yourAuthToken"
Body (example)
|
Response
Status code 200
{ "id": 123456, "account_id": 1, "name": "Supply Tag with Open Market", "active": true, "rate": "1.0", "domain_targeting": "All", "app_name_targeting": "All", "app_bundle_targeting": "All", "ip_targeting": "All", "country_targeting": "All", "player_size_targeting": "All", "dma_targeting": "All", "allowed_player_sizes": [ "xs", "s", "m", "l", "xl", "u" ], "country_codes": [], "domain_list_ids": [], "app_name_list_ids": [], "app_bundle_list_ids": [], "ip_list_ids": [], "dma_codes": [], "user_agent_devices": [], "user_agent_operating_systems": [], "user_agent_browsers": [], "updated_at": "2019-09-27T21:02:53.466Z", "created_at": "2019-05-14T20:25:01.156Z", "direct_connect": false, "supply_label_ids": [], "supply_partner_id": 244, "supply_type": null, "payment_terms": "CPM", "tracking_player_cost": false, "optimization": { "active": true, "version": null, "learn_pct": "1.0", "mode": "white_box", "settings": { "metric": "opportunity_fill", "lookback_minutes": "60" } }, "timeout": null, "environment": "desktop", "js_vpaid_enabled": false, "detected_domain_targeting": false, "detected_player_size_targeting": false, "targeting_supply_ids": [], "targeting_supply_white_list": "", "post_imp_detection_enabled": false, "post_imp_percentage_whiteops": 0, "post_imp_percentage_ias": 0, "post_imp_percentage_moat": 0, "post_imp_percentage_protected": 0, "post_imp_percentage_forensiq": 0, "pre_bid_blocking_enabled": false, "pre_bid_blocking_components": [], "tag_health": null, "key_ids": [], "vpaid_none_allow_vpaid_demand": true, "rpm_floor": "1.2", "rpm_floor_openrtb": true, "openrtb_floor": "1.2", "tier_0_broadfall": true, "tier_1_broadfall": true, "tier_2_broadfall": true, "tier_3_broadfall": true, "tier_4_broadfall": true, "tier_5_broadfall": true, "vast_version": "3.0", "min_aspect_ratio": null, "max_aspect_ratio": null, "bulk_add_enabled": true, "format": "video", "allow_traffic_exclusions": true, "open_market_enabled": true, "auto_add_external_bidders": false, "evaluation_learn_pct": "50.0", "tag_pixels": [], "demand_tag_priorities": [ { "demand_tag_id": 21892, "priority": 1, "tier": 0, "locked": false } ], "give_up_percents": [], "budgets": [], "frequency_caps": [], "open_market_external_bidders": [ { "other_account_id": 20, "openrtb_floor": null }, { "other_account_id": 23, "openrtb_floor": null }, { "other_account_id": 27, "openrtb_floor": null }, { "other_account_id": 14, "openrtb_floor": null }, { "other_account_id": 55, "openrtb_floor": null }, { "other_account_id": 56, "openrtb_floor": null }, { "other_account_id": 28, "openrtb_floor": null }, { "other_account_id": 15, "openrtb_floor": null }, { "other_account_id": 3, "openrtb_floor": null }, { "other_account_id": 58, "openrtb_floor": null }, { "other_account_id": 46, "openrtb_floor": null }, { "other_account_id": 4, "openrtb_floor": null }, { "other_account_id": 62, "openrtb_floor": null }, { "other_account_id": 17, "openrtb_floor": null }, { "other_account_id": 65, "openrtb_floor": null }, { "other_account_id": 64, "openrtb_floor": null }, { "other_account_id": 80, "openrtb_floor": null }, { "other_account_id": 79, "openrtb_floor": null }, { "other_account_id": 81, "openrtb_floor": null } ] }
NOTE: Enabling Open Market in the API without specifying bidders will add all eligible bidders.
Adding Event Pixels to a Supply Tag
SDK
In [1]: import springserve In [2]: tag = springserve.supply_tags.get(123456) In [3]: tag.tag_pixels = [{'pixel_type':'AdImpression', 'pixel_url':'https://springserve.com/', 'pixel_format':'image'}] In [4]: saved_tag = tag.save() In [5]: print saved_tag.ok, saved_tag.tag_pixels True, [{'id': 244, 'pixel_type': 'AdImpression', 'pixel_url': 'https://springserve.com/', 'pixel_format': 'image', 'created_at': '2021-03-19T14:30:06.675Z'}]
The fields for 'pixel_type' are the following:
Impression: 'AdImpression'
Start: 'AdVideoStart'
1st Quartile: 'AdVideoFirstQuartile'
Midpoint: 'AdVideoMidpoint'
3rd Quartile: 'AdVideoThirdQuartile'
Complete: 'AdVideoComplete'
Click: 'AdClickThru'
Fields for 'pixel_format':
Image URL: 'image'
Javascript URL: 'js'
REST API
PATCH /api/v0/supply_tags/<id>
Headers
Content-Type application/json Authorization "yourAuthToken"
Body (example)
|
Response
Status code 200
{ "id": 123456, "rate": "1.0", ... "tag_pixels": [ { "id":311732,"pixel_type":"AdImpression", "pixel_url":"https://springserve.com/", "pixel_format":"image","created_at":"2021-03-24T15:40:03.935Z" } ], ... }
Adding Open Market Bidders to a Supply Tag
SDK
In [1]: import springserve In [2]: tag = springserve.supply_tags.get(123456) In [3]: tag.open_market_external_bidders = [{'other_account_id':58},{'openrtb_floor': 2.2, 'other_account_id':4},{'other_account_id':28}] In [4]: saved_tag = tag.save() In [5]: print saved_tag.ok, saved_tag.id True, 123456
The 'other_account_id' represents the bidder account id to add to the open market for this supply tag. There's an optional 'openrtb_floor' field that allows you to set a specific floor for a bidder (otherwise, the default Open Market floor is used).
REST API
PATCH /api/v0/supply_tags/<id>
Headers
Content-Type application/json Authorization "yourAuthToken"
Body (example)
|
Response
Status code 200
{ "id": 123456, "account_id": 1, "name": "Supply Tag with Open Market", "active": true, "rate": "1.0", "domain_targeting": "All", "app_name_targeting": "All", "app_bundle_targeting": "All", "ip_targeting": "All", "country_targeting": "All", "player_size_targeting": "All", "dma_targeting": "All", "allowed_player_sizes": [ "xs", "s", "m", "l", "xl", "u" ], "country_codes": [], "domain_list_ids": [], "app_name_list_ids": [], "app_bundle_list_ids": [], "ip_list_ids": [], "dma_codes": [], "user_agent_devices": [], "user_agent_operating_systems": [], "user_agent_browsers": [], "updated_at": "2019-09-27T21:02:53.466Z", "created_at": "2019-05-14T20:25:01.156Z", "direct_connect": false, "supply_label_ids": [], "supply_partner_id": 244, "supply_type": null, "payment_terms": "CPM", "tracking_player_cost": false, "optimization": { "active": true, "version": null, "learn_pct": "1.0", "mode": "white_box", "settings": { "metric": "opportunity_fill", "lookback_minutes": "60" } }, "timeout": null, "environment": "desktop", "js_vpaid_enabled": false, "detected_domain_targeting": false, "detected_player_size_targeting": false, "targeting_supply_ids": [], "targeting_supply_white_list": "", "post_imp_detection_enabled": false, "post_imp_percentage_whiteops": 0, "post_imp_percentage_ias": 0, "post_imp_percentage_moat": 0, "post_imp_percentage_protected": 0, "post_imp_percentage_forensiq": 0, "pre_bid_blocking_enabled": false, "pre_bid_blocking_components": [], "tag_health": null, "key_ids": [], "vpaid_none_allow_vpaid_demand": true, "rpm_floor": "1.2", "rpm_floor_openrtb": true, "openrtb_floor": "1.2", "tier_0_broadfall": true, "tier_1_broadfall": true, "tier_2_broadfall": true, "tier_3_broadfall": true, "tier_4_broadfall": true, "tier_5_broadfall": true, "vast_version": "3.0", "min_aspect_ratio": null, "max_aspect_ratio": null, "bulk_add_enabled": true, "format": "video", "allow_traffic_exclusions": true, "open_market_enabled": true, "auto_add_external_bidders": false, "evaluation_learn_pct": "50.0", "tag_pixels": [], "demand_tag_priorities": [ { "demand_tag_id": 21892, "priority": 1, "tier": 0, "locked": false } ], "give_up_percents": [], "budgets": [], "frequency_caps": [], "open_market_external_bidders": [ { "other_account_id": 27, "openrtb_floor": 12.0 }, { "other_account_id": 4, "openrtb_floor": null } ] }
Adding Pods to a Supply Tag
SDK
In [1]: import springserve In [2]: tag = springserve.supply_tags.get(123456) In [3]: tag.pod = {'max_duration': 300, 'custom_ad_slot_duration': True,'unfilled_slot_opt_out_enabled': False, 'ad_slots': [{ 'position': 3 }, { 'position': 2 }, { 'position': 1 }] } In [4]: saved_tag = tag.save() In [5]: print saved_tag.ok, saved_tag.id True, 123456
Max_unfilled_slots is initially null, you can set it to an integer between 0 and 2
To EDIT a pod you have to add the pod id to the request
REST API
PUT /api/v0/supply_tags/<id>
Headers
Content-Type application/json
Authorization "yourAuthToken"
Body (example)
{ "pod":{ "max_duration": 200, "custom_ad_slot_duration": true, "unfilled_slot_opt_out_enabled": false, "max_unfilled_slots":0, "ad_slots": [{"position": 3, "min_duration":40, "max_duration":60}, {"position": 2}, {"position": 1}] } } |
Response
Status code 200
{ "id": 123456, "account_id": 1, ... "pod": { "id": 345, "max_duration": 200, "custom_ad_slot_duration": true, "unfilled_slot_opt_out_enabled": false, "max_unfilled_slots": null, "ad_slots": [ { "id": 764, "position": 1, "min_duration": null, "max_duration": null }, { "id": 763, "position": 2, "min_duration": null, "max_duration": null }, { "id": 762, "position": 3, "min_duration": 40, "max_duration": 60 }] } }
Object Descriptions
Object Name | Value Type | Object Description | Example | Notes |
---|---|---|---|---|
id | integer | supply tag ID | 25530 | |
account_id | integer | account ID | 391 | |
name | string | supply tag name | "API Example Router" | |
active | boolean | status of supply tag | true / false | |
rate | integer | rate | 70 / 10.2 | See "payment_terms" CPM - CPM rate paid for inventory. CPM Rev Share - rate at which you pay revenue share for inventory. % Dynamic - margin added to demand. % |
payment_terms | string | payment terms | "Rev-Share" / "CPM" / "Dynamic" | Dynamic - Pricing will be passed via the {{PRICE_PAID}} macro. Please make sure this macro is implemented in your exported tag. Price must be a CPM value. |
rpm_floor | integer | RPM floor rate | 12.24 | |
rpm_floor_openrtb | boolean | DC OM floor active | true / false | DC only |
rpm_floor_hb | boolean | apply floor to header bidder demand | true / false | |
openrtb_floor | integer | DC OM floor rate | 13.24 | DC only |
environment | string | supply device environment type | "desktop" / "mobile_web" / "in_app" / "ctv" | |
domain_targeting | string | domain targeting type | "All" / "Allowlist" / "Blocklist" | use for environment "desktop" or "mobile_web". use in conjunction with domain_list_ids |
domain_list_ids | array integer | ID of domain lists | [211852, 123456] | created under targeting tab in UI. use in conjunction with domain_targeting |
app_name__targeting | string | app name targeting type | "All" / "Allowlist" / "Blocklist" | use for environment "in_app" or "ctv". use in conjunction with app_name_list_ids |
app_name_list_ids | array | ID of app name lists | [527, 5352] | created under targeting tab in UI. use in conjunction with app_name_targeting |
app_bundle_targeting | string | app bundle targeting active | "All" / "Allowlist" / "Blocklist" | use for environment "in_app" or "ctv". use in conjunction with app_bundle_list_ids |
app_bundle_list_ids | array integer | ID of app bundle lists | [250761, 247375] | created under targeting tab in UI. use in conjunction with app_bundle_targeting |
ip_targeting | string | IP targeting active | "All" / "Allowlist" / "Blocklist" | use in conjunction with ip_list_ids |
ip_list_ids | array integer | ID of IP lists | [164, 907] | created under targeting tab in UI. use in conjunction with ip_targeting |
advertiser_domain_targeting | string | advertiser domain targeting type | "All" / "Allowlist" / "Blocklist" | use in conjunction with advertiser_domain_list_ids |
advertiser_domain_list_ids | array integer | ID of advertiser domain lists | [433, 484] | created under targeting tab in UI. use in conjunction with advertiser_domain_targeting |
blocking_unknown_advertiser_domains | boolean | toggle to block unknown advertiser domains | true / false | Blocks all SSHB and Open Market demand tags that don't return an Advertiser Domain in the VAST response |
ignore_advertiser_domain_targeting | boolean | advertiser domain target override | true / false | pod settings removes all advertiser domain targeting, allowing all to serve. sets duplicate creatives to allowed. |
pod | object | pod settings | { "id": 67830, "max_duration": 300, "custom_ad_slot_duration": false, "unfilled_slot_opt_out_enabled": true, "max_unfilled_slots": 2, "duplicate_creatives": true, "duplicate_adomains": true, "ad_slots": [ { "id": 36713, "position": 3, "min_duration": 10, "max_duration": 30 }, { "id": 36712, "position": 2, "min_duration": 10, "max_duration": 30 }, { "id": 36711, "position": 1, "min_duration": 10, "max_duration": 30 } ] } | default - null "custom_ad_slot_duration" - defines dynamic pod or predefined pod settings true - custom ad slot duration false - dynamic ad slot duration |
waterfall_slot_build | boolean | waterfall build | true / false | build waterfall as slot or tag true - slot false - tag |
allow_duplicate_creatives | boolean | allow duplicate creatives | true / false | pod settings |
allow_duplicate_adomains | boolean | allow duplicate advertiser domains | true / false | pod settings |
ignore_iab_targeting | boolean | IAB category targeting override | true / false | pod settings allows all categories to serve |
creative_brandsafe_override | boolean | allow non brand safe creatives to serve | true / false | brand safe blocks by default - gambling, nicotine replacement, lingerie, weapons/warfare, contraception |
creative_allow_objectionable | boolean | allow restricted audience ads | true / false | restricted blocks by default - violence, sexual content, weightloss, political |
post_imp_detection_enabled | boolean | post impression detection active | true / false | specify the portion of impressions on which to run verification. sampling rates are independant per verification provider. use in conjunction with below post_imp_percentage fields |
post_imp_percentage_whiteops | integer | post impression percentage Whiteops (HUMAN) | 0 - 100 | use in conjunction with below post_imp_detection_enabled |
post_imp_percentage_ias | integer | post impression percentage IAS | 0 - 100 | use in conjunction with below post_imp_detection_enabled |
post_imp_percentage_moat | integer | post impression percentage MOAT | 0 - 100 | use in conjunction with below post_imp_detection_enabled |
post_imp_percentage_protected | integer | post impression percentage Protected | 0 - 100 | use in conjunction with below post_imp_detection_enabled |
post_imp_percentage_forensiq | integer | post impression percentage ForensIQ | 0 - 100 | use in conjunction with below post_imp_detection_enabled |
pre_bid_blocking_enabled | boolean | pre-bid filtering active | true / false | |
pre_bid_blocking_components | array string | pre-bid filtering providers | ["springserve", "whiteops", "protected"] | specify percentages using post_imp_percentage for providers |
key_ids | array integer | KVPs included in reporting | [2102, 3124] | max 15 reporting keys per router |
note | string | notes | "notes about router" | |
min_aspect_ratio | string | min aspect ratio as float | "0.563" | 9:16 (0.56) |
max_aspect_ratio | string | max aspect ratio as float | "1.777" | 16:9 (1.78) |
format | string | ad format type | "video" / "tile" / "audio" | |
third_party_overrides | boolean | n/a | ||
player_sizes | array integer | player size targeting | ["xs", "s", "m", "l", "xl", "u"] | |
user_agent_devices | array string | allowed device targeting | ["Computer", "Mobile Web", "Mobile In-app", "Tablet Web", "Tablet In-app", "Games Console", "CTV", "Set-top Box", "Other"] | [] - empty array targets all devices |
user_agent_brands | array string | allowed device brand targeting | ["Samsung", "Philips", "Panasonic", "Hisense", "Vizio", "Sanyo", "Magnavox", "Android TV", "LG", "Comcast", "Other Connected TV", "Apple TV", "Roku", "Fire TV", "Chromecast", "Smartcast by Vizio"] | [] - empty array targets all brands |
user_agent_operating_systems | array string | allowed OS targeting | ["Android", "iOS", "Linux", "Windows", "Mac OS X", "Chrome OS", "Fire OS", "Xbox OS", "VIZIO SmartCast", "Tizen", "Roku OS", "webOS TV", "Other"] | [] - empty array targets all operating systems |
user_agent_browsers | array string | allow browser targeting | ["Chrome", "Edge", "Firefox", "Safari", "IE", "Chromium", "Chrome Mobile", "WebView", "Android", "Samsung Browser", "Facebook on Android", "Facebook on iOS", "Mobile Safari", "Roku App"] | [] - empty array targets all browsers |
segment_targeting_enabled | boolean | audience segment targeting active | true / false | use in conjunction with segment_groups |
segment_groups | array object | audience segment targeting groups and types | [ { "id": 28839, "group": "1", "white_list": true, "segment_group_type": "segments", "segment_ids": [ 10869, 10004 ], "partner_segment_ids": [] } ] | use multiple groups for OR targeting and same group for AND targeting. "whitelist": true/false, for allow or block user segments |
media_file_mime_type_targeting | boolean | mime type targeting | true / false | |
media_file_mime_types | array string | allowed mime types | ["application/dash+xml", "application/javascript", "application/json", "application/octet-stream", "application/vnd.apple.mpegurl", "application/x-mpegURL", "application/x-shockwave-flash", "video/3gpp", "video/hls", "video/m3u8", "video/mov", "video/mp4", "video/mpeg", "video/ogg", "video/quicktime", "video/webm", "video/wmv", "video/x-flv", "video/x-m4v", "video/x-ms-wmv"] | |
blocking_unknown_media_file_mime_type | boolean | block unknown mime types | true / false | |
media_file_duration_targeting | boolean | media file targeting active | true / false | set media_file_min_duration and media_file_max_duration to null for all durations when false. specify min and max durations for true |
media_file_min_duration | integer | media file targeting min duration | 10 / null | unit:seconds |
media_file_max_duration | integer | media file targeting max duration | 30 / null | unit:seconds |
blocking_unknown_media_file_duration | boolean | block unknown durations toggle | true / false | |
media_file_bit_rate_targeting | boolean | media file bitrate targeting active | true / false | set media_file_min_bit_rate and media_file_max_bit_rate to null for all bitrates when false. specify min and max bitrates for true |
media_file_min_bit_rate | integer | media file bitrate targeting min bitrate | 1000 / null | unit:kbps |
media_file_max_bit_rate | integer | media file bitrate targeting max bitrate | 5000 / null | unit:kbps |
blocking_unknown_media_file_bit_rate | boolean | block unknown bitrates toggle | true / false | |
targeted_macros_enabled | boolean | content attribute targeting active | true / false | |
targeted_macros | array object | content attribute targeting | [ { "id": 20135, "macro_param": "{{CHANNEL_NAME}}", "list_type": "white_list", "source_type": "values", "targeted_values": [ "12345" ], "parameter_list_ids": [], "param_required": false, "created_at": "2023-07-18T11:41:40.835Z" } ] | "source_type": "values" / "lists" for lists use "parameter_list_ids" to specify id's |
blocking_unknown_media_containers | boolean | block unknown media containers | true / false | |
media_file_media_container_targeting | boolean | allowed media containers targeting active | true / false | |
media_file_media_containers | array string | allowed media containers | [ "MPEG-41", "MPEG-42" ] | |
media_file_audio_volume_targeting | boolean | media file audio volume targeting active | true / false | |
media_file_audio_volume_mean | integer | media file audio volume targeting mean volume | -17 | unit: dBs |
blocking_unknown_media_file_audio_volume | boolean | block unknown media file audio volume | true / false | |
blocking_vast_containing_companion_ads | boolean | block vast containing companion ads | true / false | |
removing_companion_ads_from_vast | boolean | remove companion ads from vast containing companion ads | true / false | blocking_vast_containing_companion_ads supersedes removing_companion_ads_from_vast |
country_source | string | country targeting source | "list" / "values" | use in conjunction with either country_list_ids if value is "lists" or country_codes if value is "values" |
country_list_ids | array integer | ID of country lists | [184] | use in conjunction with country_source with value "lists". |
country_white_list | boolean | country targeting include / exclude | true / false | true - include false - exclude |
country_codes | array string | country code | ["UK", "US", "IT"] | ISO 3166 Alpha-2 codes |
dma_source | string | DMA targeting source | "list" / "values" | use in conjunction with either country_list_ids if value is "lists" or country_codes if value is "values" |
dma_list_ids | array integer | ID of DMA lists | [199] | use in conjunction with country_source with value "lists". |
dma_white_list | boolean | DMA targeting include / exclude | true / false | true - include false - exclude |
dma_codes | array integer | DMA ID | [525] | |
postal_code_targeting | string | postal code targeting type | "All" / "Include" / "Exclude" | |
postal_codes | array string | postal code values | "10001", "GB:SW1A", "FR:75001", "AR:B1228" | |
postal_code_source | string | postal code source | "values" / "lists" | use "values" for "postal_codes" or "lists" with "postal_code_list_ids" |
postal_code_list_ids | array integer | postal code list | [1235] | |
creative_language_allow_list | boolean | creative language targeting type | " " / true / false | " " - all true - allowlist false - blocklist |
creative_language_codes | array string | creative language targeting list | ["en-GB", "en-US", "fr-FR"] | |
creative_language_block_unknown | boolean | block unknown creative language | true / false | |
supply_partner_id | integer | ID of supply partner assigned | 66463 | |
supply_label_ids | array integer | supply label ID's | [1051] | Found on settings tab → More Info → Labels: |
supply_type | string | supply type | "null" / "Outstream" | "null" - instream "outstream" - outstream |
tracking_player_cost | boolean | track player costs based on player loads and not impressions | true / false | see "supply_type" for outstream specific setting |
direct_connect | boolean | direct connect status | true / false | see "supply_class" object |
supply_class | integer | supply class | 1 / 2 / 3 | 1 - tag 2 - direct connect 3 - bidlink for 2 see "direct_connect" object |
targeted_iab_category_white_list | boolean | IAB tier 1 targeting active | true (allowlist) / false (blocklist) / null (all categories) | |
targeted_iab_categories | array string | IAB tier 1 category name | ["Automotive"] | IAB content taxonomy download |
targeted_iab_tier2_categories_white_list | boolean | IAB tier 2 targeting active | true (allowlist) / false (blocklist) / null (all categories) | |
targeted_iab_tier2_category | array string | IAB tier 2 category name | ["Auto Body Styles", "Automotive"] | IAB content taxonomy download |
dnt_values | array string | DNT (do not track) targeting | ["true", "false", "empty"] | |
dnt_param_required | boolean | DNT (do not track) parameter required | true / false | |
lmt_values | array string | LMT (limit tracking) targeting | ["true", "false", "empty"] | |
lmt_param_required | boolean | LMT (limit tracking) parameter required | ["true", "false", "empty"] | |
us_privacy_supply_white_list | boolean | US privacy targeting active | true / false | |
us_privacy_param_required | boolean | US privacy parameter required | true / false | |
us_privacy_values | array string | US privacy values | ["1yyy"] | |
gdpr_supply_param_required | boolean | supply from GDPR country flag required | true / false | |
gdpr_supply_values | array string | supply from GDPR country flag targeting values | ["true", "false", "empty"] | |
gdpr_consent_param_required | boolean | GDPR consent string parameter required | true / false | |
gdpr_consent_string_values | array string | GDPR consent string targeting | ["valid", "invalid", "empty"] | valid - valid consent string invalid - invalid consent string |
coppa_values | array string | allowed COPPA values | ["true", "false", "empty"] | |
coppa_param_required | boolean | COPPA parameter required | true / false | |
audited_creative_statuses | array string | allowed audited creative statuses | ["pending", "approved", "rejected"] | |
optimization | object | optimisation | { "active": true, "version": "", "learn_pct": "1.0", "mode": "black_box", "settings": { "metric": "rpm", "lookback_minutes": "60" } } | Recommended optimisation methods are RPM for singles ad requests and revenue per second for pods. |
timeout | integer | timeout of supply tag | null / 3000 | unit: ms null for default set this lower than player or supply partner timeout |
js_vpaid_enabled | boolean | response type supported | true / false | |
vpaid_none_allow_vpaid_demand | boolean | allow vpaid demand | true / false | if js_vpaid_enabled is true |
vast_version | string | max VAST version supported | "3.0" / "2.0" | |
obfuscate_ip_address_enabled | boolean | obfuscate IP | true / false | see obf_ip_flags |
obf_ip_flags | array string | obfuscate IP on opt out | ["coppa", "gdpr", "dnt"] | |
budget_timezone | string | timezone of budget | "America/New_York" / "Europe/London" | tz database time zones |
budgets | ||||
day_parting | array boolean | day parting schedule | truncated example for Sunday hours 00 to 07 day parting. [true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false], ........... | when active day parting is broken into 7 arrays of 24 fields of true / false to indicate the day parting window. week starts Sunday true - active false - inactive day_parting_users_timezone is not in API |