addDuo

Integration docs

Everything you need to show addDuo ads, test safely, and connect programmatically.

1. Add the ad tag

Load the tag once per page, anywhere. Then place an <ins> element where each ad should appear, using the unit ID from your console.

<script async src="https://addduo.devlk.com/tag/addduo.js"></script>

<ins class="addduo" data-unit="YOUR_UNIT_ID"></ins>

The tag is asynchronous and never blocks your page. Each ad renders in an iframe sandboxed without allow-same-origin, so it cannot read your page, your cookies or your visitors' data. Empty slots collapse; add data-collapse="false" to keep the space. Call addduo.refresh() after inserting slots dynamically.

2. Test with official test units

Test units always return a labelled test ad, record impressions and viewability, and are never billed. Use them during development so you never serve real ads or spend real budget.

Unit IDFormatSize
test-300x250Banner300×250
test-728x90Banner728×90
test-320x50Banner320×50
test-nativeNative300×250
test-videoVideo640×360

See them live on the test page.

3. Authorise addDuo in ads.txt

Buyers only bid on inventory that the site's /ads.txt authorises. Add this line, using the seller ID shown in your console:

addduo.devlk.com, pub-XXXXXXXX, DIRECT

We check it daily. Our list of sellers is public at /sellers.json.

The tag reads the IAB TCF v2 API (__tcfapi), the US Privacy API (__uspapi) and the browser's Global Privacy Control signal. Without an explicit opt-in, ads are contextual only and no identifier is stored. Sri Lankan sites without a CMP can use our lightweight PDPA opt-in banner. Include it before the tag:

<script src="https://addduo.devlk.com/tag/cmp.js" data-privacy-url="/privacy"></script>

Sites that serve EU/EEA visitors should use an IAB-registered TCF CMP. Mark sites for children as child-directed in the console; they only ever receive non-personalised ads.

5. Video (VAST 4.2)

For video units, point your player's ad tag URL at:

https://addduo.devlk.com/vast?u=YOUR_VIDEO_UNIT_ID

An empty <VAST> response means no fill. Quartile events and viewable impressions (50% in view for 2 seconds) are reported through the tracking URLs in the response.

6. Conversions (CPA campaigns)

Clicks on CPA campaigns land with an addduo_click parameter. When the visitor converts, call this from your server within 30 days (your postback key is on the Wallet page):

curl "https://addduo.devlk.com/t/conv?click=CLICK_ID&key=YOUR_POSTBACK_KEY"

7. Reporting API

Create a token under Settings, then:

curl -H "Authorization: Bearer adk_…" \
  "https://addduo.devlk.com/api/v1/reports?from=2026-09-01&to=2026-09-28&group=day"

Publishers can group by day, site or unit; advertisers by day or campaign. Limit: 120 requests per minute.

8. OpenRTB 2.6 (exchanges and DSPs)

Buying addDuo inventory: we send OpenRTB 2.6 bid requests with source.schain (asi addduo.devlk.com), regs.gdpr, regs.us_privacy and regs.coppa. First-price auction (at=1), USD, 150 ms default tmax. Win and billing notices support ${AUCTION_PRICE}.

Selling to addDuo advertisers: partner exchanges POST bid requests to https://addduo.devlk.com/openrtb/2.6/bid with their bearer token. We only bid when the request carries a supply chain ending at your exchange and the site's ads.txt authorises your seller ID. No-bids are 204, or 200 with an nbr reason code.