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.

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 and a click_fallback. Link the card to your own route, for example https://yoursite.com/go?t=<click_token>&s=<click_fallback>. Don’t use click_url in this mode: clicks that go straight to click_url from a first-party widget are not paid. 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

The values must describe the visitor’s request to your site, not your server: click validation, geo stats and uniqueness all run on what you forward. A click without a valid uip or without uua is never paid (you’ll see no_uip / no_uua in the response). An empty uref only raises a warning; the click still pays. 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. A token yields at most one billable click: repeats, suspicious and non-unique clicks still redirect but don’t pay.

The response

  • url: where to redirect the visitor. Always present for a live token. null means the token expired and no s was passed: redirect to a page of your own instead. With s passed through, even expired tokens resolve to the creator’s page (logged, not paid).
  • 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), no_uip / no_uua (required context missing), 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

A quick smoke test with a click_token from a fresh widget response:
cURL
The relay route itself (the path, /go here, is your choice):
Node
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 for Node and PHP (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.