Skip to main content
There are three ways to serve creator cards. They differ in who renders the cards and where the click link on your page points.
WidgetBackend + First-partyBackend (S2S)
Cards rendered byour script, in the browseryour serveryour server
Click link on your pageour tracking domainyour own domainour tracking domain
Click resolved bythe visitor’s browseryour server, through the resolve APIthe visitor’s browser
External ad links in your HTMLyesnoneyes
Setuppaste a snippetAPI fetch + a small relay endpointAPI fetch
Best forregular pages, quickest startpages that rank in search, ad-block-sensitive placementsserver-rendered pages where the link profile doesn’t matter

Widget

Paste one snippet where the cards should appear; rendering, impressions and clicks are handled for you. Layouts, themes and custom templates are covered in Widgets.

Backend (S2S)

Your server fetches creatives as JSON with the widget API key and builds its own HTML. Cards link to the ready-made tracking URLs from the response. Rules and examples: Widgets, Backend (S2S).

Backend + First-party

Server-side rendering like S2S, plus first-party click links: every link on your page stays on your own domain, and your server resolves each click through our API before redirecting the visitor. Why choose it:
  • Clean link profile. Your HTML contains no external ad links, so pages that rank in search carry no ad-network footprint.
  • Ad blockers can’t cut the click path. A same-origin link can’t be blocked without breaking the site itself.
  • You control the referrer. The page URL travels in the resolve call explicitly, and on the final redirect you decide what the destination site sees: a Referrer-Policy: no-referrer header hides your domain entirely.
Every click still goes through OnlyTraffic: the token in each card comes from us, and a click counts (and pays) only after your server resolves it.

How it works

1

Fetch creatives

Same request as Backend (S2S): call the widget endpoint from your server with the X-Api-Key header, forwarding the visitor’s uip, uua and page.
2

Render first-party links

Each creative includes a click_token. Link the card to your own route, for example https://yoursite.com/go?t=<click_token>. Don’t use click_url in this mode; the impression pixel (impression_url) works the same as in S2S.
3

Resolve the click

When a visitor hits your route, call the resolve endpoint server-to-server:
4

Redirect

The response contains the destination URL. Reply 302 Location: <url>. Optionally add Referrer-Policy: no-referrer so the destination site doesn’t see your domain.

What to send on every resolve

FieldRequiredWhat it is
tyesThe click_token from the creative
X-Api-Key headeryesYour widget API key; proves the call comes from your server
uipyesThe visitor’s IP address
uuayesThe visitor’s User-Agent
urefyesURL of the page the click happened on
asnnoThe visitor’s network ASN. On Cloudflare, expose ip.src.asnum with a Transform Rule header and forward it
countrynoISO2 override; normally resolved from uip
X-OT-Bot-Score headernoCloudflare bot score, when your plan provides it
X-OT-Verified-Bot headernoCloudflare verified-bot flag (1 or true)
uip, uua and uref must describe the visitor’s request to your site, not your server. Click validation, geo stats and uniqueness run on what you forward; clicks with missing or fabricated context are flagged and not paid. The optional fields let more of the fraud filtering work for your traffic, which keeps your placement attractive to advertisers.
Call the resolve endpoint from your server only, on every click, and never cache the response. One token resolves to one billable click; repeats redirect but don’t pay.

The response

  • url: where to redirect the visitor. Always present for a live token. null means the token expired: redirect to a page of your own instead.
  • billable: whether this click passed validation and counts toward earnings. Diagnostic only; redirect either way.
  • reason: why a click didn’t pay. Common values: duplicate (token already resolved), not_unique (same visitor and creator within the uniqueness window), stale_token, bot markers. ref_not_forwarded is a warning: the click still pays, but uref was empty and you should fix the integration.

Relay example

The route path (/go here) is your choice.
uref normally comes from the Referer header of the same-origin click. If your site sets a global no-referrer policy, append the page URL to your click links yourself (for example /go?t=...&p=<page URL>) and forward that value as uref. The widget form contains full copy-paste examples (page render plus relay) and a ready prompt for an AI assistant.

Which one to pick

  • The page ranks in search, or you want a clean outbound-link profile: Backend + First-party.
  • You render server-side and want the fastest backend setup: Backend (S2S).
  • Everything else: Widget.