Open data. Open APIs.
Everything the Network page shows is a JSON endpoint you can call without a key. Advertisers get a Conversions API with a pixel and server-to-server postbacks, and a posting API for Pulse. Publishers integrate with two lines of HTML.
Read the network.
Base URL https://affizy.network. JSON, cached server-side, 120 requests per minute per IP. Every response carries updated_at. Zones are identified by id only; no site names, wallet addresses or emails are ever exposed.
Network totals since launch: impressions, clicks, publishers, advertisers, zones, revenue paid, plus impressions_last_hour, avg_cpm and ctr for the last 7 days.
Last 24 hours: impressions, clicks, CTR, average CPM, USD paid to publishers, $AFZY dropped and wallets that received drops.
24 UTC hour buckets of impressions and clicks. The current hour is partial.
Share of impressions by zone category, last 7 days (top 5 + Other).
Share of impressions by creative size, last 7 days.
Latest deposits (on-chain with tx hash, or credited by the team), publisher payouts with tx hash, and hourly $AFZY drop batches.
Counts we can measure: zones, zones active in 7 days, funded campaigns, publishers paid in 30 days, payouts settled, drop batches in 24 h, deposit poll interval.
The ledger feed: newest impressions (zone id only), clicks, deposits, payouts, drops. Optional ?since=<cursor> returns only newer impressions.
Impressions available in the last 7 days for a category and/or size, with the per-day figure. The campaign builder uses it.
curl -s https://affizy.network/api/public/network/summary curl -s "https://affizy.network/api/public/inventory?category=Crypto&size=300x250" curl -s "https://affizy.network/api/public/events/recent?since=8580000"
loading…
Two lines of HTML.
Create a zone in the app, paste the tag where the ad should render. The script is async, a few KB, and loads after paint. data-refresh="60" rotates creatives every minute. HTML5 creatives are sandboxed iframes scaled to the container; images scale natively.
<script src="https://affizy.network/delivery.js"></script> <div class="affizy-ad" data-zone="YOUR_ZONE_ID"></div> <!-- optional: rotate every 60 s --> <div class="affizy-ad" data-zone="YOUR_ZONE_ID" data-refresh="60"></div>
Attribute signups, deposits and leads to the banner.
Every click leaves with a click id, ?afz_click=<id>, appended to your landing URL. Keep it (the pixel does this for you for 7 days) and send it back with the event. Keys are generated in the app, campaign → Conversions tab, one active key per advertiser, rotate any time.
curl -X POST https://affizy.network/api/v1/conversions \
-H "Authorization: Bearer afz_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"click_id": "9f1c…", // from ?afz_click on your landing page
"campaign_id": 62, // fallback when the click id is unknown
"event": "signup", // signup · deposit · lead · purchase · custom
"value_usd": 120,
"external_id": "order-8812", // idempotent per advertiser
"occurred_at": "2026-11-12T18:40:00Z"
}'How it behaves
Duplicate external_id → 200 with the existing conversion, never double-counted. Without a click id the conversion is recorded as direct on the campaign. The pixel variant lives in the same tab in the app: one line on the thank-you page, no code on your side.
Responses: 201 created · 200 duplicate · 400 validation · 401 bad key · 429 rate limit.
Publish to Pulse from a script.
Pulse is the social layer inside the network. The posting API uses the same key as the Conversions API. Each published post costs 1 $AFZY from the account's balance and accounts are limited to 2 API posts per UTC day.
curl -X POST https://affizy.network/api/v1/pulse/posts \ -H "Authorization: Bearer afz_live_YOUR_KEY" \ -F "text=New zone live on our site, paid per impression." \ -F "image=@banner.png" \ -F "external_id=post-2026-11-12-1"
Rules
text up to 600 characters, image JPEG/PNG/WEBP/GIF up to 5 MB, external_id makes the call idempotent.
Responses: 201 published · 200 duplicate · 402 not enough $AFZY · 429 daily quota. Available to advertiser accounts today, opening to every Pulse account next.