Programmatic broadsheet · Set in real time
adon3
The Real-Time Bidding Exchange
Integration Docs
Supply side · XML feed · OpenRTB 2.6 / 2.5

XML Feed Quick Start

Four steps take a new supply partner from credentials to earning traffic. Most feeds are live the same day, since the XML wire has no certification suite, only a smoke test.

1. Request a feed key

Feed keys are issued by the adon3 integration office, not through a dashboard. Write to [email protected] with:

  • Your company name and a technical contact
  • The domains, apps or subscriber lists your traffic comes from
  • The supply type you are selling: link, pop or push
  • The countries and daily volume you expect

You will be sent back:

  • One feed key per supply endpoint, bound to a single supply type
  • Your SSP id and a reporting auth key for reports.xml.adon3.com
  • A shared Microsoft Teams channel with your integration engineer

The feed key is a credential and it goes in the request path, so the request must be made from your server, never from the visitor's browser.

2. Make one request

Send the visitor's IP and user agent. Everything else is optional, but subid and rid are worth sending from the first call. Without them you cannot break reporting down by placement, and deduplication falls back to ip and ua.

Shell
curl -sS -G 'https://dsp.xml.adon3.com/v1/feed/9862b397ba3320149b94a05079597eb3' \
  --data-urlencode 'ip=203.0.113.44' \
  --data-urlencode 'ua=Mozilla/5.0 (iPhone; CPU iPhone OS 17_4 like Mac OS X)' \
  --data-urlencode 'subid=zone-4471' \
  --data-urlencode 'rid=8f2a1c30-6b4e-4d9a-9f11-2c7e3b5a8d40' \
  --data-urlencode 'referrer=https://gazette.example.com/markets'

A fill comes back as 200 with one or more ads. No fill is 204 with an empty body, and it is entirely normal. Expect it on a meaningful share of calls, especially on narrow geos.

JSON
{
  "rid": "8f2a1c30-6b4e-4d9a-9f11-2c7e3b5a8d40",
  "cur": "USD",
  "ads": [
    {
      "cid": "cr-88213",
      "url": "https://t9m6ci.xml.adon3.com/track/click?aid=7c41b0e9-2f8a-4d61-9c33-1ab5e77d0244&url=QzE4YjJhLTQ0NzEtb3BhcXVlLXRhcmdldA&did=26cbfffc-5313-4a6e-901f-556e056034f7&ctx=u77zOyuAFBNzUKZmkr2H7UN4Qxm_Wh8OV31KIkPl2gYgZJrClKtp2-3x",
      "price": "0.0142",
      "imp_url": "https://t9m6ci.xml.adon3.com/v1/imp/tj24Aw45P7AnbRSKRtYGQH-3mrKBh8VJtdrqd3DJiAxRL610ngFGm3pe"
    }
  ]
}

3. Serve it and fire the notice

Send the visitor to url exactly as we returned it. It carries the auction, the creative and your subid inside it. Rewriting or truncating it breaks click attribution and you will not be paid for the click.

Fire imp_url when the ad is actually shown. Impressions do not pay on their own, but a feed that requests far more ads than it shows gets throttled, so the notice is what proves your fill is real.

Shell
# Fire and forget
curl -sS -m 1 -o /dev/null 'https://t9m6ci.xml.adon3.com/v1/imp/tj24Aw45P7AnbRSKRtYGQH-3mrKBh8VJtdrqd3DJiAxRL610ngFGm3pe'

4. Check your figures

Clicks appear in reporting within a few minutes. Pull the first day once traffic is flowing:

Shell
curl -sS 'https://reports.xml.adon3.com/reports/ssp?sspId=ssp-90ab12cd&auth=ak_4d1f77c0e93a&date_from=2026-07-01&date_to=2026-07-01&dims=date,subid'

Watch clicks against billable_clicks. A gap under 5% is ordinary filtering. A gap above 20% means something upstream is sending traffic we do not count, and it is worth a conversation before it affects your payout.

Common first-day problems

  • Everything returns 204. Check the geo you are sending. Narrow or low-demand countries genuinely have no fill at some hours, so test with US traffic first.
  • 400 on every call. ua must be URL-encoded. Raw user agent strings contain characters that break the query string.
  • Clicks recorded but not billable. You are probably sending the visitor to a rewritten url, or firing imp_url for ads you never showed.
  • 403 on every call. The feed key's supply type does not match what you are sending. Push parameters against a link key are rejected outright.

Bid Endpoint documents every parameter. Response Formats covers the fields you get back for each of the three supply types.

sellers.json · schain enforced · OpenRTB 2.5 / 2.6 / 3.0 · XML
Printed on the Open Exchange
—  Integration Docs  —