Salesforce

Ad API - POST method - Usage

« Go Back
Information
Ad API - POST method - Usage
Ad-API
Details

In this article

Related articles
Overview
Request methods (POST/GET)
Request types
Authentication
Headers
Ad request samples
Ad responses

Related articles

Overview

Equativ’s Ad API allows you to request and retrieve ads from Equativ using HTTP POST requests.

The Ad API can be used in the following scenarios:
  • server-side applications requesting ads from Equativ
  • in-app implementations without Equativ's in-app display SDK (NB: Equativ’s SDK is strongly recommended for convenience and full feature support)
  • any other environment (desktop, mobile web etc.) where client-side ad tags are not used (for more about ad tags, see Tagging guide)
The full reference of all parameters and objects of the HTTP POST Ad API is available here.

Request methods (POST/GET)

Equativ’s current Ad API uses HTTP POST requests which has many advantages compared to the GET Ad API which uses HTTP GET requests. This “GET” Ad API is still in place and fully functional but is not recommended because it will be deprecated in the long term.

Request types

Equativ’s Ad API supports the following HTTP POST request types:
  • Generic POST request (/genericpost) to request each format on the page sequentially (single instance); full reference of all parameters and objects available here; the corresponding call in the GET Ad API is called “Standard call”; read here for a comparison between Standard call and Onecall 
  • Onecall POST request (/call) to request all formats of the page in a single call (multi instance); full reference of all parameters and objects available here; read here for a comparison between Standard call and Onecall
  • Prebid POST request (/prebid/v1) to request ads in a client side header bidding context where Equativ is the bidder, not the ad server (see Header Bidding with Prebid.js - client-side integration for details about this case); if Equativ is the ad server (i. e. Holistic+), the Generic POST/Onecall POST request types must be used
Keep in mind
The responses (delivered ads) will differ depending on the format type (ad type) you are calling. Prior to calling ads, ask for confirmation that the format setup in the Equativ platform is correct (more about format creation here).  
 

Authentication

There is no dedicated authentication but any POST ad request must contain the following information:
  • the network Id - the ID of the network on Equativ’s system; any Equativ customer receives a dedicated network (work space) for inventory setup, campaign management, reporting etc.; special case: the network Id must not be added in case of instream video ad requests!
  • the domain - the ad request domain that the given network is running on

One way to determine both network Id and domain is to:
  • sign in to EMP
  • go to Administration > Websites & pages
  • select any page in the left pane
  • under Tags, expand the Generic function and check the sas.setup method; example: sas.setup({ networkid: 73, domain: "https://diff.smartadserver.com", async: true });

Headers

X-Forwarded-For header

The http header X-Forwarded-For is optional but strongly recommended — in particular in integrations where Equativ is being called server-side. In such server-side contexts, the proper setup of the X-Forwarded-For header ensures that Equativ gets the IP address of the end user, and not the IP of the server that is calling Equativ.
Sending multiple IPs in the X-Forwarded-For header (separated by comma) is possible but not recommended. If multiple IPs are sent, Equativ will consider the first (left most) IP address as the IP of the original client. 
Keep in mind
An error in the configuration of the “X-Forwarded-For” header can lead to a serious drop in revenue: for instance, the monetization may be stopped because the network is classified as invalid traffic; or a buyer may block some inventory since the erroneous IP address is seen as potentially malicious.

User agent

The user agent must be specified using the HTTP header User-Agent.
Keep in mind 
In server side integrations, any Equativ pixels/events fired must have the same user agent as the ad call.

In case of mobile in-app calls, using the User-Agent of the native browser of the device is strongly recommended. In case of iOS, this would be the User-Agent from a UIWebView or WKWebView. If the User-Agent differs too much from the native one, some targeting options may stop working.

Ad request samples

Generic POST ad request sample

POST https://<domain>/genericpost
{
   "timestamp":9623086048,
   "networkId":73,
   "siteId":1000025863,
   "pageId":1000018300,
   "master":"m",
   "noAdCallback":"sas.noad",
   "screen":{
      "height":800,
      "width":1280
   },
   "uid":123456,
   "appName":"appName-test_01",
   "bundleId":"bundId-tests01",
   "schain": "1.0,0!exchange1.com,1234,1,bid-request-1,publisher,publisher.com",
   "geolocation": {
       "latitude": 48.8584,
       "longitude": 2.2945
   },
   "ads":[
      {
         "formatId":"3569",
         "tagId":"sas_3569",
         "target":"foo=1",
         "headerBidding":{
 
         },
         "isLazy":true
      }
   ],
   "eids":[
      {
         "source":"id5-sync.com",
         "uids":[
            {
               "id":"ID5-55555",
               "atype":1
            }
         ]
      }
   ],
   "gdpr_consent":"CO3t7qmO3t7qmAKACAFRAxCMAP_AAAAAAAqIGPtV_T9fb2vj-_Z999tkeY1f97y3t-wjhgeMs-8NyZeX_B4Wr2MyvBX4JiQKGRgEunLBAQdlHGFcTQgAwIkFiTLMYk2MizNKJrJEilMbM2dYGG1Pn8XTuZCY70-tP__zv3-f-334GPEEmCpfAQJCWMBJNmlEKYEIVxAVIOASghGEg0sNCRQU7A4CPUACABAYAAQIAQAgohJBAAIAAElEQAgAwIBUARAIAAQAjQEIACJAEFgBIGAQACoGhYARRBKBIQYHBUcogQFSLRQQAA.IGPtV_T9fb2vj-_Z99_tkeY1f97y3t-wzhheMs-8NyZeX_B4Wv2MyvBX4JiQKGRgkunLBAQdtHGlcTQgBwIlViTLMYk2MjzNKJrJEmlsbO2dYGH9Pn8XT_ZKZ70-vv__7v3_f_334A"
}


Onecall POST ad request sample

POST https://<domain>/<network_id>/call
{
    "timestamp": 6013045295,
    "networkId": 73,
    "siteId": 1000025863,
    "pageId": 1000018300,
    "master": "s",
    "noAdCallback": "sas.noad",
    "screen": {
        "height": 1080,
        "width": 1920
    },
    "uid": 0,
    "appName": "",
    "bundleId": "",
    "schain": "",
    "ads": [
        {
            "formatId": 3569,
            "tagId": "sas_3569",
            "target": "foo=1",
            "headerBidding": {},
            "isLazy": false,
            "isAdRefresh": 0
        }
    ],
    "eids": [],
    "gdpr_consent": "CO-dUnkO-dUn9ADABBDEBDCsAP_AAH_AAAAAGNoRxC4UTSFAaGJZAstACAweQAQEAkAABBKAAaABCRCAcIwGkAAAEACAAAAAAAAEoAIAAABAACEAAAAAQIAAAAAMAAAABAAAIAIACAEAAAAAAAAICAAQAQAIAAAEAAEAgABAABCBiwAIAqFAEAQEhgSQBJQAgACEAABAAAAAAQgAAgAAkQAGCMAhAAAAAAAAAAAAAAAKACAAAAAAABAAAAAECAAAAACAAAAAAAAAACAAAAAAAAAAAAAAAAEAAAAAAABAABAIAAAAAQCQgAAMAAEAABQAAYAAHAACAAAkAAKAAA.YAAAAAAAAAA",
    "addtl_consent": "1~143.162.167.202.311.505.587.780.1126.1215.1364.1577.1750.3033",
    "partnerExtUids": {}
}


Prebid POST ad request sample

POST https://<domain>/prebid/v1
{
    "siteid": 1000025863,
    "pageid": 1000018300,
    "formatid": 3569,
    "bidfloor": 5,
    "ckid": 0,
    "tagId": "div-gpt-ad-1484867557615-0",
    "pageDomain": "https://demo.smartadserver.com/shared/smart/Rohan/PrebidOutstream.html?pbjs_debug=true",
    "transactionId": "31ec153f-9ac6-4d7c-b9dd-a2c40a09d91e",
    "timeout": 3000,
    "bidId": "2dcc254d61c886",
    "prebidVersion": "4.12.0",
    "schain": null,
    "isVideo": false,
    "mediaType": "video",
    "videoData": {
        "videoProtocol": 8,
        "playerWidth": 300,
        "playerHeight": 250,
        "adBreak": 2
    }
}



Ad responses

Generic POST ad response sample (minified)

var sas;(sas=sas||{}).utils=sas.utils||{},sas.utils.cdns||(sas.utils.cdns={"http:":"http://ced-ns.sascdn.com","https:":"https://ced-ns.sascdn.com"}),(sas=sas||{}).utils=sas.utils||{},sas.events=sas.events||{},sas.rev=sas.rev||20110214,function(){sas.utils.cdns?(sas.utils.cdns["http:"]&&0!=sas.utils.cdns["http:"].length||(sas.utils.cdns["http:"]="http://ak-ns.sascdn.com"),sas.utils.cdns["https:"]&&0!=sas.utils.cdns["https:"].length||(sas.utils.cdns["https:"]="https://ec-ns.sascdn.com")):sas.utils.cdns={"http:":"http://ak-ns.sascdn.com","https:":"https://ec-ns.sascdn.com"};var t=function(){};sas.utils.getIEVersion=function(){var t=navigator.userAgent.match(/(?:MSIE |Trident\/.*; rv:)(\d+)/);return t?parseInt(t[1]):void 0},sas.events.addEvent=function(t,s,a){if(t&&s&&a)return t.attachEvent?t.attachEvent("on"+s,a):t.addEventListener&&t.addEventListener(s,a,!1),{removeEvent:function(){t.detachEvent?t.detachEvent("on"+s,a):t.removeEventListener&&t.removeEventListener(s,a,!1)}}},sas.events.addLoadEvent=function(t,s){if(t&&s){var a="load",e=function(){return!0};(sas.utils.getIEVersion()<11||t==document)&&(a="readystatechange",e=function(){if(!t.readyState||"complete"==t.readyState||"loaded"==t.readyState||4==t.readyState)return!0});var n=sas.events.addEvent(t,a,function(){e()&&(n.removeEvent(),s.apply(this,arguments))})}},sas.utils.Latch=function(t){for(var s=[],a={},e=t=t||[],n=!1,i=0;i<e.length;i++)a[t[i]]={};var c=function(){if(!n){for(var t in a)if(!a[t].status)return;n=!0;for(var e=d(),i=0;i<s.length;i++)s[i].apply(this,e)}},d=function(){for(var t=[],s=0;s<e.length;s++)t.push(a[e[s]].result);return t};this.notify=function(t,s){a[t]&&(a[t].status=!0,a[t].result=s,c())},this.addListener=function(t){null!=t&&(n?t():s.push(t))},c()},sas.utils._libs=sas.utils._libs||{};var s=function(t,s){return"/"==t.charAt(t.length-1)&&(t=t.slice(0,-1)),"/"==s.charAt(0)&&(s=s.slice(1)),t+"/"+s},a=function(t){"string"==typeof t&&(t=[t]);for(var a="https:"==document.location.protocol?sas.utils.cdns["https:"]:sas.utils.cdns[document.location.protocol]||sas.utils.cdns["http:"],e=0;e<t.length;e++)t[e]=s(a,t[e]);return t};sas.utils.loadLinkCdn=function(t){t=a(t);for(var s=0;s<t.length;s++)i(t[s],!0)},sas.utils.loadScriptCdn=function(t,s){t=a(t),sas.utils.loadScript(t,s)};var e=Math.floor(1e6*Math.random()),n=1;sas.utils._callbacks=sas.utils._callbacks||{};var i=function(t,s,a,i){var c,d=(s?"link":"script")+"-"+e+"-"+n++,r=document.createElement(s?"link":"script");r.id=d,r.setAttribute("type",s?"text/css":"text/javascript"),r.setAttribute(s?"href":"src",t),s&&r.setAttribute("rel","stylesheet"),!s&&a&&r.setAttribute("async","true"),sas.utils._libs[t]={loaded:!1,callbacks:[]},null!=i&&sas.utils._libs[t].callbacks.push(i),sas.utils._callbacks[d]=(c=t,function(){sas.utils._libs[c].loaded=!0;for(var t=0;t<sas.utils._libs[c].callbacks.length;t++)sas.utils._libs[c].callbacks[t]()}),s||a?(document.getElementsByTagName("head")[0].appendChild(r),sas.events.addLoadEvent(document.getElementById(d),sas.utils._callbacks[d])):(document.write(r.outerHTML),document.write("<script type='text/javascript'>(function() { sas.utils._callbacks['"+d+"'](); })();<\/script>"))};sas.utils.loadScript=function(s,a){(a=a||{}).async=null==a.async||a.async;var e=a.onLoad||t;"string"==typeof s&&(s=[s]);var n=new sas.utils.Latch(s);n.addListener(e);for(var c=0;c<s.length;c++){var d=s[c],r=function(t){return function(){n.notify(t)}}(d);sas.utils._libs[d]?sas.utils._libs[d].loaded?n.notify(d):sas.utils._libs[d].callbacks.push(r):i(d,!1,a.async,r)}}}(),function(){var t=document.getElementById("sas_3569");if(t){var s=document.createElement("div");s.style.display="none",t.appendChild(s)}else document.write("<div id='sas_3569'></div>");var a=window.sas,e=window.sas_ajax||!0,n={id:1000111766,formatId:3569,tagId:"sas_3569",instanceIndex:1,customScript:"",forcedIframeWidth:0,forcedIframeHeight:0,oba:0,viewability:{enabled:!1,area:50,duration:1,viewUrl:"http://localhost/track/action?uii=222189430561767452&opid=f352705f-0230-4855-8f72-9ee1aee62c63&opdt=1612456315&pid=1000018300&iid=1000111766&cid=1000113905&key=viewcount&sid=9623086048",errorUrl:"http://localhost/track/action?uii=222189430561767452&opid=f352705f-0230-4855-8f72-9ee1aee62c63&opdt=1612456315&pid=1000018300&iid=1000111766&cid=1000113905&key=viewerror&sid=9623086048"},creatives:[{id:"1000113905",type:1,url:"http://creatives-dev.sascdn.com/diff/73/1000111766/Rebel_Alliance_logo.svg.png",countUrl:"",clickUrl:"http://localhost/click?imgid=1000113905&insid=1000111766&pgid=1000018300&uid=123456&uii=222189430561767452&acd=1612456315889&opid=f352705f-0230-4855-8f72-9ee1aee62c63&opdt=1612456315&pubid=0&tmstp=9623086048&tgt=%24dt%3d1t%3bfoo%3d1%3b%24mct%3d1t%3b%24hc&systgt=%24qc%3d0%3b%24ql%3dUnknown%3b%24qt%3d0_0_0t%3b%24dma%3d0%3b%24b%3d9999%3b%24o%3d99999%3b%24sw%3d1280%3b%24sh%3d768%3b%24mdwi%3d800t%3b%24mdhi%3d800t&envtype=2&imptype=0&pgDomain=https%3a%2f%2fdemo.smartadserver.com%2fshared%2fsmart%2fRohan%2fGeneric_post.html&go=http%3a%2f%2fwww.google.fr",clickTarget:"_blank",width:"1200",height:"1200",pixelRatio:"1",altText:"",creativeScript:'<script type=\'text/javascript\'>console.log("?cid=1000032339&adid=1000111766&zid=3569&ezC=idPage:1000018300")<\/script>\x3c!--campagneid: 1000032339, insertionid: 1000111766, formatid: 3569, pageid:1000018300, target: %24dt%3d1t%3bfoo%3d1--\x3e<a href="http://www.smartadserver.com>smartadserver</a<',flashVars:"",version:"",wMode:"Opaque",backupImage:{id:"",type:1,url:"",clickUrl:"",clickTarget:"",width:"",height:"",altText:""}}]};a.utils.getIEVersion()<10&&!e?a.banner.render(n,{async:e}):a.utils.loadScriptCdn("/diff/templates/js/sas/sas-browser.js",{async:e,onLoad:function(){a.utils.loadScriptCdn("/diff/templates/js/sas/sas-dom.js",{async:e,onLoad:function(){a.utils.loadScriptCdn("/diff/templates/js/banner/sas-banner-2.2.js",{async:e,onLoad:function(){a.banner.render(n,{async:e})}})}})}})}();

Onecall POST ad response sample

{
    "sas_3569": {
        "ScriptType": "script",
        "ScriptSrc": "http://localhost/h/nshow?siteid=1000025863&pgid=1000018300&fmtid=3569&tag=sas_3569&tmstp=6013045295&visit=S&acd=1612456024977&opid=2b595f90-89c4-48f1-b46f-095a65cf2f13&opdt=1612456024&ckid=5510311462752007445&async=1&pubid=0&systgt=%24qc%3d0%3b%24ql%3dUnknown%3b%24qt%3d0_0_0t%3b%24dma%3d0%3b%24b%3d9999%3b%24o%3d99999%3b%24sw%3d1920%3b%24sh%3d1080&tgt=%24dt%3d1t%3bfoo%3d1&pgDomain=https%3a%2f%2fwww.mypage.com%2f&noadcbk=sas.noad&gdpr=-1&gdpr_consent=CO-dUnkO-dUn9ADABBDEBDCsAP_AAH_AAAAAGNoRxC4UTSFAaGJZAstACAweQAQEAkAABBKAAaABCRCAcIwGkAAAEACAAAAAAAAEoAIAAABAACEAAAAAQIAAAAAMAAAABAAAIAIACAEAAAAAAAAICAAQAQAIAAAEAAEAgABAABCBiwAIAqFAEAQEhgSQBJQAgACEAABAAAAAAQgAAgAAkQAGCMAhAAAAAAAAAAAAAAAKACAAAAAAABAAAAAECAAAAACAAAAAAAAAACAAAAAAAAAAAAAAAAEAAAAAAABAABAIAAAAAQCQgAAMAAEAABQAAYAAHAACAAAkAAKAAA.YAAAAAAAAAA&addtl_consent=1%7e143.162.167.202.311.505.587.780.1126.1215.1364.1577.1750.3033&insid=1000111766,&capp=1,&mcrdbt=1,",
        "ScriptNoad": "http://localhost/h/aip?uii=222189430542762004&tmstp=6013045295&ckid=5510311462752007445&pubid=0&systgt=%24qc%3d0%3b%24ql%3dUnknown%3b%24qt%3d0_0_0t%3b%24dma%3d0%3b%24b%3d9999%3b%24o%3d99999%3b%24sw%3d1920%3b%24sh%3d1080&acd=1612456024977&envtype=0&opid=2b595f90-89c4-48f1-b46f-095a65cf2f13&opdt=1612456024&siteid=1000025863&tgt=%24dt%3d1t%3bfoo%3d1%3b%24hc&pgid=1000018300&fmtid=3569&statid=5&visit=s",
        "FormatId": 3569
    }
}

Javascript ad response

A javascript ad response is returned when
  • the used format type is "Web” or “App (SDK)”; more details on format types here
  • the output parameter is set to js
The response will be a standard javascript code which must be executed in a javascript compliant environment.

HTML ad response

An HTML ad response is returned when the output parameter is set to iframe.
For proper rendering, the code should be placed in an iframe or a webview. Alternatively, you can use the ad call as the source of the iframe.

HTML ad response sample 
<img src='http://[subDomain].smartadserver.com:80/h/aip?visit=m&amp;pubid=2&amp;statid=18&amp;ckid=386225520045089794&amp;tmstp=%5btimestamp%5d&amp;usrtgt=&amp;tgt=%3b%24dt%3d1t%3b%24dma%3d501%3b%24hc&amp;systgt=%24qc%3d1309588102%3b%24ql%3dmedium%3b%24qpc%3d10020%3b%24qpp%3d212%3b%24qt%3d152_1829_29211t%3b%24dma%3d501%3b%24b%3d12470%3b%24o%3d11061%3b%24sw%3d1920%3b%24sh%3d1200&amp;rfr=&amp;capp=0&amp;mcrdbt=0&amp;insid=5341644&amp;imgid=0&amp;pgid=677520&amp;fmtid=40531&amp;loguid=371361661459908448&amp;logdate=1467394692545&amp;sig=sCNtLLqNzn7UT8WEBIztAqbFvH7mGNUeF5npeM1IC0I%3d&amp;rtb=1&amp;rtbnid=1871&amp;rtbbid=371361661459908449&amp;rtbh=e8369927b30a065e264def603a1a4331230bf09a&amp;rtblt=636029914925446102&amp;rtbet=0' border='0' width='0' height='0' style='display:none'/><iframe src='https://ec-ns.sascdn.com:443/diff/rtb/handler/st.min.html?%7b%22bid%22%3a%22371361661459908449%22%2c%22adomain%22%3a%22justworks.com%22%2c%22page%22%3a%22677520%22%2c%22format%22%3a%2240531%22%2c%22crid%22%3a%2244_TTNVEBZYFJFFZBORJANMQH_300_250_1%22%2c%22dsp%22%3a%2231044%22%2c%22buyer%22%3a%223988%22%2c%22cid%22%3a%22TTNVEBZYFJFFZBORJANMQH%22%2c%22adid%22%3a%22%22%2c%22hash%22%3a%22-6438412222101877145%22%7d' width='0' scrolling='no' height='0' frameborder='0' style='display: none;'></iframe><iframe width="300" height="250" marginwidth="0" marginheight="0" hspace="0" vspace="0" frameborder="0" scrolling="no" allowTransparency="true" src="http://us-east.bidswitch.net/imp/3.99/BSWhttp_A_B_Ba.adroll.com_Bj_Bbsw-snippet.html_Cwidth_R300_Jheight_R250_Jadspace__eid_RSV2SF2P76NFIPN7N5SDPHX_Jsite__eid_RISRFVJ4CYZEJLCRYPCOWW4_Jadgroup__eid_RZAYW3JDZD5ENJB5KOI64GA_Jad__payload_R____HIAgIBkwHaAfDIAewAAV2QwWvTUADG09jhQUR21NNw4G3jJa9pkyJIS9u1XVdtWtc1OOPLy0sppMmWpMWDHiaC7CQogriLTodjFQce-gdYpKLvRfG4g3cPjrGTCLK1Yycv3-HjO__y-30__uSrSvZqq10s2iVJJSBTVdzzfmavN19VJfy5SWtGrhhraYqqQzWiGbVyuVjNyv1cqL2bTWyBVzOS19XS2myguVfDLksrv21W3s2nbLJN61vgiEOIhDoHclXYA6dp3Ac-3ccJL____uzR77U__Bz8efNsa9sOtjYk5bv5j-cKtkFN__rXZedPwZgvxgRiB333kdx2k5TV2MyeDe0f0juv7eX0EebhOzhWax26YbYb2785C-__L__fjNLXA__pGpF__eipYpEmDQr8Nz0SchN7mrj2OZ0hHL__sHjweHg8NOr8JSF__h2eP7O2Tbot03X0gCWf039PwazEIpf3uCmRGDEEsalYkowSyIQyIsTAEIg4BhQLssj0HjdtWgQphoyRAUQFg5himCJESEZWwiKSISRtj__HcB7-NvACZPvG6xNMFOSEwPtKrjn9MLYyPMH4p5M6qFxnf6PmrK53micvRShswfjnk1jfvMP72iXnGfx7hQazAGIFEShBBgYasKHEABFkxIbYkJFksWhqwiZ2eRwLkNUkwUnsMrHGqZqW3XZB23M2P2g_Jurl__macro_Rsparcmedia.com_Jwin__notif_Rbsw-winners-us-east-1-rtb.adroll.com_U2Fwin_U2Fb_U3Fpayload_U3DAQAzYzkzNGUzZTU3ZTE5M2I4OTk2MDAxODlkM2NmNWE1ZgAIYQFQZWMyLTU0LTIwNC0yMDYtMjA0LmNvbXB1dGUtMS5hbWF6b25hd3MuY29tAAhoAAhmAAh0ALBUVE5WRUJaWUZKRkZaQk9SSkFOTVFIAAhjARgyNzA2ODY1NDM1MzI1NTEwMzUxMDA4MzA0NzczMjEzNjY1NgAIYgYYX19ISGpRR1RBZG9BZThkNEFBQ0hPTFpVVkU1V1JVSmFXVVpLUmtaYVFrOVNTa0ZPVFZGSU9zNEFSYTlzUnNjUkF0Q1ZoLTJCLVBEU2dzLWx4N2JPcFpzRlM4TE0tc2NOQTRHb1pYWnBaRzl1WDNUTk9wak1fWk13TGpYTkFTUGFBQ05rWm1WaE9XSTRZMkZpTURJNVl6QTBPV0prTWpOaFlUaGhaamRtWlRWaU1UcHNjcXhmU210dTdWVWtBQWVZRDc0AAhw_U26price__cpm__dollars_U3D_Jcpm__macro_R_I_WAUCTION__PRICE_X_Jclick__macro_R_I_WCLICK__URL_AURLENCODE_X/ewebKqCJc1FtiXaINOXv-t9ba30s9eE_tlW576AmdKt_itp8ag3wPeJszePkApRg23iDpkUXb7f_BxuQHwLRzjZhTKkwI0hGIYUk7REIykg28oDT2oGL6veTLmOo5t1jnm08lxoiyXRhm97ds4tcmN3P9EyI4baRI4sGmUhFDw6uMTm79dUY3uCg98uJ4lps8GaFTBH0n_OA2ObQUE3bqj4xhXxti_Yqnp76_vVtdEtGxkchmstMbLHJAp0A14y3GaPVZd0AqUhgBboDIU_HIXVxhg8pSXinB56dDt_4ynZ3eR8SAl-y6UkUoS_piKmrOAmDAztc6EntxnfiU8CQKCo9-yZrU9fOT2Euwpnc04lgTUA47CAWMoQ6WdW0KoNWDgtkQcp64wnPQyAxdem-DGxPBhu0cQRQVhEbGsk7I3mGHmhrcF7oXfxNEHVQNvBGUCYMU1esP9e9Z3t-yH242_XiefLvvfuhu1RZ6E-X9NdhFW8ayuJxTg0sktgECbbco5_TDpWIFw_ZPG4x5HmS7TRfyFo4yKriMnY/"></iframe><img src="http://us-east-sync.bidswitch.net/sync?ssp=smartadserver&amp;dsp_id=44&amp;imp=1" alt=" " style="display:none"/>

 

JSON ad response

A JSON object (named ad) is returned when the used format type is “App (SDK)”; more details on format types here).

The format of the JSON ad response is the same for both Equativ SDKs (iOS / Android) and contains the following elements:
Key___________________________Type_________Description
htmlSTRINGthe HTML script, represented as a JSON-escaped string; may be a complete HTML document or a fragment;
returned only if scriptUrl is not defined
scriptUrlSTRINGthe URL pointing to the HTML script;
in online mode, returned only if html is not defined
impUrlsSTRINGone or more impression pixel URLs represented as a list of comma-separated strings; e.g.: impUrls: "pixelA.com,pixelB.com,pixelC.com"
returned only if the script itself does not call Equativ impression pixel(s)
clickUrlSTRINGoptional;
the clickURL which is used if the sas:click macro is set in the HTML5 creative
countClickUrlSTRINGthe clickURL; returned only if the script itself does not call Equativ click pixel
closePositionINTEGER as STRINGoptional;
in case of interstitial ads, indicates the position of the close button; not used if the creative calls the MRAID 1.0 useCustomClose(true) method; in this case, the creative is in charge of implementing the close button and should call the mraid.close() method itself.
  • 0 - top left
  • 1 - top right (default)
  • 2 - bottom left
  • 3 - bottom right
  • 4 - top center (only for Equativ Android SDK)
  • 5 - bottom center (only for Equativ Android SDK)
  • 6 - button center (only for Equativ Android SDK)
closeOnClickBOOLEAN as STRINGoptional;
in case of interstitial ads, indicates if the ad is closed when it was clicked by the user, e.g.: closeOnClick:"0"
closeAppearanceDelayINTEGER as STRINGoptional;
In case of interstitial ads, delays the appearance of the close button (in seconds); e.g.: closeAppearanceDelay:"5"
durationINTEGER as STRINGoptional;
in case of interstitial ads, indicates the duration of the interstitial ad before autoclose; -1 means infinite
portraitWidthINTEGER as STRINGoptional;
in case of a banner ads, indicates the width of the creative in portrait mode
portraitHeightINTEGER as STRINGoptional;
in case of a banner ads, indicates the height of the creative in portrait mode
openInAppBOOLEAN as STRINGoptional;
Android only; indicates whether to open the clickUrl in the postclick webview or in the Android webkit browser; e.g.: openInApp:"0"
confirmBeforeExitingBOOLEAN
as
STRING
iOS only; indicates whether to show an alert popup after a click on the ad to exit the app; e.g.: confirmBeforeExiting:"1"
redirectToThirdPartyBOOLEAN
as
STRING
optional;
iOS only; indicates if the URL should be handled by the postclick webview or by Safari
e.g.: redirectToThirdParty:"1"
transferTouchEventsBOOLEAN
as
STRING
optional; iOS only; more details here


JSON ad response sample
{
   "ad": {
       "formatType": 0,
       "scriptUrl": "",
       "html": "<!DOCTYPE html><html><head><meta name=\"viewport\" content=\"viewport-fit=cover, initial-scale=1.0,maximum-scale=1.0\"/><style type=\"text/css\">* {-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-focus-ring-color:rgba(0,0,0,0);-webkit-touch-callout:none;-webkit-user-select:none;}body {margin:0;background-color:#ffffff}img {position:absolute;top:0;left:0;}#p,#l{-webkit-transition:opacity 0.3s ease-in;}</style><script src=\"mraid.js\"></script><script>var c={fit:0,p:{url:\"https://creatives.sascdn.com/diff/92/8279630/banner(0).jpg\",click:\"http://www.smartadserver.com\"},l:{url:\"https://creatives.sascdn.com/diff/92/8279630/banner(0).jpg\",click:\"http://www.smartadserver.com\"}};</script><script src=\"https://ns.sascdn.com/diff/templates/js/mobile/mraid/banner/sas-mraid-banner-1.2.4.js\"></script></head><body></body></html>",
       "impUrls": "https://itx4.smartadserver.com/h/aip?uii=461443187108025542&tmstp=2338497313&ckid=0&pubid=12&systgt=%24qc%3d1314577168%3b%24ql%3dMedium%3b%24qpc%3d71640%3b%24qt%3d184_1346_275412t%3b%24dma%3d0%3b%24b%3d9999%3b%24o%3d99999%3b%24sw%3d1280%3b%24sh%3d768&acd=1612858265529&envtype=0&opid=4c1d554d-783b-47b4-86f3-4e04ee4e21cf&opdt=1612858265&siteid=104808&tgt=%24dt%3d1t%3b%24hc&vct=3&vrn=7.8.0&visit=V&statid=7&imptype=0&dntid=225D0EDC-A009-4D63-9414-8DFCB0B4EA51&capp=1&mcrdbt=0&insid=8279630&imgid=22743859&pgid=663262&fmtid=15140&isLazy=0&gdpr_consent=COu59xZOu59xZCsAAAENAPCAAAAAAAAAAAAAFoQAALQgAAAA.IFoEUQQgAIQwgIwQABAEAAAAO,",
       "viewCount": [
           {
               "trackUrl": "https://ww1.smartadserver.com/track/action?sid=2338497313&pid=663262&iid=8279630&cid=22743859&sib=0&key=viewcount",
               "duration": "1",
               "area": "50"
           }
       ],
       "countClickUrl": "https://ww1.smartadserver.com/h/cp?imgid=22743859&insid=8279630&pgid=663262&ckid=0&uii=461443187108025542&acd=1612858265529&opid=4c1d554d-783b-47b4-86f3-4e04ee4e21cf&opdt=1612858265&pubid=12&tmstp=2338497313&tgt=%24dt%3d1t%3b%24hc&systgt=%24qc%3d1314577168%3b%24ql%3dMedium%3b%24qpc%3d71640%3b%24qt%3d184_1346_275412t%3b%24dma%3d0%3b%24b%3d9999%3b%24o%3d99999%3b%24sw%3d1280%3b%24sh%3d768&envtype=0&imptype=0&clickcapp=1&dntid=225D0EDC-A009-4D63-9414-8DFCB0B4EA51&vct=3&vrn=7.8.0",
       "closePosition": "1",
       "redirectToThirdParty": "0",
       "clickUrl": "http://www.smartadserver.com",
       "deepLinkUrl": "",
       "portraitWidth": "1080",
       "portraitHeight": "150",
       "extraParameters": {
           "templateId": "84695",
           "advertiserId": "100502",
           "campaignId": "1047323",
           "insertionId": "8279630",
           "creativeId": "22743859"
       },
       "trackingScript": ""
   }
}

 

Video ad response

A video ad response is returned when a video object is declared and the output parameter is set to vast or a specific VAST version.
The response is a VAST XML following the VAST 4.x / VAST 3.0 / VAST 2.0 standard.
 

No ad response

A No ad response is returned when Equativ cannot find any ad for a given request. The format of this response depends on the requested ad type (web, in-app, video).

No ad response - web
  • response status is 200 OK;
  • content is a javascript sas_noad variable: sas_noad = true;
  • executing the callback onNoad returns an object which includes the formatID and tagID; for more about this callback, read chapter "Managing empty ad responses (noad)" in the Tagging guide
No ad response - in-app
  • response status is 200 OK;
  • response body is left empty
No ad response - video
  • response status is 200 OK;
  • content is a standard VAST Error XML:
    <?xml version="1.0" encoding="UTF-8"?>
    <VAST version="3.0">
           <Error>
                  <![CDATA[http://www.smartadserver.com/shim.gif]]>
           </Error>
     </VAST> 
  • in some cases, the video no ad response may return Equativ's user sync URL to improve the user synchronization rate 
     


Powered by