Annual Ads

Fejlesztői dokumentáció

Készítse el közvetlenül az Annual Ads platformon – hozzon létre hirdetőket, tegyen közzé hirdetéseket, indítson el fizetéseket, és kövesse nyomon a rangsort, mindezt kizárólag az API-n keresztül.

Tekintse meg a teljes árlistát

A 70%-ot megtartod a Connect-módban hirdető hirdetők által a hirdetéseikért fizetett összegből — amely automatikusan a pénztárcádba kerül. Az alábbiakban megnézheted, hogyan működik.

Alap-URL

https://api.adhub365.com
OpenAPI 3

Hitelesítés

Minden kérés hitelesítése az Authorization fejlécben szereplő titkos kulccsal történik, a Bearer séma alkalmazásával.

POST https://api.adhub365.com/v1/partner/ads
Authorization: Bearer sk_sandbox_...
Content-Type: application/json

Tesztkörnyezet és éles környezet

A tesztkörnyezeti és az éles környezeti kulcsok teljesen el vannak szigetelve egymástól — egy tesztkörnyezeti kulcs soha nem tudja olvasni vagy írni az éles környezeti kulcs által létrehozott adatokat, és fordítva.

Alkalmazási területek

Minden kulcs kizárólag azokra a hatályokra korlátozódik, amelyekkel kiadásra került — egy kulcs soha nem rendelkezik szélesebb hozzáféréssel, mint az a partnerfiók, amely létrehozta.

Az API-kulcsokat az Annual Ads csapata állítja ki a jóváhagyott partnerfiókok számára.

Partnerfiók létrehozása

Hirdetési bevételek megosztása

Ha az API-kulcsaid a saját felhasználóid számára hirdetői fiókokat hoznak létre (Connect mód – lásd a fenti „Hitelesítés” részt), akkor részesedést kapsz abból az összegből, amelyet ezek a hirdetők a hirdetéseikért fizetnek. Az alábbi megosztási arányt valós időben olvassa be ez a végpont, soha nem van rögzítve kódban, és teljesen független az oldal alján szereplő ajánlói jutaléktól.

GET https://api.adhub365.com/v1/partner-program
{
  "partner_share_percentage": 0.7,
  "platform_share_percentage": 0.3
}

70%

A tiéd

Az összeg automatikusan átutalásra kerül a beállított kifizetési pénztárcádba — nincs szükség kifizetési kérelemre.

30%

Az „Éves hirdetések” menüpontba vezet

Kiterjed a moderálásra, a tárhelyszolgáltatásra és arra a rangsorolási infrastruktúrára, amelyen a hirdetéseid megjelennek.

Hogyan működik?

  1. Az egyik „Connect” módban hirdető hirdetője az Ön integrációján keresztül fizet egy hirdetésért.
  2. A hirdetést ellenőrzik és jóváhagyják – akár automatikusan, akár a moderációs csapatunk által.
  3. A részesedésed sorba került az automatikus kifizetésre a pénztárcádba; ez ugyanazon a mechanizmuson alapul, mint az alábbi ajánlóprogram.
A részesedés soha nem jön létre, amíg a hirdetést ténylegesen jóvá nem hagyják — ha a moderálás elutasítja, akkor az adott kifizetéssel kapcsolatban semmilyen kötelezettség nem keletkezik. A már aktív hirdetésre történő utalás nem jár ilyen kockázattal, és a részesedés azonnal jóváírásra kerül.

Kifizetési feltételek

  • A partnerfiókodon be van állítva egy kriptovaluta-kifizetési pénztárca.
  • Az Ön részéről nincs szükség KYC-ellenőrzésre – a partnerfiókját már a létrehozáskor ellenőrizték.

Példa: a felhalmozott részvények lekérése

GET https://api.adhub365.com/v1/partner/ad-revenue/earnings
Authorization: Bearer sk_sandbox_...
{
  "shares": [
    {
      "id": "share_1a2b...",
      "payment_id": "pay_9f2a...",
      "ad_id": "ad_7c31...",
      "partner_amount_usd": 140.0,
      "platform_amount_usd": 60.0,
      "status": "paid",
      "payable_after": "2026-08-03T00:00:00Z",
      "paid_at": "2026-08-05T10:12:00Z"
    }
  ],
  "total_payable_pending_usd": 0.0,
  "total_payable_usd": 0.0,
  "total_processing_usd": 0.0,
  "total_paid_usd": 140.0
}

Végpontok

Számlák

POST/v1/partner/advertisers

Hozzon létre hirdetői fiókot valamelyik felhasználója nevében (Connect mód).

advertisers:write
GET/v1/partner/advertisers/{id}

Keresse meg az adott partner által létrehozott hirdetői fiókot.

advertisers:read

Hirdetések

POST/v1/partner/ads

Hozzon létre egy hirdetést. A hirdetés kezdetben vázlatként jelenik meg. Az opcionális advertiser_type, promotion_type, link_type és promoted_brand mezők az affiliate-, ajánlói-, alkotói vagy egyéni hirdetéseket írják le — lásd az alábbi megjegyzést.

ads:write
GET/v1/partner/ads/{id}

Keress meg egy hirdetést.

ads:read
PATCH/v1/partner/ads/{id}

A szerkesztői tartalom frissítése — cím, leírás, link, hirdető típusa, promóció típusa, link típusa és a promóciós márka. A kategória, a földrajzi terület és minden, amit a rangsoroló motor figyelembe vesz, itt soha nem módosítható.

ads:write
POST/v1/partner/ads/{id}/image

Töltsön fel közvetlenül egy hirdetési képet (JPEG/PNG/WebP, legfeljebb 5 MB). Ez az első befizetés előtt kötelező — lásd az alábbi „Fizetések” részt.

ads:write
POST/v1/partner/ads/{id}/image-url

A hirdetés képét URL-címről állítsa be a fájl feltöltése helyett – a szerver maga tölti le és helyezi fel a képet. Ugyanaz a követelmény: ezt az első kifizetés előtt kell megtenni.

ads:write
GET/v1/partner/ads/{id}/rank

Egy hirdetés aktuális rangja, kategóriája és földrajzi hatálya.

ads:read
GET/v1/partner/ads/{id}/stats

Egy hirdetés összes megtekintése és kattintása – az eltelt/hátralévő napok száma a GET /{id} kérésben már szereplő activated_at/expires_at mezőkből származik, a rangsor pedig a GET /{id}/rank kérésből.

ads:read

Fizetések

POST/v1/partner/payments

Indítson el egy kriptovaluta-fizetést első vásárlás vagy egyenlegfeltöltés céljából. Az első fizetési kísérlet 422-es hibakóddal végződik, hacsak a hirdetéshez még nincs feltöltve kép – lásd a fenti uploadAdImage/setAdImageUrl parancsokat.

payments:write
GET/v1/partner/payments/{id}

Ellenőrizze a fizetés állapotát.

payments:read

Ajánlások

POST/v1/partner/referrals

Hozzon létre egy ajánló linket.

referrals:write
GET/v1/partner/referrals/{code}/earnings

A státuszok szerinti bontásban megjelenített összesített ajánlási bevétel.

referrals:read

Hirdetési bevételek megosztása

GET/v1/partner/ad-revenue/earnings

A Connect módban általad létrehozott hirdetők által hirdetéseikért fizetett összeg 70%-os részesedése, státusz szerinti bontásban.

ad-revenue:read

Hozzáférési napló

GET/v1/partner/access-log

A kulcs teljes híváselőzményei – módszer, elérési út, IP-cím, időbélyeg.

Ott

Nyilvános végpontok

GET/v1/rankings?category={id}&geo={scope}

Egy kategória és egy földrajzi terület olvasási joggal rendelkező rangsorolása.

Nyilvános
GET/v1/tiers

A 7 beállított árkategória (küszöbérték, feloldott előnyök).

Nyilvános
GET/v1/referral-program

Az ajánlói lépcsőzetes rendszerre és a Vezetők Alapjára jelenleg érvényes jutalékok mértéke.

Nyilvános
GET/v1/partner-program

A jelenlegi hirdetési bevételek megosztása (Connect mód) közted és az Annual Ads között.

Nyilvános
GET/v1/search?q={query}

Természetes nyelvű keresés — egy olyan lekérdezést, mint például a „kenyai bútormarketingesek”, a megfelelő kategóriába és földrajzi területre irányítja, majd a találatok rangsorát pontos, valós sorrendben jeleníti meg.

Nyilvános

Partner- és ajánlói reklámozás

Az advertiser_type, promotion_type, link_type és promoted_brand mezők opcionálisak a /v1/partner/ads végpontra küldött POST és PATCH kérésekben — az Annual Ads szolgáltatás nem korlátozódik kizárólag a saját magukat hirdető vállalkozásokra. Ha a link_type értéke affiliate_link vagy referral_invitation_link, illetve a promotion_type értéke affiliate_offer vagy referral_opportunity, akkor az affiliate_terms_accepted értékének true-nak kell lennie, ellenkező esetben a kérés 422-es hibakóddal kerül elutasításra. A title hossza legfeljebb 35 karakter, a descriptioné pedig 80 karakter lehet – mindkettőt szerveroldalon érvényesítik, nem csak a vezérlőpult felhasználói felületén.

Mesterséges intelligencia eszközök

Minden hirdetői fiókhoz egy sor beépített mesterséges intelligencia (AI) eszköz tartozik – hirdetéstartalom- és vizuális elem-generátor, beszélgetőasszisztens, költségvetési tanácsadó és külső SEO-ellenőr –, amelyek használatát az éves átalánydíj mellett AI-kreditekkel lehet finanszírozni.

Ezek a hirdető saját irányítópultjának bejelentkezési adatai (egy munkamenet-hozzáférési token) révén működnek, nem pedig egy partner API-kulcs segítségével — egy harmadik fél által megvalósított integráció nem hívhatja meg őket a hirdető nevében.
POST/v1/advertisers/{id}/ai/assistant

Kérdezze meg az Annual Ads-t – egy lebegő beszélgetősegéd, amely kizárólag tájékoztató jellegű, és a fiókadatokhoz csak olvasási hozzáféréssel rendelkezik.

Nyilvános
POST/v1/advertisers/{id}/ai/creative-studio

Készítsen hirdetéscímet, leírást és kulcsszavakat egy rövid vállalati leírás alapján.

2 kredit(ek)
POST/v1/advertisers/{id}/ai/creative-studio/image

Készítsen egy hirdetési képet (PNG) ugyanabból a vállalkozási leírásból, amely már feltöltve van és készen áll a hirdetéshez való csatolásra.

8 kredit(ek)
POST/v1/advertisers/{id}/ai/budget-advisor

Egy adott rang megtartásának valószínűségére vonatkozó valódi statisztikai előrejelzés – soha nem pedig puszta becslés – 30, 90 és 365 napos időtávon.

1 kredit(ek)
POST/v1/advertisers/{id}/ai/seo-audit

Elemezze a hirdető saját külső weboldalát, és javasoljon konkrét SEO-fejlesztéseket.

2 kredit(ek)

Példa — hirdetési tartalom létrehozása

Ugyanez a kategória és üzleti leírás alapján működik az alábbi képgenerátor is.

POST https://api.adhub365.com/v1/advertisers/{advertiser_id}/ai/creative-studio
Authorization: Bearer <session access token>
Content-Type: application/json

{
  "category_name": "Furniture",
  "business_description": "We sell handmade oak dining tables"
}
{
  "title": "Handmade Oak Dining Tables — Built to Last",
  "description": "Solid oak dining tables crafted by hand, built to last a lifetime.",
  "keywords": ["oak furniture", "dining table", "handmade"],
  "credits_remaining": 8
}

Készítsen hozzá illő vizuális elemet ugyanahhoz a hirdetéshez:

POST https://api.adhub365.com/v1/advertisers/{advertiser_id}/ai/creative-studio/image
Authorization: Bearer <session access token>
Content-Type: application/json

{
  "category_name": "Furniture",
  "business_description": "We sell handmade oak dining tables"
}
{
  "visual_url": "https://cdn.uploadscenter.com/file_01m1...",
  "credits_remaining": 4
}

Widget

Helyezz el egy kész hirdetési egységet a saját webhelyeden – nincs szükség fejlesztésre, nincs szükség iframe-re sem. A szkript közvetlenül az oldalon belül, egy elkülönített Shadow DOM-ban jelenik meg, így a stílusai soha nem kerülnek át a webhelyedre, és a webhelyed stílusai sem kerülnek át az ő oldalára.

Add hozzá az oldaladhoz

<div
  class="annualads-widget"
  data-category="YOUR_CATEGORY_ID"
  data-geo="global"
  data-count="4"
  data-columns="2"
></div>
<script async src="https://adhub365.com/widget.js"></script>

Alapértelmezés szerint ez a kategória teljes nyilvános rangsorát jeleníti meg – a platformon szereplő összes hirdetőt, nem csak azokat, akiket te hoztál be. Ha csak azoknak a hirdetőknek a hirdetéseit szeretnéd megjeleníteni, akiket a Connect mód segítségével hoztál létre (vagyis azokat, akik a részesedésedet generálják), add hozzá a „data-partner” attribútumot a partner-azonosítóddal (ezt a saját irányítópultod „Fejlesztők” oldalán találod meg):

<div
  class="annualads-widget"
  data-category="YOUR_CATEGORY_ID"
  data-geo="global"
  data-partner="YOUR_PARTNER_ID"
></div>
<script async src="https://adhub365.com/widget.js"></script>

Ha a hirdetőid több kategóriába is tartoznak, hagyd ki teljesen a „data-category” attribútumot – ha csak a „data-partner” attribútumot használod, a widget az összes kategóriában megjelenő hirdetéseidet egyetlen rácsban jeleníti meg, így nem kell kategóriánként külön widget-blokkot létrehoznod:

<div
  class="annualads-widget"
  data-geo="global"
  data-partner="YOUR_PARTNER_ID"
></div>
<script async src="https://adhub365.com/widget.js"></script>

Szeretnél a tartalomban megjelenő hirdetés mellett egy lábléc-stílusú egységet is, amelyekben különböző hirdetések jelennek meg? Adj hozzá egy második widget-blokkot a data-layout="compact" attribútummal (egy hirdetés, amely kicsi „pill” méretűre összecsukható), és állítsd be a data-offset értéket arra a hirdetések számára, amennyit az első widget már megjeleníti:

<!-- in your content -->
<div
  class="annualads-widget"
  data-category="YOUR_CATEGORY_ID"
  data-geo="global"
  data-count="4"
  data-columns="2"
></div>

<!-- in your footer, showing different ads via data-offset -->
<div
  class="annualads-widget"
  data-category="YOUR_CATEGORY_ID"
  data-geo="global"
  data-layout="compact"
  data-offset="4"
></div>
<script async src="https://adhub365.com/widget.js"></script>

Tulajdonságok

data-categoryMegjelenítendő kategória-azonosító. Kötelező mező — kivéve, ha a „data-partner” be van állítva; ebben az esetben a mező kihagyása azt jelenti, hogy az adott partner hirdetései minden kategóriában megjelennek.
data-geoFöldrajzi hatály: helyi, regionális vagy globális. Alapértelmezés szerint globális.
data-countA megjelenítendő hirdetések száma. Az alapértelmezett érték 4.
data-columnsA rács oszlopainak száma. Alapértelmezés szerint 2.
data-layoutrács, lista vagy kompakt. Az alapértelmezett beállítás a rács. A „kompakt” beállítás esetén egyetlen hirdetés jelenik meg (a „data-count” értéket a rendszer figyelmen kívül hagyja), amelyhez tartozik egy gomb, amellyel a hirdetés egy kis „pill” méretűre összecsukható, illetve visszaállítható — ez egy lábléc-stílusú elem, amelyet a szkript maga soha nem rögzít fix pozícióba; a tartály div-et a saját oldaladon tetszésed szerint helyezheted el és formázhatod.
data-offsetAz átugrandó, legmagasabb rangú hirdetések száma. Alapértelmezés szerint 0. Lehetővé teszi, hogy ugyanazon az oldalon egy második widget (pl. egy kompakt widget a láblécben és egy rácsos widget feljebb az oldalon) különböző hirdetéseket jelenítsen meg ahelyett, hogy ugyanazt a hirdetést kétszer ismételné – adja meg azt a hirdetések számát, amennyit a másik widget már megjeleníti.
data-partnerA partner-azonosítód (a saját irányítópultod „Fejlesztők” oldalán találod meg). Opcionális — ennek hiányában a widget a kategória teljes nyilvános ranglistáját jeleníti meg, azaz a platformon szereplő összes hirdetőt. Ha megadod, akkor csak azok a hirdetések jelennek meg, amelyeket a „Connect” módon hoztál be — vagyis azok, amelyek ténylegesen részesedést generálnak számodra.

Bevételrészesedés

Hogyan jut el a partnerhez az ajánlási jutalék – a százalékos arány, a kifizetési mód és a feltételek.

GET https://api.adhub365.com/v1/referral-program
{
  "levels": [
    {
      "level": 1,
      "percentage": 0.1
    }
  ],
  "leaders_pool_percentage_of_gmv": 0.05,
  "founding_advertiser_pool_percentage_of_gmv": 0.05,
  "payout_verification_window_hours": 48,
  "min_payout_usd": 1
}

Nem egy meghatározott szám

A jutalék százalékos arányát mi állítjuk be, és ez változhat – ezért mindig az adott pillanatban érvényes értéket olvassa le ebből a végpontból, ne pedig egy értéket írjon be rögzítve.

Teljesen automatikus

Nincs kifizetési határidő. A rendszeres feladat kiszámítja a kifizetendő bevételeket, hirdetőnként csoportosítja azokat, majd automatikusan kifizeti őket, amint az alábbi feltételek mindegyike teljesül.

Kifizetési feltételek

  • A hirdető teljes kifizetendő bevétele eléri a minimális kifizetési összeget.
  • A felhasználó fiókjához be van állítva egy kriptovaluta-kifizetési pénztárca.
  • KYC-státuszuk hitelesítve van.

Példa: a felhalmozott nyereség leolvasása

GET https://api.adhub365.com/v1/partner/referrals/{code}/earnings
Authorization: Bearer sk_sandbox_...
{
  "code": "ann-2f8c",
  "earnings": [
    {
      "id": "earn_1a2b...",
      "payment_id": "pay_9f2a...",
      "amount_usd": 30.0,
      "status": "paid",
      "payable_after": "2026-08-01T00:00:00Z",
      "paid_at": "2026-08-03T14:22:00Z"
    }
  ],
  "total_payable_pending_usd": 0.0,
  "total_payable_usd": 0.0,
  "total_processing_usd": 0.0,
  "total_paid_usd": 30.0
}

Árkategóriák (élő)

Ezt az értéket az adott végpontról olvassa be élőben — soha ne írja be ezeket az értékeket kódba, mivel azok a mi oldalunkon változhatnak. Ahelyett, hogy egy „ingyenes mennyiség” mezőt használnál, készíts egy árkategória-választót a saját felhasználóid számára: minden feltüntetett ár már pontosan azt az összeget jelenti, amelyet a fizetés létrehozásakor el kell küldeni, és az itt megjelenő, elérhetővé vált előnyök pontosan megmutatják a felhasználóknak, hogy mit kapnak az adott árért, így olyan árat választhatnak, amelyet megértenek, ahelyett, hogy találgatniuk kellene egy számot.

TierÁrFeloldások
Bronze$50.00

Basic visibility

Silver$300.00

Clickable link unlocked

Kattintható link
Gold$500.00

Animation unlocked

Kattintható linkAnimáció
Platinum$1,000.00

Enhanced exposure

Kattintható linkAnimáció
Diamond$2,500.00

Premium placement

Kattintható linkAnimáció
Elite$5,000.00

Top-tier visibility

Kattintható linkAnimáció
Legendary$10,000.00

Maximum visibility & branding

Kattintható linkAnimáció

Sávszélesség-korlátozások

A kérések száma kulcsanként és percenként korlátozott. Minden hitelesített válasz tartalmazza az X-RateLimit-Limit, X-RateLimit-Remaining és X-RateLimit-Reset fejléceket; a korlát túllépése esetén a rendszer 429 Too Many Requests hibakódot ad vissza, Retry-After fejléccel.

IP-engedélyezési lista

Opcionális, partnerenként. Amíg nem adsz hozzá bejegyzést, a kulcsaid bármely IP-címről érkező kéréseket elfogadnak — az első bejegyzés az adott partner összes kulcsát kizárólag engedélyezett listára állítja át.

Webhookok

Minden webhookot HMAC-SHA256-tal írnak alá egy olyan titkos kulcs segítségével, amelyet egyszer, a létrehozáskor állítanak ki — ellenőrizze az aláírást, mielőtt megbízik a hasznos adatban. Az események kizárólag annak a partnernek kerülnek továbbításra, amelyik a kapcsolódó hirdető tulajdonosa.

payment.succeededA fizetés megerősítve.
payment.refundedA visszatérítés megtörtént.
ad.activatedA hirdetés automatikusan vagy az adminisztrátor általi ellenőrzés után válik aktívvá.
invoice.issuedKiadásra kerül egy számla.
referral.payout.completedEgy ajánlási jutalék kifizetési státuszt ér el.
referral.payout.failedEgy ajánlási kifizetési tétel hiba miatt nem sikerül a szolgáltatónál — a bevételek visszakerülnek a kifizetendő összegek közé, és a rendszer újra megpróbálja feldolgozni őket.
rank.changedA hirdetés rangja változik – többek között akkor is, ha ezt egy másik hirdető befizetése okozza.
ad.expiring_soon30, 7 vagy 1 nappal a hirdetés lejárta előtt.
partner_ad_revenue.payout.completedEgy hirdetési bevétel-megosztási kifizetés „kifizetett” státuszt ér el.
partner_ad_revenue.payout.failedA hirdetési bevételek megosztásából származó kifizetési tétel a szolgáltatónál sikertelenül zárul — a részesedések visszakerülnek a kifizetendő összegek közé, és a rendszer újra megpróbálja feldolgozni őket.

Szoftverfejlesztő készletek

A hivatalos JavaScript/TypeScript és Python SDK-k, amelyek ugyanebből az API-leírásból készülnek, tervben vannak, de még nem jelentek meg — addig kérjük, közvetlenül az HTTP API-t használja.

Gyors útmutató

Még nincs SDK — ezek közvetlenül az HTTP API-t hívják meg, és már ma is bármilyen programozási nyelven működnek.

cURL

curl -X POST https://api.adhub365.com/v1/partner/ads \
  -H "Authorization: Bearer sk_sandbox_..." \
  -H "Content-Type: application/json" \
  -d '{"advertiser_id":"adv_9f2a...","category_id":"cat_furniture","geo_scope":"local","title":"..."}'

JavaScript

await fetch("https://api.adhub365.com/v1/partner/ads", {
  method: "POST",
  headers: {
    Authorization: "Bearer sk_sandbox_...",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    advertiser_id: "adv_9f2a...",
    category_id: "cat_furniture",
    geo_scope: "local",
    title: "...",
  }),
});

Python

import requests

requests.post(
    "https://api.adhub365.com/v1/partner/ads",
    headers={"Authorization": "Bearer sk_sandbox_..."},
    json={
        "advertiser_id": "adv_9f2a...",
        "category_id": "cat_furniture",
        "geo_scope": "local",
        "title": "...",
    },
)