# S2S API

# Integration Process

  1. To create an account, get in touch with your account manager.
  2. Once you have an account, our system will assign you with the following: sid, token, app_id, adslot_id.
  3. Please refer to the documentation below for the relevant integration method.

# API Request URL

  • Testing URL: https://use.xyz.svr-algorix.com/rtb/sa?sid=30012&token=10f0e186e95b3ee597804f65831e5359
  • SG Endpoint URL: https://apac.xyz.svr-algorix.com/rtb/sa?sid={YOUR_SID}&token={YOUR_TOKEN}
  • US Endpoint URL: https://use.xyz.svr-algorix.com/rtb/sa?sid={YOUR_SID}&token={YOUR_TOKEN}
  • EUC Endpoint URL: https://euc.xyz.svr-algorix.com/rtb/sa?sid={YOUR_SID}&token={YOUR_TOKEN}

# API Request Method

  • Request Method: POST
  • Header: Content-Type Value: application/json

# API Request Parameters

Parent Object Object / Parameter Type Required Description
id string Yes Publisher request id
app object Yes Object APP
app app_id string Yes APP ID, system assigned.
app app_bundle_id string Yes A platform-specific application identifier intended to be unique to the app.
com.bestai.scannerlite (for Android) 382201985 (for iOS)
12 (Roku store id, eg. Netflix)
app app_name string Yes app name.
app store_url string Recommend app store url.
app app_category stringRecommend String of IAB content categories that describe the current page or view of the app. Refer to list IAB Category Type
site object No Details via a Site object about the publisher’s website.
site id string Yes Site ID, system assigned.
site name string Yes Site name.
site domain string Yes Domain of the site (e.g., “algorix.co”).
site cat string array No Array of IAB content categories of the site. Refer to list IAB Category Type
site sectioncat string array No Array of IAB content categories that describe the current section of the site. Refer to list IAB Category Type
site pagecat string array No Array of IAB content categories that describe the current page or view of the site. Refer to list IAB Category Type
site page string No URL of the page where the impression will be shown.
site ref string No Referrer URL that caused navigation to the current page.
site search string No Search string that caused navigation to the current page.
site mobile integer No Indicates if the site has been programmed to optimize layout when viewed on mobile devices, where 0 = no, 1 = yes.
site privacypolicy integer No Indicates if the site has a privacy policy, where 0 = no, 1 = yes.
site keywords string No Comma separated list of keywords about the site.
adslot object Yes Object Adslot
adslot adslot_id string Yes Adslot id, sys tem assigned.
adslot instl int Yes 1 = the ad is interstitial or full screen, 0 = not interstitial.
adslot banner object No Object Banner.
adslot.banner width int Yes Exact width in device independent pixels.
adslot.banner height int Yes Exact height in device independent pixels.
adslot.banner position intYes Ad position on screen. Refer to list Position
adslot.banner api int array Yes List of supported API frameworks for this impression. Refer to List API Frameworks
adslot.banner battr int array Yes Blocked creative attributes. Refer to List Creative Attributes
adslot.banner mimes string array Yes Content MIME types supported e.g. ["image/jpeg"]
adslot native object No Object Native.
adslot.native assets array Yes Array assets for all you needed to generate the ad. Including Object title, Object img and Object data.
adslot.native.assets id int Yes The id of asset for sorting all assets. which is marked by yourself.
adslot.native.assets required int Yes Marking whether the asset you requested is required or not. where “1”= yes, “0” = no.
adslot.native.assets title object No Object Title
adslot.native.assets.title len int No The max length of title.
adslot.native.assets img object No Object Img.
adslot.native.assets.img type int Yes The type of image. where “1” = icon, “2” = logo, “3” = poster, “0” = known to be other.
adslot.native.assets.img width int Yes The width of image.
adslot.native.assets.img height int Yes The height of image.
adslot.native.assets data object No Object data. The description of ad or button.
adslot.native.assets.data type int Yes Data categories. Refer to list Assets Data Type
adslot.native.assets.data len int Yes The max length of data.
adslot video object No Object video
adslot.video mimes string array Yes Content MIME types supported ( e.g. ["video/mp4"])
adslot.video minduration int Recommend Minimum video ad duration in seconds.
adslot.video maxduration int Recommend Maximum video ad duration in seconds.
adslot.video protocols int array Yes Array of supported video protocols. Refer to list Protocols
adslot.video w int Yes Width of the video player in device independent pixels (DIPS).
adslot.video h int Yes Height of the video player in device independent pixels (DIPS).
adslot.video start delay int Yes Indicates the start delay in seconds for pre-roll, mid-roll, or post-roll ad placements. Refer to listStart Delay
adslot.video placement int Yes Placement type for the impression. / 1 in-Stream 2 In-Banner 3 In-Article 4 In-Feed 5 Interstitial/Slider/Floating
adslot.video linearity int Yes Indicates if the impression must be linear, nonlinear, etc. If none specified, assume all are allowed. Refer to list Linearity
adslot.video skip int Yes Indicates if the player will allow the video to be skipped,where 0 = no, 1 = yes.
adslot.video skipmin int Recommend Videos of total duration greater than this number of seconds can be skippable; only applicable if the ad is skippable.
adslot.video skipafter int Recommend Number of seconds a video must play before skipping is enabled; only applicable if the ad is skippable.
adslot.video battr int array Yes Blocked creative attributes. Creative Attributes
adslot.video minbirate int Recommend Minimum bit rate in Kbps.
adslot.video maxbirate int Recommend Maximum bit rate in Kbps.
adslot.video boxingallowed int Recommend Indicates if letter-boxing of 4:3 content into a 16:9 window is allowed, where 0 = no, 1 = yes.
adslot.video playbackmethod int array Yes Playback methods that may be in use. If none are specified,any method may be used. Refer to List Playback Methods
adslot.video playbackend int Yes The event that causes playback to end. Refer to List Playbackend
adslot.video pos int Yes Ad position on screen. Refer to ListPosition
adslot.video companionad Object array Recommend Array of Banner objects if companion ads are available
adslot.video companiontype int array Recommend Supported VAST companion ad types. Refer to List Companion Types
adslot.video api int array Yes List of supported API frameworks for this impression. Refer to List API Frameworks
adslot.video ext Object Yes Object Ext
adslot.video.ext rewarded bool Yes true = rewarded video false = other videos
user object Recommend Object User
user user_id string Yes The userid defined by the publisher which must uniquely identify a user.
user ip string Yes IPv4 address closest to device.
user gender int Recommend Gender, where “1” = male, “2” = female,“0” = known to be other.
user ext Object Recommend Ext Object
user.ext consent string Recommend if gdpr = 1, this string gives consent information of various vendors
device object Yes Object Device
device user_agent string Yes User Agent
device device_id array Yes Array device id
device.device_id type int Yes The of device id. where “1” = IMEI, “2” = MAC address, “0” = known t o be other.
device.device_id id string Yes Value of id.
device advertising_id object Yes Object advertising id
device.advertising_id type int Yes Type of advertising id.where “4” = Android GAID, “5” = IOS IDFA, “0” = known to be other.
device.advertising_id id string Yes Value of id.
device geo object Recommend Object Geo
device.geo latitude float Recommend Latitude
device.geo longitude float Recommend Longitude
device.geo country string Recommend Country code using ISO-3166-1-alpha-3
device.geo region string Recommend Region code using ISO-3166-2
device device_type int Yes Device type categories. Refer to listDevice Type
device language string Yes Language. Refer to list Language
device os int Yes Device operating system. Refer to list OS
device os_version string Yes Device operating system version.
device brand string No The brand of device.
device model string No The model of device.
device screen_width int Recommend Physical width of the screen in pixels.
device screen_height int Recommend Physical height of the screen in pixels.
device screen_density int No Screen size as pixels per linear inch.
device carrier_id string Yes Carrier id. Mobile carrier as the concatenated MCC-MNC code (e.g., “310-005” identifies Verizon Wireless CDMA in the USA). Refer to list MCC & MNC Code
device wireless_network_type int Yes Network conn ection type. w here “1” = WI FI, “2” = 2G, “ 3” = 3G, “4” = 4G, “5” = 5G, “0” = known to be other.
regs object Yes Object Regs.
regs coppa int No Flag indicating if this request is subject to the COPPA regulations established by the USA FTC, where 0 = no, 1 = yes.
regs gdpr int No Flag indicatin g if this request is subject to the GDPR regulations established by the EU, where 0 = no, 1 = yes.
regs us_privacy string Recommend Applicable to requests subject to CCPA regulations. Must follow the U.S. Privacy string format per IAB spec. This attribute is always passed when applicable to affected regions.
bcat string array Recommend Blocked advertiser categories using the IAB content categories.
badv string array Recommend Block list of advertisers by their domains
bapp string array Recommend Block list of applications by their platform-specific exchangeindependent application identifiers. On Android, these should be bundle or package names (e.g., com.foo.mygame). On iOS, these are numeric IDs.
tmax int Recommend Maximum time in milliseconds the exchange allows for bids to be received including Internet latency to avoid timeout.
secure int No Whether to use secure HTTPS 0 = No,1 = Yes.

# API Request Sample

{
  "id": "fgasikutgasurebuifgsiuafgisua",
  "app": {
    "app_id": "f1430206647be69f2d7c68fe6b578ec6Z6",
    "app_bundle_id": "com.bestaix.scannerlite",
    "app_name": "Text Scanner",
    "store_url": "https://play.google.com/store/apps/details?id=com.bestai.TextScanner",
    "app_category": "IAB20"
  },
  "adslot": {
    "adslot_id": "171011",
    "instl": 0,
    "banner": {
      "width": 320,
      "height": 50,
      "position": 1,
      "mimes": ["image/jpeg","image/gif","image/png"],
      "api":[3, 5],
      "battr":[6, 7]
    }
  },
  "user": {
    "user_id": "dsygfyad",
    "ip": "106.38.48.52",
    "gender": 1
  },
  "device": {
    "user_agent": "Mozilla/5.0 (Linux; U; Android 2.3.6; it-it; GT-S5570I Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 (Mobile; afma-sdk-a-v6.1.0),gzip(gfe)",
    "device_id": [
      {
        "type": 1,
        "id": "2536643785678345673845"
      },
      {
        "type": 2,
        "id": "5C-FF-35-0B-95-B5"
      }
    ],
    "advertising_id": {
      "type": 4,
      "id": "dfc59c16-4435-48cb-98a9-9bdd06108077"
    },
    "geo": {
        "lat": 27.3333,
        "lon": 88.6167,
        "country": "IND"
    },
    "device_type": 1,
    "os": 2,
    "language": "CN",
    "os_version": "9.0.1",
    "brand": "xiaomi",
    "model": "hongmi",
    "screen_width": 640,
    "screen_height": 1136,
    "screen_density": 326,
    "carrier_id": "460-000",
    "wireless_network_type": 4
  },
  "regs": {
    "coppa": 0,
    "gdpr": 0,
    "us_privacy": "1YN-"
  },
  "bcat": ["IAB8", "IAB26", "IAB9"],
  "badv": ["explorescientificusa.com","www.explorescientificusa.com"],
  "tmax": 200,
  "secure": 1
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69

# Native Request Sample

{
  "id": "fgasikutgasurebuifgsiuafgisua",
  "app": {
    "app_id": "f1430206647be69f2d7c68fe6b578ec6Z6",
    "app_bundle_id": "com.bestaix.scannerlite",
    "app_name": "Text Scanner",
    "store_url": "https://play.google.com/store/apps/details?id=com.bestai.TextScanner",
    "app_category": "IAB20"
  },
  "adslot": {
    "adslot_id": "171011",
    "instl": 0,
    "native": {
      "plcmttype": 1,
      "assets": [
        {
          "id": 1,
          "required": 1,
          "title": {
            "len": 256
          }
        },
        {
          "id": 2,
          "required": 1,
          "img": {
            "type": 1,
            "width": 80,
            "height": 80
          }
        },
        {
          "id": 3,
          "required": 1,
          "img": {
            "type": 3,
            "width": 1200,
            "height": 627
          }
        },
        {
          "id": 4,
          "required": 1,
          "data": {
            "type": 2,
            "len": 256
          }
        }
      ]
    }
  },
  "user": {
    "user_id": "dsygfyad",
    "ip": "106.38.48.52",
    "gender": 1
  },
  "device": {
    "user_agent": "Mozilla/5.0 (Linux; U; Android 2.3.6; it-it; GT-S5570I Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 (Mobile; afma-sdk-a-v6.1.0),gzip(gfe)",
    "device_id": [
      {
        "type": 1,
        "id": "2536643785678345673845"
      },
      {
        "type": 2,
        "id": "5C-FF-35-0B-95-B5"
      }
    ],
    "advertising_id": {
      "type": 4,
      "id": "dfc59c16-4435-48cb-98a9-9bdd06108077"
    },
    "geo": {
        "lat": 27.3333,
        "lon": 88.6167,
        "country": "IND"
    },
    "device_type": 1,
    "os": 2,
    "language": "CN",
    "os_version": "9.0.1",
    "brand": "xiaomi",
    "model": "hongmi",
    "screen_width": 640,
    "screen_height": 1136,
    "screen_density": 326,
    "carrier_id": "460-000",
    "wireless_network_type": 4
  },
  "regs": {
    "coppa": 0,
    "gdpr": 0,
    "us_privacy": "1YN-"
  },
  "bcat": ["IAB8", "IAB26", "IAB9"],
  "badv": ["explorescientificusa.com","www.explorescientificusa.com"],
  "tmax": 200,
  "secure": 1
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99

# Video request sample

{
  "id": "fgasikutgasurebuifgsiuafgisua",
  "app": {
    "app_id": "f1430206647be69f2d7c68fe6b578ec6Z6",
    "app_bundle_id": "com.bestaix.scannerlite",
    "app_name": "Text Scanner",
    "store_url": "https://play.google.com/store/apps/details?id=com.bestai.TextScanner",
    "app_category": "IAB20"
  },
  "adslot": {
    "adslot_id": "171011",
    "instl": 0,
    "video": {
      "mimes": ["video/mp4"],
      "minduration": 0,
      "maxduration": 30,
      "protocols": [2, 3, 5, 6],
      "w": 320,
      "h": 480,
      "startdelay": 0,
      "placement": 5,
      "linearity": 1,
      "skip": 1,
      "skipmin": 15,
      "skipafter": 15,
      "maxbitrate": 2730,
      "boxingallowed": 0,
      "playbackmethod": [1],
      "playbackend": 1,
      "pos": 7,
      "companionad": [{
          "w": 320,
          "h": 480,
          "id": "1"
      }],
      "companiontype": [1],
      "ext": {
          "rewarded": false
      }
    }
  },
  "user": {
    "user_id": "dsygfyad",
    "ip": "106.38.48.52",
    "gender": 1
  },
  "device": {
    "user_agent": "Mozilla/5.0 (Linux; U; Android 2.3.6; it-it; GT-S5570I Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 (Mobile; afma-sdk-a-v6.1.0),gzip(gfe)",
    "device_id": [
      {
        "type": 1,
        "id": "2536643785678345673845"
      },
      {
        "type": 2,
        "id": "5C-FF-35-0B-95-B5"
      }
    ],
    "advertising_id": {
      "type": 4,
      "id": "dfc59c16-4435-48cb-98a9-9bdd06108077"
    },
    "geo": {
        "lat": 27.3333,
        "lon": 88.6167,
        "country": "IND"
    },
    "device_type": 1,
    "os": 2,
    "language": "CN",
    "os_version": "9.0.1",
    "brand": "xiaomi",
    "model": "hongmi",
    "screen_width": 640,
    "screen_height": 1136,
    "screen_density": 326,
    "carrier_id": "460-000",
    "wireless_network_type": 4
  },
  "regs": {
    "coppa": 0,
    "gdpr": 0,
    "us_privacy": "1YN-"
  },
  "bcat": ["IAB8", "IAB26", "IAB9"],
  "badv": ["explorescientificusa.com","www.explorescientificusa.com"],
  "tmax": 200,
  "secure": 1
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89

# Response Parameters

Parent Object Object / Parameter Type Required Description
err_no int Yes Error No. Refer to list Err No and Msg
err_msg string Yes Error Message
data id string Yes Ad id
data ads array No Array ads
data.ads crid string Yes Creative id
data.ads cid string Yes Campaign id
data.ads adomain string array Yes Ad adomain
data.ads cat string array Yes Ad categories
data.ads banner_ad object No Object Banner
data.ads.banner_ad html_snippet string Yes HTML snippet
data.ads.banner_ad width int Yes Exact width in device independent pixels.
data.ads.banner_ad height int Yes Exact height in device independent pixels.
data.ads.banner_ad imptrackers array Yes Array impression tracker.
data.ads.banner_ad clicktrackers array Yes Array click tracker.
data.ads native_ad object No Object Native
data.ads.native_ad assets array Yes Array assets
data.ads.native_ad.assets id int Yes The id of asset for sorting all assets. which is marked by yourself.
data.ads.native_ad.assets required int Yes Marking whether the asset you requested is required or not.where “1”= yes, “0” = no
data.ads.native_ad.assets title object No Object Title
data.ads.native_ad.assets.title title string No Title
data.ads.native_ad.assets img object No Object Img
data.ads.native_ad.assets.img width int Yes The width of image.
data.ads.native_ad.assets.img height int Yes The height of image.
data.ads.native_ad.assets.img url string Yes The url of image.
data.ads.native_ad.assets data object No Object data.
data.ads.native_ad.assets.data value string Yes The value of data.
data.ads.native_ad target_url string Yes Target url(click url or tracking url)
data.ads.native_ad imptrackers array Yes Array impression tracker.
data.ads.native_ad clicktrackers array Yes Array click tracker.
data.ads video_ad object No Object Video
data.ads.video_ad winnotice_url string Yes winnotice url
data.ads.video_ad adm string Yes Details for reference = "https://www.iab.com/wp-content/uploads/2015/06/VASTv3_0.pdf">vast 3.0 protocol
{
  "data": {
    "ads": [
      {
        "crid": "12-2398",
        "adomain": [
            "www.svr-algorix.com"
        ],
        "cat": [
            "IAB1"
        ],
        "banner_ad": {
          "html_snippet": "<!DOCTYPE html> <html> <head> <title></title> <meta name='viewport' content='user-scalable=0, minimum-scale=1.0, maximum- scale=1.0'/> <style type='text/css'> body {margin: 0; overflow: hidden;} </style> </head> <body> <style>.im_1664_ads-lbl,.im_1664_ads-lbl img{position:absolute;bottom:0;right:0;pointer-events:none;z-index:1000000000000000}.im_1664_ads-lbl img{width:26px;height:16px}</style> <div class='im_1664_ads-lbl'><img src='http://i.l.inmobicdn.net/ifctpads/IFC/CCN/assets/AdsiconHDPI1472034285.png'></div> <style> .inmC { margin-left: auto; margin-right: auto; display: block; }</style> <a href='https://play.google.com/store/apps/details?id=com.offline.miniocr' target='_top' style='text-decoration:none;'> <img border='0' class='inmC' src='http://dev-report.svr-algorix.com/static/img/320_50.jpg' height='50' width='320' /> </a> <style>body{margin:0}</style> <img src='http://et-cn.w.inmobi.com/c.asm/C/t/ectjuimhah/1blu/w/4k/lx/m/r/0/0/ eyJVSUQiOiJGQzBGMzQ0NS0wRkNFLTQwRUUtODY0Ni0zQ0E4QkIyNjYzRUEiLCJJREEiOiJGQzBGMzQ0NS0wRkNFLTQwRUUtODY0Ni0zQ0E4QkIy NjYzRUEifQ~~/ca0d9776-0159-1000-ee66-38a46c1e0093/-1/411p/-1/0/0/40.71269989013672,74.00589752197266,0.0/13779426/NW/2t/0/api/3.0.0/dir/ Y29tLmlubW9iaS5kZW1vYXBw/ FvCTCRYAFta48rroVFcAAAAAAADwPzQAEhg4NUxNdTREejQ0MmxZS3lZSXpNWHVkMG4yZUZuVEUxZ0gzZ1haQzlzS3g2ZC9tM2Qwd0grc3hRPT0YB kJBTk5FUhwUABQCHBwW_7-36r-itPJrFtndsvyC1-PgIwAWxN7fpp2TiM- yARUAEgAAOQUiFAAWloqp6t9RKD1wZXJmLWFkcG9vbC1za3lob29rcHJvZDUwMDJfcGVyZl9oa2cxX3BlcmYtYWRwb29sX3NreWhvb2twcm9kFAQSJpr 5FhwVAgAsFQIAUwEm8JMJFQASGAUwLjA3NQA=/-1/AA==/7/844b2836?m=18' width='1' height='1' style='display:none;' /> </body></html><img src=\"https://apac-trk.svr-algorix.com/imp?&info=w4CM90WYmAjLw0TbmIDO5gjLw0TbiZSM9knYmETPmBnJOh0Q9MmJxADMyETPwZCNllTN5EWN4MmMhVjN2ITNiJzY2YDMxIWZjNWZhNWN50TYmgjMmRmNwADMlNzMzEWY5MWMyEDOllTZ3IGM0MGZycjY9Enc_w4nc&price=${AUCTION_PRICE}\"  width=\"1\" height=\"1\" style=\"display:none;\">",
          "img_url": "",
          "width": 320,
          "imptrackers": [
            "http://apac-trk.svr-algorix.com/imp?&info==AjLw0TbmAjLw0TbiZCMwETP5JmJy0jZwZSPjZCMxkjM2ETPwZCNllTN5EWN4MmMhVjN2ITNiJzY2YDMxIWZjNWZhNWN50TYmcDZ4ATZ2YGNilTOidjZkFTYzQGZzUmM4ADO1M2NjVGZ9Enc_"
          ],
          "clicktrackers": [
            "http://apac-trk.svr-algorix.com/clk?&info==AjLw0TbmAjLw0TbiZCMwETP5JmJy0jZwZSPjZCMxkjM2ETPwZCNllTN5EWN4MmMhVjN2ITNiJzY2YDMxIWZjNWZhNWN50TYmcDZ4ATZ2YGNilTOidjZkFTYzQGZzUmM4ADO1M2NjVGZ9Enc_"
          ],
          "height": 50
        }
      }
    ],
    "id": "fgasikutgasurebuifgsiuafgisua"
  },
  "err_msg": "Success",
  "err_no": 1000
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

# Native Response Sample

{
  "data": {
    "ads": [
      {
        "crid": "12-2398",
        "adomain": [
            "www.svr-algorix.com"
        ],
        "cat": [
            "IAB1"
        ],
        "native_ad": {
          "assets": [
            {
              "id": 1,
              "title": {
                "title": "The Vicious Cycle Of Vaginal Infections"
              },
              "required": 1
            },
            {
              "img": {
                "width": 50,
                "url": "https://images2.zemanta.com/p/srv/sha/00/af/6c/28902411fa70b73aca75b2da2730553a99.jpg?w=75&h=75&fit=crop&crop=faces&fm=jpg",
                "height": 50
              },
              "id": 2,
              "required": 1
            },
            {
              "img": {
                "width": 600,
                "url": "https://images2.zemanta.com/p/srv/sha/00/af/6c/28902411fa70b73aca75b2da2730553a99.jpg?w=75&h=75&fit=crop&crop=faces&fm=jpg",
                "height": 280
              },
              "id": 3,
              "required": 1
            },
            {
              "data": {
                "value": "Restore and maintain a healthy balance of good bacteria and yeast for a healthy vagina"
              },
              "id": 4,
              "required": 1
            }
          ],
          "clicktrackers": [
            "https://svr-algorix.com/track/url",
            "https://apac-trk.svr-algorix.com/clk?&info=w4CM90WYmAjLw0TbmIDO5gjLw0TbiZSM9knYmETPmBnJOh0Q9MmJyADMyETPwZCNllTN5EWN4MmMhVjN2ITNiJzY2YDMxIWZjNWZhNWN50TYmAjNkZWO1cjN1cDOmJWZjJ2MjFGNwQzMzYjM5ETNidDM9Enc_w4nc&price=${AUCTION_PRICE}"
          ],
          "target_url": "https://r1.zemanta.com/r/u1qm61onnbb4/b1_rubicon/478563/7124557/C4NAONQHHBYL3S7WLF4ZSZFV2GCZFYDDINNXKVCYIRNEUYD76UZIU4TKSAJW5I6DUMYFEUW4AAP7HS7NCZP73SQOS4HY3VM5P76JCBIBX2GK7HGI2H5D3ZW2WT7XPKB2JM3G5VQUBQZSLQEITY7G2Y3D4XR7PO5YSC7WMQPTQVI3VIVYDYVSUMEIHQFGKDQZ55VIVS7AH73YDIBYA4O7PS4QPYK2YTNWBJJR4FCXMHCWD2X2DGSBYZGUFRWXOMA7C4UUZN2X2HWAXIT4PAZN7EYS5M7JQC2MGYPXC4NIB7XX476P7JOKRDVAXQRZGBHPCFB2JID3ZUBK77TXGWWS2J5L32MWS2R3FGYIXFNUOCGWEXKX765X5OAA4HL35XPQWEBWX2JLNM4O7T6UJ2YCDTBDH5FXATJUOO2OI7SGHQKTZOCT2PKYMEHAURNFNYTQ5FZNIE5FTAIGGIXCOWIWKWZBPU/",
          "imptrackers": [
            "https://apac-trk.svr-algorix.com/imp?&info=w4CM90WYmAjLw0TbmIDO5gjLw0TbiZSM9knYmETPmBnJOh0Q9MmJyADMyETPwZCNllTN5EWN4MmMhVjN2ITNiJzY2YDMxIWZjNWZhNWN50TYmAjNkZWO1cjN1cDOmJWZjJ2MjFGNwQzMzYjM5ETNidDM9Enc_w4nc&price=${AUCTION_PRICE}"
          ]
        }
      }
    ],
    "id": "fgasikutgasurebuifgsiuafgisua"
  },
  "err_msg": "Success",
  "err_no": 1000
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62

# Video Response Sample

{
    "err_msg": "Success",
    "err_no": 1000,
    "data": {
        "ads": [
            {
                "crid": "12-2398",
                "adomain": [
                    "www.svr-algorix.com"
                ],
                "cat": [
                    "IAB1"
                ],
                "video_ad": {
                    "winnotice_url": "https://use-trk.svr-algorix.com/win?info===AZzR2ckNHZz1TYmlmJz0Te0FmJwIzM9gmJwgDN9cnJxIUQJ1zYhZSZtFmbfBHch1jbhZyMxADMz0DZpNnJxQjLwUjMuMzNuczM9AXa1ZSbus2bvJmchVWe51mLt92Y9QWdiZCMwUDM1cjM2UTM9QncmAjLw0TbhZCMuATPtZiM4kDOuATPtJmJx0TeiZiM9YGcmI1SV1zYmYzM1YTM9AnJlhTY1kTN0gDN0EDOykTYmhzM1QjMiZGZjhzM4QzM30TYmImZiZzYzkjMkFWOmNWZjlTY4EDN4kTMhZjY0QjYxMzY9Enc_==nc&price=${AUCTION_PRICE}",
                    "adm": "<VAST version=\"3.0\"><Ad><Wrapper><AdSystem>PubMatic</AdSystem><VASTAdTagURI><![CDATA[https://lyr.pubmatic.com/AdServer/layer?pubid=157941&nwid=&ts=1561014068&vdo=1&pimprid=bce9ed2d-2660-476c-ab2f-f330ad10b190&uimprid=B5CD58C7-6B0B-4313-8A51-73FF3EDF1461&a=${AUCTION_PRICE}&vdo=1&ucrid=17300671960036780932&t=PBYZW09U1FRTVE9PT0maWQ9MCZjaWQ9MTY3MzUmY2Y9MS4wMDAwMDAmeHByPTEuMDAwMDAwJmZwPTM2LjE0OTEmcHA9NC42MTU0MiZ0cD0wJnBlPTAuMDAwMDAwJnB1YmlkPTE1Nzk0MSZuYmY9MSZwZmVlPTI4JmNwPTYuNDEwMyZwMj0zOjAuMDAwMDAwJmNsZW49NTI5MyZjcj08VkFTVCB2ZXJzaW9uPSIyLjAiPgo8QWQgaWQ9IjY0NTQyNjEiPgo8V3JhcHBlcj4KPEFkU3lzdGVtPk1lZGlhTWF0aCBUMSBWQURTPC9BZFN5c3RlbT4KPFZBU1RBZFRhZ1VSST48IVtDREFUQVtodHRwczovL3Zhc3QubWF0aHRhZy5jb20vP2lkPTVhVzk1cTJqTHpFNUx5QXZXbFJWTWxreVRtMU9SR04wVFVSSmVrNVRNREJOYW1Sc1RGZEZNVmxxUlhST1YxVTBXVzFGTkU5SFZUTk9Na3BvTHpZM05qUXdOREF6TURFek56TTJPREkzTkRBdk5qUTFOREkyTVM4ME16RTJOakUwTHpNdmFHdEllSEEwUzFoSkxWRjZUR1ZhVjFOSWNtMWhkazR4VTE5Q1JFZFRXVXB4VDBVMFNWa3pOVU16UVM4eEx6TXZNQzgwTHpFd01qRTVNRFF2TWpnNE9UVXhPVFF4TkM4eU1EVXhNalF2TmpFNE9UY3lMemt2WW1zNk1UQTRORGMzTkN4aWF6b3hNRGcwTnpjMUxHSnJPalV3TWpnME5peGlhem8xTURJNE5EY3NZbXM2TlRBeU9EVXdMR0pyT2pVd01qZzFNeTh3TDFwSFdUQk9ha1YzVG1wUmRGbFhTVEJPVXpBd1dWUkJlVXhYU1hkT1IwVjBXVmRGTVZwRVRUTk5SRkV3VGtSYWFTOHdMekF2TUM4d0x6QXZOamMyTkRBME1ETXdNVE0zTXpZNE1qYzBNQzlsZDNJdk1DOHhOalV3TXk4eEx6VXhMekF2TVRjeUxqVTRMakUwTlM0MU5DOHdMakF3TUM4L0cwcWhfNmwwRWdybURyM01fWG0tMjY5MTlqYyZub2RlaWQ9MTM5OSZhdWN0aW9uaWQ9Njc2NDA0MDMwMTM3MzY4Mjc0MCZleGNoPXB1YiZzaWQ9NDMxNjYxNCZjaWQ9NjQ1NDI2MSZhY3Q9TGlJaUppUW9jSHhyUFN3dUpDTXFjSHhyS3k1d2ZHc2hJaW9xSkNNcWNIeHJPaXdrT1FzaVB3UWdQUU1pT1NRcmNIMCZncm91cD11cy1lYXN0JmJwPWRnX2JlamJiaSZwcm90b2NvbF92ZXJzaW9uPTEmYnV5ZXJDcmVhdGl2ZUlkPTY0NTQyNjEmY3ZpZD00JmFpZD02NzY0MDQwMzAxMzczNjgyNzQwJmFkdmVyaWQ9MjA1MTI0JmNkc3A9ZmFsc2Umb3B0b3V0PTAmbG10PTAmb2lkPTEwMDgxNiZjYWNoZUJ1c3Rlcj0xNTYxMDE0MDY4JnNraXBwYWJsZT0yJmNtcD02MTg5NzImc2VnX3NlbGY9Yms6MTA4NDc3NCxiazoxMDg0Nzc1LGJrOjUwMjg0Nixiazo1MDI4NDcsYms6NTAyODUwLGJrOjUwMjg1MyZhcHBfaWQ9Y29tLmxpbWUudmlkZW8ucGxheWVyJmFwcF9uYW1lPVBsYXllck9wZW5pbmdJbnRlclRpZXIyJnVhPU1vemlsbGEvNS4wJTIwJTI4TGludXglM0IlMjBBbmRyb2lkJTIwOC4xLjAlM0IlMjBMTS1RNzEwJTI4RkdOJTI5JTIwQnVpbGQvT1BNMS4xNzEwMTkuMDE5JTNCJTIwd3YlMjklMjBBcHBsZVdlYktpdC81MzcuMzYlMjAlMjhLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyUyOSUyMFZlcnNpb24vNC4wJTIwQ2hyb21lLzc0LjAuMzcyOS4xNTclMjBNbyZsYXRfbG9uZz0zNi4xNjU5MDElMkMtODYuNzg0NDAxJnV1aWQ9ZTU2Y2NmNDctMDIzNS00MjdlLWE1YjEtNWU4YmE4OGU3N2JhJm1kaWQ9ZTU2Y2NmNDctMDIzNS00MjdlLWE1YjEtNWU4YmE4OGU3N2JhJnNpdGVpZD0wJnBpZD0xNTc5NDEmaXA9MTcyLjU4LjE0NS41NCZwcm90PWh0dHBzJTNBJTJGJTJGJmNvdW50PTEmcHJpY2U9e1BTUE19XV0+PC9WQVNUQWRUYWdVUkk+CjxFcnJvcj48IVtDREFUQVtodHRwczovL2FrdHJhY2sucHVibWF0aWMuY29tL3RyYWNrP29wZXJJZD03JnA9MTU3OTQxJnM9NTU3MjI0JmE9MjE3MzkyMiZ3YT0yNDMmdHM9MTU2MTAxNDA2OCZ3Yz0xNjczNSZjcklkPTY0NTQyNjEmdWNyaWQ9MTczMDA2NzE5NjAwMzY3ODA5MzImaW1waWQ9QjVDRDU4QzctNkIwQi00MzEzLThBNTEtNzNGRjNFREYxNDYxJmFkdmVydGlzZXJfaWQ9NTk4MDkmZWNwbT02LjQxMDMwMCZlcj1bRVJST1JDT0RFXV1dPjwvRXJyb3I+CjxJbXByZXNzaW9uPjwhW0NEQVRBW2h0dHBzOi8vYWt0cmFjay5wdWJtYXRpYy5jb20vQWRTZXJ2ZXIvQWREaXNwbGF5VHJhY2tlclNlcnZsZXQ/b3BlcklkPTEmcHViSWQ9MTU3OTQxJnNpdGVJZD01NTcyMjQmYWRJZD0yMTczOTIyJmFkVHlwZT0xMyZhZFNlcnZlcklkPTI0MyZrZWZhY3Q9e1BTUE19JmtheGVmYWN0PXtQU1BNfSZrYWROZXRGcmVxdWVjeT0wJmthZHdpZHRoPTAma2FkaGVpZ2h0PTAma2Fkc2l6ZWlkPTk3JmtsdHN0YW1wPTE1NjEwMTQwNjgmaW5kaXJlY3RBZElkPTAmYWRTZXJ2ZXJPcHRpbWl6ZXJJZD0yJnJhbnJlcT0wLjEma3BibXRwZmFjdD17UFNQTX0mdGxkSWQ9NTg1NDYwNzQmcGFzc2JhY2s9MCZla2VmYWN0PXtQU1BNfSZla2F4ZWZhY3Q9e1BTUE19JmVrcGJtdHBmYWN0PXtQU1BNfSZzdnI9QklENDQwNjVVJmNySUQ9NjQ1NDI2MSZscHU9cGVyZmV0dGl2YW5tZWxsZS5jb20mdWNyaWQ9MTczMDA2NzE5NjAwMzY3ODA5MzImY2FtcGFpZ25JZD0xNjczNSZjcmVhdGl2ZUlkPTAmcGN0cj0wLjAwMDAwMCZ3RFNQQnlySWQ9MTAwODE2JndEc3BJZD0yNyZ3YklkPTQmd3JJZD0wJndBZHZJRD01OTgwOSZpc1JUQj0xJnJ0YklkPTJEMDIxRjdGLTBENjUtNDAxNi1COEI3LTk5MTBFOTIxQkZERCZpbXBySWQ9QjVDRDU4QzctNkIwQi00MzEzLThBNTEtNzNGRjNFREYxNDYxJm9pZD1CNUNENThDNy02QjBCLTQzMTMtOEE1MS03M0ZGM0VERjE0NjEmbW9iZmxhZz0xJmlzbW9iaWxlYXBwPTEmbW9kZWxpZD03Jm9zaWQ9MTgyJnVkaWR0eXBlPTEmY291bnRyeT1VUyZjbnRyeUlkPTIzMiZzZWM9MV1dPjwvSW1wcmVzc2lvbj4KPEltcHJlc3Npb24+PCFbQ0RBVEFbaHR0cHM6Ly9pbWFnZTgucHVibWF0aWMuY29tL0FkU2VydmVyL0ltZ1N5bmM/JmZwPTEmbXBjPTEwJnA9MTU3OTQxJmdkcHI9MCZnZHByX2NvbnNlbnQ9JnBtYz0tMSZwdT1odHRwcyUzQSUyRiUyRmltYWdlNC5wdWJtYXRpYy5jb20lMkZBZFNlcnZlciUyRlNQdWclM0ZwbWMlM0QtMSUyNnBhcnRuZXJJRCUzRDE1Nzk0MSUyNnBhcnRuZXJVSUQlM0QlMjhudWxsJTI5XV0+PC9JbXByZXNzaW9uPgo8SW1wcmVzc2lvbiAvPgo8Q3JlYXRpdmVzPgo8Q3JlYXRpdmUgaWQ9IjY0NTQyNjEiIC8+CjxDcmVhdGl2ZT4KPExpbmVhcj4KPFRyYWNraW5nRXZlbnRzPgo8VHJhY2tpbmcgZXZlbnQ9ImNyZWF0aXZlVmlldyI+PCFbQ0RBVEFbaHR0cHM6Ly9ha3RyYWNrLnB1Ym1hdGljLmNvbS90cmFjaz9vcGVySWQ9NyZwPTE1Nzk0MSZzPTU1NzIyNCZhPTIxNzM5MjImd2E9MjQzJnRzPTE1NjEwMTQwNjgmd2M9MTY3MzUmY3JJZD02NDU0MjYxJnVjcmlkPTE3MzAwNjcxOTYwMDM2NzgwOTMyJmltcGlkPUI1Q0Q1OEM3LTZCMEItNDMxMy04QTUxLTczRkYzRURGMTQ2MSZhZHZlcnRpc2VyX2lkPTU5ODA5JmVjcG09Ni40MTAzMDAmZT0xXV0+PC9UcmFja2luZz4KPFRyYWNraW5nIGV2ZW50PSJzdGFydCI+PCFbQ0RBVEFbaHR0cHM6Ly9ha3RyYWNrLnB1Ym1hdGljLmNvbS90cmFjaz9vcGVySWQ9NyZwPTE1Nzk0MSZzPTU1NzIyNCZhPTIxNzM5MjImd2E9MjQzJnRzPTE1NjEwMTQwNjgmd2M9MTY3MzUmY3JJZD02NDU0MjYxJnVjcmlkPTE3MzAwNjcxOTYwMDM2NzgwOTMyJmltcGlkPUI1Q0Q1OEM3LTZCMEItNDMxMy04QTUxLTczRkYzRURGMTQ2MSZhZHZlcnRpc2VyX2lkPTU5ODA5JmVjcG09Ni40MTAzMDAmZT0yXV0+PC9UcmFja2luZz4KPFRyYWNraW5nIGV2ZW50PSJtaWRwb2ludCI+PCFbQ0RBVEFbaHR0cHM6Ly9ha3RyYWNrLnB1Ym1hdGljLmNvbS90cmFjaz9vcGVySWQ9NyZwPTE1Nzk0MSZzPTU1NzIyNCZhPTIxNzM5MjImd2E9MjQzJnRzPTE1NjEwMTQwNjgmd2M9MTY3MzUmY3JJZD02NDU0MjYxJnVjcmlkPTE3MzAwNjcxOTYwMDM2NzgwOTMyJmltcGlkPUI1Q0Q1OEM3LTZCMEItNDMxMy04QTUxLTczRkYzRURGMTQ2MSZhZHZlcnRpc2VyX2lkPTU5ODA5JmVjcG09Ni40MTAzMDAmZT0zXV0+PC9UcmFja2luZz4KPFRyYWNraW5nIGV2ZW50PSJmaXJzdFF1YXJ0aWxlIj48IVtDREFUQVtodHRwczovL2FrdHJhY2sucHVibWF0aWMuY29tL3RyYWNrP29wZXJJZD03JnA9MTU3OTQxJnM9NTU3MjI0JmE9MjE3MzkyMiZ3YT0yNDMmdHM9MTU2MTAxNDA2OCZ3Yz0xNjczNSZjcklkPTY0NTQyNjEmdWNyaWQ9MTczMDA2NzE5NjAwMzY3ODA5MzImaW1waWQ9QjVDRDU4QzctNkIwQi00MzEzLThBNTEtNzNGRjNFREYxNDYxJmFkdmVydGlzZXJfaWQ9NTk4MDkmZWNwbT02LjQxMDMwMCZlPTRdXT48L1RyYWNraW5nPgo8VHJhY2tpbmcgZXZlbnQ9InRoaXJkUXVhcnRpbGUiPjwhW0NEQVRBW2h0dHBzOi8vYWt0cmFjay5wdWJtYXRpYy5jb20vdHJhY2s/b3BlcklkPTcmcD0xNTc5NDEmcz01NTcyMjQmYT0yMTczOTIyJndhPTI0MyZ0cz0xNTYxMDE0MDY4JndjPTE2NzM1JmNySWQ9NjQ1NDI2MSZ1Y3JpZD0xNzMwMDY3MTk2MDAzNjc4MDkzMiZpbXBpZD1CNUNENThDNy02QjBCLTQzMTMtOEE1MS03M0ZGM0VERjE0NjEmYWR2ZXJ0aXNlcl9pZD01OTgwOSZlY3BtPTYuNDEwMzAwJmU9NV1dPjwvVHJhY2tpbmc+CjxUcmFja2luZyBldmVudD0iY29tcGxldGUiPjwhW0NEQVRBW2h0dHBzOi8vYWt0cmFjay5wdWJtYXRpYy5jb20vdHJhY2s/b3BlcklkPTcmcD0xNTc5NDEmcz01NTcyMjQmYT0yMTczOTIyJndhPTI0MyZ0cz0xNTYxMDE0MDY4JndjPTE2NzM1JmNySWQ9NjQ1NDI2MSZ1Y3JpZD0xNzMwMDY3MTk2MDAzNjc4MDkzMiZpbXBpZD1CNUNENThDNy02QjBCLTQzMTMtOEE1MS03M0ZGM0VERjE0NjEmYWR2ZXJ0aXNlcl9pZD01OTgwOSZlY3BtPTYuNDEwMzAwJmU9Nl1dPjwvVHJhY2tpbmc+CjwvVHJhY2tpbmdFdmVudHM+CjxWaWRlb0NsaWNrcz4KPENsaWNrVHJhY2tpbmc+PCFbQ0RBVEFbaHR0cHM6Ly9ha3RyYWNrLnB1Ym1hdGljLmNvbS90cmFjaz9vcGVySWQ9NyZwPTE1Nzk0MSZzPTU1NzIyNCZhPTIxNzM5MjImd2E9MjQzJnRzPTE1NjEwMTQwNjgmd2M9MTY3MzUmY3JJZD02NDU0MjYxJnVjcmlkPTE3MzAwNjcxOTYwMDM2NzgwOTMyJmltcGlkPUI1Q0Q1OEM3LTZCMEItNDMxMy04QTUxLTczRkYzRURGMTQ2MSZhZHZlcnRpc2VyX2lkPTU5ODA5JmVjcG09Ni40MTAzMDAmZT05OV1dPjwvQ2xpY2tUcmFja2luZz4KPC9WaWRlb0NsaWNrcz4KPC9MaW5lYXI+CjwvQ3JlYXRpdmU+CjwvQ3JlYXRpdmVzPgo8RXh0ZW5zaW9ucz4KPEV4dGVuc2lvbj4KPE1ldGE+PCFbQ0RBVEFbbmFtZT1wbS1mb3JjZXBpeGVsO3Zlcj0xLjBdXT48L01ldGE+CjxQaXhlbCBsb2M9IjAiPgo8Q29kZSB0eXBlPSIxIj48IVtDREFUQVtodHRwczovL2Fkcy5wdWJtYXRpYy5jb20vQWRTZXJ2ZXIvanMvc2hvd2FkLmpzI1BJWCZwdGFzaz1EU1AmU1B1Zz0xJmZwPTEmbXBjPTEwJnU9JnA9MTU3OTQxJnM9NTU3MjI0JmQ9MiZjcD0wJnNjPTEmcnM9MCZvcz0xJmdkcHI9MCZnZHByX2NvbnNlbnQ9XV0+PC9Db2RlPgo8L1BpeGVsPgo8L0V4dGVuc2lvbj4KPC9FeHRlbnNpb25zPgo8L1dyYXBwZXI+CjwvQWQ+CjwvVkFTVD4K=]]></VASTAdTagURI><Impression/><Impression><![CDATA[https://use-trk.svr-algorix.com/imp?info===AZzR2ckNHZz1TYmlmJz0Te0FmJwIzM9gmJwgDN9cnJxIUQJ1zYhZSZtFmbfBHch1jbhZyMxADMz0DZpNnJxQjLwUjMuMzNuczM9AXa1ZSbus2bvJmchVWe51mLt92Y9QWdiZCMwUDM1cjM2UTM9QncmAjLw0TbhZCMuATPtZiM4kDOuATPtJmJx0TeiZiM9YGcmI1SV1zYmYzM1YTM9AnJlhTY1kTN0gDN0EDOykTYmhzM1QjMiZGZjhzM4QzM30TYmImZiZzYzkjMkFWOmNWZjlTY4EDN4kTMhZjY0QjYxMzY9Enc_==nc&price=${AUCTION_PRICE}]]></Impression><Impression><![CDATA[https://use-trk.svr-algorix.com/win?info===AZzR2ckNHZz1TYmlmJz0Te0FmJwIzM9gmJwgDN9cnJxIUQJ1zYhZSZtFmbfBHch1jbhZyMxADMz0DZpNnJxQjLwUjMuMzNuczM9AXa1ZSbus2bvJmchVWe51mLt92Y9QWdiZCMwUDM1cjM2UTM9QncmAjLw0TbhZCMuATPtZiM4kDOuATPtJmJx0TeiZiM9YGcmI1SV1zYmYzM1YTM9AnJlhTY1kTN0gDN0EDOykTYmhzM1QjMiZGZjhzM4QzM30TYmImZiZzYzkjMkFWOmNWZjlTY4EDN4kTMhZjY0QjYxMzY9Enc_==nc&price=${AUCTION_PRICE}]]></Impression><Creatives><Creative AdID=\"A188sKS9\"><Linear><TrackingEvents><Tracking event=\"start\"><![CDATA[https://trk.svr-algorix.com/vtrk?info===AZzR2ckNHZz1TYmlmJz0Te0FmJwIzM9gmJwgDN9cnJxIUQJ1zYhZSZtFmbfBHch1jbhZyMxADMz0DZpNnJxQjLwUjMuMzNuczM9AXa1ZSbus2bvJmchVWe51mLt92Y9QWdiZCMwUDM1cjM2UTM9QncmAjLw0TbhZCMuATPtZiM4kDOuATPtJmJx0TeiZiM9YGcmI1SV1zYmYzM1YTM9AnJlhTY1kTN0gDN0EDOykTYmhzM1QjMiZGZjhzM4QzM30TYmImZiZzYzkjMkFWOmNWZjlTY4EDN4kTMhZjY0QjYxMzY9Enc_==nc&vtype=start&price=${AUCTION_PRICE}]]></Tracking><Tracking event=\"firstQuartile\"><![CDATA[https://trk.svr-algorix.com/vtrk?info===AZzR2ckNHZz1TYmlmJz0Te0FmJwIzM9gmJwgDN9cnJxIUQJ1zYhZSZtFmbfBHch1jbhZyMxADMz0DZpNnJxQjLwUjMuMzNuczM9AXa1ZSbus2bvJmchVWe51mLt92Y9QWdiZCMwUDM1cjM2UTM9QncmAjLw0TbhZCMuATPtZiM4kDOuATPtJmJx0TeiZiM9YGcmI1SV1zYmYzM1YTM9AnJlhTY1kTN0gDN0EDOykTYmhzM1QjMiZGZjhzM4QzM30TYmImZiZzYzkjMkFWOmNWZjlTY4EDN4kTMhZjY0QjYxMzY9Enc_==nc&vtype=firstQuartile&price=${AUCTION_PRICE}]]></Tracking><Tracking event=\"midpoint\"><![CDATA[https://trk.svr-algorix.com/vtrk?info===AZzR2ckNHZz1TYmlmJz0Te0FmJwIzM9gmJwgDN9cnJxIUQJ1zYhZSZtFmbfBHch1jbhZyMxADMz0DZpNnJxQjLwUjMuMzNuczM9AXa1ZSbus2bvJmchVWe51mLt92Y9QWdiZCMwUDM1cjM2UTM9QncmAjLw0TbhZCMuATPtZiM4kDOuATPtJmJx0TeiZiM9YGcmI1SV1zYmYzM1YTM9AnJlhTY1kTN0gDN0EDOykTYmhzM1QjMiZGZjhzM4QzM30TYmImZiZzYzkjMkFWOmNWZjlTY4EDN4kTMhZjY0QjYxMzY9Enc_==nc&vtype=midpoint&price=${AUCTION_PRICE}]]></Tracking><Tracking event=\"thirdQuartile\"><![CDATA[https://trk.svr-algorix.com/vtrk?info===AZzR2ckNHZz1TYmlmJz0Te0FmJwIzM9gmJwgDN9cnJxIUQJ1zYhZSZtFmbfBHch1jbhZyMxADMz0DZpNnJxQjLwUjMuMzNuczM9AXa1ZSbus2bvJmchVWe51mLt92Y9QWdiZCMwUDM1cjM2UTM9QncmAjLw0TbhZCMuATPtZiM4kDOuATPtJmJx0TeiZiM9YGcmI1SV1zYmYzM1YTM9AnJlhTY1kTN0gDN0EDOykTYmhzM1QjMiZGZjhzM4QzM30TYmImZiZzYzkjMkFWOmNWZjlTY4EDN4kTMhZjY0QjYxMzY9Enc_==nc&vtype=thirdQuartile&price=${AUCTION_PRICE}]]></Tracking><Tracking event=\"complete\"><![CDATA[https://trk.svr-algorix.com/vtrk?info===AZzR2ckNHZz1TYmlmJz0Te0FmJwIzM9gmJwgDN9cnJxIUQJ1zYhZSZtFmbfBHch1jbhZyMxADMz0DZpNnJxQjLwUjMuMzNuczM9AXa1ZSbus2bvJmchVWe51mLt92Y9QWdiZCMwUDM1cjM2UTM9QncmAjLw0TbhZCMuATPtZiM4kDOuATPtJmJx0TeiZiM9YGcmI1SV1zYmYzM1YTM9AnJlhTY1kTN0gDN0EDOykTYmhzM1QjMiZGZjhzM4QzM30TYmImZiZzYzkjMkFWOmNWZjlTY4EDN4kTMhZjY0QjYxMzY9Enc_==nc&vtype=complete&price=${AUCTION_PRICE}]]></Tracking></TrackingEvents><VideoClicks><ClickTracking><![CDATA[https://use-trk.svr-algorix.com/clk?info===AZzR2ckNHZz1TYmlmJz0Te0FmJwIzM9gmJwgDN9cnJxIUQJ1zYhZSZtFmbfBHch1jbhZyMxADMz0DZpNnJxQjLwUjMuMzNuczM9AXa1ZSbus2bvJmchVWe51mLt92Y9QWdiZCMwUDM1cjM2UTM9QncmAjLw0TbhZCMuATPtZiM4kDOuATPtJmJx0TeiZiM9YGcmI1SV1zYmYzM1YTM9AnJlhTY1kTN0gDN0EDOykTYmhzM1QjMiZGZjhzM4QzM30TYmImZiZzYzkjMkFWOmNWZjlTY4EDN4kTMhZjY0QjYxMzY9Enc_==nc&price=${AUCTION_PRICE}]]></ClickTracking></VideoClicks></Linear></Creative></Creatives></Wrapper></Ad></VAST>"
                },
                "cid": "12"
            }
        ],
        "id": "c31b44b6a198418a9cecf9ad293c6bfb"
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

# MoPub Ad Tag

AlgoriX supports integration with MoPub as a Custom Network. If you’ve integrated the MoPub SDK already, you don’t need to write any extra code! Instead, you can place a Custom Network ad tag and target it to your existing inventory. AlgoriX ad tag has built in support for failing over to the next ad source.

# Step 1: Set up a Custom Network

  • Go to Networks
  • Add a New Network
  • Custom JS Network
  • Save Section
  • Go to Network Detail Page An image An image

# Step 2: Create a New Order

  • Click on the Orders tab in the header.
  • Click the Create Order button. An image
  • Enter a descriptive name for the order and set the Advertiser to “AlgoriX”. An image

# Step 3: Create a New Line Item

Use the following parameters in the Add a Line Item section.

  • Type: “Network”
  • Priority: 1
  • Name: Descriptive label that contains the parameters of running this ad tag
  • Network: “Custom Network”
  • Name: “AlgoriX Banner”
  • Custom HTML: Add the HTML tag provided by your AlgoriX account manager here.
  • Set the Delivery Speed option to “Spread Evenly”.
  • Leave other fields as their default values.

AlgoriX AdTag

Please contact your AlgoriX account manager to get your AlgoriX AdTag.

An image

Waterfall Priority settings

We recommend publishers to refrain from running AlgoriX ad tag on the last position of the waterfall. As this may result in discrepancies in impression numbers recorded in the AlgoriX dashboard.

  • Find the Ad Unit to which you connect the ad tag.
  • Check the box under the AD UNITS column. An image

Ad Unit supported

AlgoriX ad tag supports Medium rectangle, Banner and Fullscreen ONLY as defined in MoPub platform.

  • Remain it’s default value for GEO, connectivity and device targeting section.
  • Configure any custom targeting in the Advanced Targeting sections.
  • Click the Save and View button.

# DFP Ad Tag

Google Ad Manager is an ad server that can take your ad monetization one level up. If you’ve sign up for Google Ad Manager already, you can place AlgoriX tag as a third-party code and target it to your existing inventory. Also, if the AlgoriX network returns nothing, you can utilize passback tags to fill remnant ad inventories by passing down the ad requests to another ad networks.

# Step 1: Set up a new company

  • Go to Admin
  • Go to Companies
  • Click the New Company button and select the 'Advertiser' option
  • Enter the Name of the new company
  • Click Save

An image

# Step 2: Create New Order

  • Go to Delivery
  • Go to Orders
  • Click the New Order
  • Enter the Name of the new order
  • Select Advertiser option
  • Click Add Line Item button

An image

# Step 3: Create New Line Item

  • Select Display Ad
  • Enter the Name of the new line item
  • Select the priority you want from the drop-down menu Type
  • In the Expected creatives, add the sizes of line items i.e. 320×50. You can add more than one size here
  • Enter the Start time and End time to deliver ads
  • Move to the Add Targeting, Click Inventory
  • Include the ad inventories where you want to display targeted ads
  • Please set other configuration items as needed
  • Click Save

What is inventory?

You can find more details about Inventory on this page.

An image

An image

# Step 4: Create Ad Creative

  • Go to creatives, Click ADD CREATIVE button
  • Select the Target ad unit size from the drop-down menus
  • Click 'Third party' button
  • Enter the Name of the new creative
  • Paste JavaScript code provided by AlgoriX.
  • Click Save

AlgoriX AdTag

Please contact your AlgoriX account manager to get your AlgoriX AdTag.

An image

An image

WARNING

If you’re creating a new Line Item, you’ll have to Approve it. Otherwise, ads will not be served.

An image

# GPT Passbacks

AlgoriX ad tag has built in support for GPT Passbacks.The publisher can pass an ad request back from a NoAd-response to DFP by the onErrFn function.

  • Set up another ad unit of any other network in DFP
  • Please make sure the macros which be used in the passback ad unit had been added

TIP

Please pay attention to the comment in below code.

Example:

function onErrFn() {
    // TODO Handle not ad available
    console.log("not ad available");

    var googletag = undefined;
    googletag = googletag || {};
    googletag.cmd = googletag.cmd || [];
    (function () {
        var gads = document.createElement("script");
        gads.type = "text/javascript";
        gads.onload = gads.onreadystatechange = function () {
            if (gads.readyState && /loaded|complete/.test(gads.readyState)) {
                gads.onload = gads.onreadystatechange = undefined;
            }
            var __googletag = document.createElement("script");
            __googletag.innerHTML = [
                "googletag.cmd.push(function () { googletag.defineSlot('",
                // if AlgoriX network returns nothing,
                // we'll pass down the ad requests to the ad network B
                // another ad unit of ad network B in DFP.
                // i.e: "/6355419/Travel/Europe/France/Paris"
                "another ad unit of ad network B in DFP",
                "', [",
                "320, 50",
                "],'",
                "dojs644fcc755427439aa0f6e2fc4dbbaeef",
                "').addService(googletag.pubads());",
                // if any macro is used in the passback ad unit,
                // you can use the setTargeting function to add it here
                // i.e:
                // "googletag.setTargeting('ADVERTISING_IDENTIFIER_PLAIN', '%%ADVERTISING_IDENTIFIER_PLAIN%%')",
                "googletag.enableServices();googletag.display('",
                "dojs644fcc755427439aa0f6e2fc4dbbaeef",
                "');});"
            ].join("");
            document.body.appendChild(__googletag);
        }
        gads.src = "https://securepubads.g.doubleclick.net/tag/js/gpt.js";
        document.body.appendChild(gads);
    })();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

Use ad unit of AlgoriX as GPT

If the primary network returns nothing and you want to pass down the ad requests to AlgoriX network, please remember to pass additional parameter ADVERTISING_IDENTIFIER_PLAIN by use setTargeting function.

Example:

<script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script>
<div id="gpt-passback">
<script>
    window.googletag = window.googletag || {cmd: []};
    googletag.cmd.push(function() {
    googletag.defineSlot('AlgoriX AdUnit', [300, 250], 'gpt-passback')
        .addService(googletag.pubads())
        // %%ADVERTISING_IDENTIFIER_PLAIN%% is a necessary parameter for AlgoriX tag
        .setTargeting('ADVERTISING_IDENTIFIER_PLAIN', '%%ADVERTISING_IDENTIFIER_PLAIN%%');
    googletag.enableServices();
    googletag.display('gpt-passback');
    });
</script>
</div>
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# MAX Ad Tag

AlgoriX supports integration with AppLovin's MAX as a Custom Network. If you’ve integrated the MAX SDK already, you don’t need to write any extra code! Instead, you can place a Custom Network ad tag and target it to your existing inventory. AlgoriX ad tag has built in support for failing over to the next ad source.

The minimum supported Max SDK version is 11.0.0.

You can find more details about Max Js tag integration process on this page.

# Step 1: Set up on AlgoriX SSP

  • Get in touch with your AlgoriX account manager to create account on AlgoriX SSP .
  • Go to “Apps” to create app and ad placements

An image

Instead of adding multiple apps, you only need to create one app on our dashboard. Thus it doesn’t matter what you fill for new app page. Just add one app and save.

Under this app, add different ad placements for your apps/ad unit at different price points. It’s recommended to name the adslot in format of “appname_OS_ad format_price point”

eg. Ocrscanner_IOS_320 * 50Banner_Low/Mid/High, Ocrscanner_And_320 * 50Banner_0.2/0.5/0.8

An image

Because as suggested by Max, the JS Tag APP ID and Placement ID doesn’t need to be associated with the app you created on Max. One universal tag will work for all your apps, ad units with different price points on Max.

And by using relevant macros for accurate reporting, even though all the ad placements are created under one “app” level, our reports can still breakdown to the relevant bundle id/ad unit/ad placement id.

# Step 2: Set up a Custom Network

An image

  • Enter the network name and paste the AlgoriX ad tag in the Custom Network Tag field and Click ✓ Save

An image

AlgoriX AdTag

AlgoriX ad tag supports Banner,Interstitial,MREC as defined in Max platform. Please contact your account manager to get your AlgoriX AdTag.

# Step 3: Enable the Custom Network

  • Go to MAX > Mediation > Manage > Ad Units and select an ad unit where you want to add the AlgoriX network.
  • Enter the Placement ID and CPM Price that you created in the AlgoriX SSP and set Country Targeting as needed

An image An image An image

WARNING

Please make sure that the Placement ID is the same as the AdSlot ID of AlgoriX SSP

# Appendix

# IAB Category Type

value Description
IAB1 Arts & Entertainment
IAB2 Automotive
IAB3 Business
IAB4 Careers
IAB5 Education
IAB6 Family & Parenting
IAB7 Health & Fitness
IAB8 Food & Drink
IAB9 Hobbies & Interests
IAB10 Home & Garden
IAB11 Law, Gov’t & Politics
IAB12 News
IAB13 Personal Finance
IAB14 Society
IAB15 Science
IAB16 Pets
IAB17 Sports
IAB18 Style & Fashion
IAB19 Technology & Computing
IAB20 Travel
IAB21 Real Estate
IAB22 Shopping
IAB23 Religion & Spirituality
IAB24 Uncategorized
IAB25 Non-Standard Content
IAB26 Illegal Content

# Protocols

The following table lists the options for the various bid response protocols that could be supported by an exchange.

value Description
1 VAST 1.0
2 VAST 2.0
3 VAST 3.0
4 VAST 1.0 Wrapper
5 VAST 2.0 Wrapper
6 VAST 3.0 Wrapper
7 VAST 4.0
8 VAST 4.0 Wrapper
9 DAAST 1.0
10 DAAST 1.0 Wrapper

# Start Delay

The following table lists the various options for the video or audio start delay. If the start delay value is greater than 0, then the position is mid-roll and the value indicates the start delay.

value Description
> 0 Mid-Roll (value indicates start delay in second)
0 Pre-Roll
-1 Generic Mid-Roll
-2 Generic Post-Roll

# Linearity

The following table indicates the options for video linearity. “In-stream” or “linear” video refers to preroll, post-roll, or mid-roll video ads where the user is forced to watch ad in order to see the video content. “Overlay” or “non-linear” refer to ads that are shown on top of the video content. This OpenRTB table has values derived from the Inventory Quality Guidelines (IQG). Practitioners should keep in sync with updates to the IQG values.

value Description
1 Linear / In-Stream
2 Non-Linear / Overlay

# Playback Methods

The following table lists the various playback methods.

value Description
1 Initiates on Page Load with Sound On
2 Initiates on Page Load with Sound Off by Default
3 Initiates on Click with Sound On
4 Initiates on Mouse-Over with Sound On
5 Initiates on Entering Viewport with Sound On
6 Initiates on Entering Viewport with Sound Off by Default

# Playbackend

The following table lists the various modes for when playback terminates.

value Description
1 On Video Completion or when Terminated by User
2 On Leaving Viewport or when Terminated by User
3 On Leaving Viewport Continues as a Floating/Slider Unit until Video Completion or when Terminated by User

# Position

value Description
0 Unknown
1 Above the Fold
2 DEPRECATED - May or may not be initially visible depending on screen size/resolution.
3 Below the Fold
4 Header
5 Footer
6 Sidebar
7 Full Screen

# Device Type

value Description
0 unknown
1 Phone
2 Tablet
3 CTV
4 OTT
5 PC

# Language

value Description
zh Chinese
en English
ja Japanese
ko Korean
de German
fr French
pt Portuguese
it ltalian

# OS

value Description
0 Unknow
1 iOS
2 Android
3 Other(DEPRECATED)
4 Linux
5 MacOS
6 Windows
11 tvOS
12 Roku
13 Amazon
14 Microsoft
15 Samsung Smart TV
16 LG Smart TV
17 Sony Playstation
18 Vizio
19 Philips Smart TV
50 Tizen
51 KaiOS

# Companion Types

value Description
1 Static Resource
2 HTML Resource
3 iframe Resource

# API Frameworks

The following table is a list of API frameworks supported by the publisher.

value Description
1 VPAID 1.0
2 VPAID 2.0
3 MRAID-1
4 ORMMA
5 MRAID-2
6 MRAID-3

# Creative Attributes

The following table specifies a standard list of creative attributes that can describe an ad being served or serve as restrictions of thereof.

value Description
1 Audio Ad (Auto-Play)
2 Audio Ad (User Initiated)
3 Expandable (Automatic)
4 Expandable (User Initiated - Click)
5 Expandable (User Initiated - Rollover)
6 In-Banner Video Ad (Auto-Play)
7 In-Banner Video Ad (User Initiated)
8 Pop (e.g., Over, Under, or Upon Exit)
9 Provocative or Suggestive Imagery
10 Shaky, Flashing, Flickering, Extreme Animation, Smileys
11 Surveys
12 Text Only
13 User Interactive (e.g., Embedded Games)
14 Windows Dialog or Alert Style
15 Has Audio On/Off Button
16 Ad Provides Skip Button (e.g. VPAID-rendered skip button on pre-roll video)
17 Adobe Flash

# Assets Data Type

value Description
2 The description of ad.
12 The description of click button.
Other Click for more

# Err No and Msg

value Description
1000 Sucess
1001 Token error
1010 Request JSON Body cannot be parsed correctly
1011 Adslot obj has an error or doesn't exist
1012 User obj has an error or doesn't exist
1013 App obj has an error or doesn't exist
1014 Device obj has an error or doesn't exist
1015 Reg obj has an error or doesn't exist
2001 Have no ad


Copyright © 2021 AlgoriX. All Rights Reserved