Annual Ads

Dokumentácia pre vývojárov

Vytvárajte priamo na platforme Annual Ads – pridávajte inzerentov, zverejňujte reklamy, iniciujte platby a sledujte pozíciu v rebríčku, a to všetko prostredníctvom API.

Pozrite si kompletnú cenovú tabuľku

Zostáva vám 70 % z toho, čo vaši inzerenti v režime Connect platia za svoje reklamy – suma sa automaticky pripíše do vašej peňaženky. Nižšie si môžete pozrieť, ako to funguje.

Základná URL adresa

https://api.adhub365.com
OpenAPI 3

Overenie identity

Každá požiadavka sa overuje pomocou tajného kľúča v hlavičke „Authorization“ s využitím schémy „Bearer“.

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

Testovacie prostredie a produkčné prostredie

Kľúče v testovacom prostredí a v produkčnom prostredí sú od seba úplne izolované – kľúč v testovacom prostredí nikdy nemôže čítať ani zapisovať údaje vytvorené kľúčom v produkčnom prostredí a naopak.

Rozsahy

Každý kľúč je obmedzený na rozsahy, s ktorými bol vydaný – kľúč nikdy nemá širší prístup ako partnerský účet, ktorý ho vytvoril.

Tím Annual Ads vydáva kľúče API schváleným partnerským účtom.

Vytvorte partnerský účet

Podiel na príjmoch z reklamy

Ak vaše API kľúče vytvárajú reklamné účty pre vašich vlastných používateľov (režim Connect – pozri časť „Overovanie“ vyššie), získavate podiel z čiastok, ktoré títo inzerenti platia za svoje reklamy. Nižšie uvedené rozdelenie sa načíta v reálnom čase z tohto istého koncového bodu, nikdy nie je pevne zakódované a je úplne oddelené od provízie za odporúčanie, ktorá je uvedená nižšie na tejto stránke.

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

70%

Je to na tebe

Peniaze sa automaticky vyplácajú do vašej nastavenej peňaženky na výplaty – nie je potrebná žiadna žiadosť o výber.

30%

Prejsť na ročné reklamy

Zahŕňa moderovanie, prevádzku a infraštruktúru pre hodnotenie, na ktorej sa zobrazujú vaše reklamy.

Ako to funguje

  1. Jeden z vašich inzerentov v režime Connect zaplatí za reklamu prostredníctvom vašej integrácie.
  2. Inzerát je skontrolovaný a schválený – buď automaticky, alebo našim tímom moderátorov.
  3. Váš podiel je zaradený do fronty na automatickú výplatu do vašej peňaženky, a to rovnakým spôsobom ako v prípade nižšie uvedeného referenčného programu.
Podiel sa nikdy nevytvorí skôr, ako bude reklama skutočne schválená – ak ju moderátori zamietnu, z danej platby sa nič nevypláca. Dobitie už aktívnej reklamy so sebou takéto riziko nenesie a podiel sa prerozdelí okamžite.

Podmienky výplaty

  • Na vašom partnerskom účte je nastavená peňaženka na výplatu kryptomien.
  • Z vašej strany nie je potrebné žiadne overenie totožnosti (KYC) – váš partnerský účet bol overený už pri jeho vytvorení.

Príklad: načítanie počtu nahromadených akcií

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
}

Koncové body

Účty

POST/v1/partner/advertisers

Vytvorte účet inzerenta v mene jedného zo svojich používateľov (režim Connect).

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

Vyhľadajte účet inzerenta, ktorý vytvoril tento partner.

advertisers:read

Reklamy

POST/v1/partner/ads

Vytvorte reklamu. Spočiatku má status „návrh“. Voliteľné polia advertiser_type, promotion_type, link_type a promoted_brand opisujú partnerskú, odporúčaciu, tvorcovskú alebo individuálnu reklamu – pozrite si poznámku nižšie.

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

Vyhľadajte inzerát.

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

Aktualizujte redakčný obsah – názov, popis, odkaz, typ inzerenta, typ propagácie, typ odkazu a propagovanú značku. Kategóriu, geografické údaje a všetky údaje, ktoré číta systém hodnotenia, tu nemožno nikdy zmeniť.

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

Nahrajte obrázok inzerátu priamo (formát JPEG/PNG/WebP, maximálne 5 MB). Je to potrebné pred prvou platbou – pozrite si časť o platbách nižšie.

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

Nastavte obrázok reklamy pomocou URL namiesto nahratia súboru – server ho sám stiahne a umiestni na svoj server. Platí rovnaká podmienka: je potrebné to urobiť pred prvou platbou.

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

Aktuálne umiestnenie, kategória a geografický rozsah reklamy.

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

Celkový počet zobrazení a kliknutí na reklamu — počet uplynulých/zostávajúcich dní pochádza z polí „activated_at“ a „expires_at“, ktoré sú už obsiahnuté v požiadavke GET /{id}, a pozícia v rebríčku pochádza z požiadavky GET /{id}/rank.

ads:read

Platby

POST/v1/partner/payments

Spustite platbu v kryptomene za prvý nákup alebo dobitie kreditu. Prvá platba skončí chybou 422, pokiaľ reklama ešte neobsahuje obrázok – pozri vyššie uvedené funkcie uploadAdImage/setAdImageUrl.

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

Skontrolujte stav platby.

payments:read

Odporúčania

POST/v1/partner/referrals

Vytvorte odporúčací odkaz.

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

Kumulatívne výnosy z odporúčaní, rozdelené podľa statusu.

referrals:read

Podiel na príjmoch z reklamy

GET/v1/partner/ad-revenue/earnings

Váš 70 % podiel z čiastok, ktoré inzerenti, ktorých ste vytvorili v režime Connect, zaplatili za svoje reklamy, rozdelený podľa stavu.

ad-revenue:read

Protokol prístupov

GET/v1/partner/access-log

Úplná história volaní pre tento kľúč – metóda, cesta, IP adresa, časová pečiatka.

Tam

Verejné koncové body

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

Poradie s právom iba na čítanie pre danú kategóriu a geografickú oblasť.

Verejné
GET/v1/tiers

7 nastavených cenových úrovní (prahová hodnota, odomknuté výhody).

Verejné
GET/v1/referral-program

Percentá provízií, ktoré sú v súčasnosti platné pre kaskádový systém odporúčaní a program Leaders Pool.

Verejné
GET/v1/partner-program

Súčasné rozdelenie príjmov z reklamy (režim Connect) medzi vás a Annual Ads.

Verejné
GET/v1/search?q={query}

Vyhľadávanie v prirodzenom jazyku — nasmeruje dotaz typu „inzerenti nábytku v Keni“ do príslušnej kategórie a geografického rozsahu a následne vráti výsledky zoradené presne v tom poradí, v akom sa skutočne nachádzajú.

Verejné

Partnerská a odporúčacia reklama

advertiser_type, promotion_type, link_type a promoted_brand sú voliteľné polia pri metódach POST a PATCH na adrese /v1/partner/ads — služba Annual Ads nie je obmedzená len na firmy, ktoré inzerujú samy seba. Ak je hodnota poľa link_type affiliate_link alebo referral_invitation_link, alebo ak je hodnota poľa promotion_type affiliate_offer alebo referral_opportunity, musí byť hodnota poľa affiliate_terms_accepted nastavená na true, inak bude žiadosť odmietnutá s chybovým kódom 422. Dĺžka poľa title je obmedzená na 35 znakov a poľa description na 80 znakov – obidve obmedzenia sa vynucujú na strane servera, nielen v používateľskom rozhraní riadiaceho panela.

Nástroje umelej inteligencie

Každý inzerentský účet má k dispozícii sadu integrovaných nástrojov umelej inteligencie – generátor obsahu a vizuálov reklám, konverzačného asistenta, poradcu pre rozpočet a externého audítora SEO –, ktoré sa okrem paušálnej ročnej ceny hradia kreditmi na umelú inteligenciu.

Tieto funkcie prebiehajú prostredníctvom prihlásenia do vlastného riadiaceho panela inzerenta (token prístupu k relácii), nie prostredníctvom partnerského kľúča API – integrácia tretej strany ich nemôže vyvolať v mene inzerenta.
POST/v1/advertisers/{id}/ai/assistant

Ask Annual Ads — plávajúci konverzačný asistent, slúži výlučne na informačné účely a má prístup k údajom účtu iba na čítanie.

Verejné
POST/v1/advertisers/{id}/ai/creative-studio

Na základe stručného popisu firmy vygenerujte názov inzerátu, popis a kľúčové slová.

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

Vytvorte vizuál inzerátu (PNG) na základe toho istého popisu firmy, ktorý je už pripravený na priloženie k inzerátu.

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

Skutočná štatistická prognóza – v žiadnom prípade nie generatívny odhad – pravdepodobnosti udržania daného poradia po 30, 90 a 365 dňoch.

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

Analyzujte externú webovú stránku samotného inzerenta a navrhnite konkrétne zlepšenia v oblasti SEO.

2 kredit(ov)

Príklad — vytvorenie obsahu reklamy

Tá istá kategória a popis činnosti slúžia aj ako podklad pre generátor obrázkov nižšie.

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
}

Vytvorte zodpovedajúci vizuál pre tú istú reklamu:

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

Vložte hotový reklamný blok na svoju stránku – bez nutnosti vytvárania, bez iframe. Skript sa vykresľuje priamo na stránke v izolovanom prostredí Shadow DOM, takže jeho štýly sa nikdy neprenášajú na vašu stránku a štýly vašej stránky sa nikdy neprenášajú do neho.

Pridaj to na svoju stránku

<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>

V predvolenom nastavení sa tu zobrazuje kompletné verejné poradie v danej kategórii – všetci inzerenti na platforme, nielen tí, ktorých ste priviedli vy. Ak chcete zobraziť len reklamy od inzerentov, ktorých ste vytvorili prostredníctvom režimu Connect (tých, ktorí generujú váš podiel), pridajte atribút „data-partner“ s vaším partnerským ID (nájdete ho na stránke „Developers“ vo vašom vlastnom riadiacom paneli):

<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>

Ak vaši inzerenti pôsobia vo viacerých kategóriách, úplne vynechajte atribút „data-category“ — ak použijete len atribút „data-partner“, widget zobrazí všetky vaše reklamy zo všetkých kategórií v jednej mriežke, namiesto toho, aby bol potrebný jeden blok widgetu pre každú kategóriu:

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

Chcete popri widgete v obsahu mať aj ďalší v pätičke, pričom každý z nich bude zobrazovať iné reklamy? Pridajte druhý blok widgetu s atribútom data-layout="compact" (jedna reklama, ktorú možno zložiť do malého modulu) a atribútom data-offset nastaveným na počet reklám, ktoré už zobrazuje váš prvý widget:

<!-- 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>

Vlastnosti

data-categoryID kategórie, ktorá sa má zobraziť. Povinné — pokiaľ nie je nastavený parameter „data-partner“; v takom prípade sa pri jeho vynechaní zobrazia reklamy daného partnera vo všetkých kategóriách.
data-geoGeografický rozsah: miestny, regionálny alebo globálny. Predvolené nastavenie je globálne.
data-countPočet reklám, ktoré sa majú zobraziť. Predvolená hodnota je 4.
data-columnsPočet stĺpcov tabuľky. Predvolená hodnota je 2.
data-layoutmriežka, zoznam alebo kompaktný režim. Predvolené nastavenie je mriežka. V kompaktnom režime sa zobrazí jediná reklama (hodnota „data-count“ sa ignoruje) s tlačidlom na jej zmenšenie na malú ikonu a opätovné zobrazenie — ide o prvok v štýle päty stránky, ktorý skript sám nikdy neumiestňuje pevne; umiestnenie a štýl kontajnerového divu si na svojej stránke môžete prispôsobiť podľa vlastného uváženia.
data-offsetPočet najvyššie zaradených reklám, ktoré sa majú preskočiť. Predvolená hodnota je 0. Umožňuje, aby druhý widget na tej istej stránke (napr. kompaktný widget v pätičke a mriežkový widget vyššie) zobrazoval iné reklamy namiesto toho, aby sa tá istá reklama opakovala dvakrát – zadajte počet reklám, ktoré už druhý widget zobrazuje.
data-partnerVaše partnerské ID (nájdete ho na stránke „Developers“ vo vašom vlastnom riadiacom paneli). Voliteľné — bez neho widget zobrazuje úplné verejné poradie v danej kategórii, teda všetkých inzerentov na platforme. Ak ho zadáte, zobrazujú sa iba reklamy od inzerentov, ktorých ste priviedli prostredníctvom režimu Connect — teda tých, ktorí vám skutočne generujú podiel.

Podiel na tržbách

Ako sa provízia za odporúčanie partnerovi skutočne vypláca – jej výška, spôsob vyplácania a podmienky.

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
}

Nie je to pevne stanovené číslo

Percentuálna výška provízie je nastavená z našej strany a môže sa meniť — vždy ju čítajte v reálnom čase z tohto koncového bodu, namiesto toho, aby ste hodnotu pevne zakódovali.

Plne automatický

Neexistuje žiadny termín na výber prostriedkov. Naplánovaná úloha vypočíta splatné výnosy, zoskupí ich podľa inzerentov a automaticky ich vyplatí, akonáhle budú splnené všetky nižšie uvedené podmienky.

Podmienky výplaty

  • Celková suma výnosov inzerenta, ktoré sú splatné, dosiahla minimálnu výplatnú sumu.
  • Na ich účte je nastavená peňaženka na výplatu kryptomien.
  • Ich status KYC je overený.

Príklad: prečítanie nahromadených ziskov

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
}

Cenové úrovne (v prevádzke)

Čítajte údaje priamo z tohto koncového bodu – tieto hodnoty nikdy neuvádzajte pevne v kóde, pretože sa môžu z našej strany zmeniť. Vytvorte pre svojich používateľov výber cenových úrovní namiesto poľa s voľnou sumou: každá zobrazená cena už predstavuje presnú sumu, ktorú treba poslať pri vytváraní platby, a odomknuté výhody tu uvedené používateľom presne vysvetľujú, čo za túto cenu získajú, takže si vyberú cenu, ktorej rozumejú, namiesto toho, aby hádali nejaké číslo.

ÚroveňCenaOdomknutia
Bronze$50.00

Basic visibility

Silver$300.00

Clickable link unlocked

Klikateľný odkaz
Gold$500.00

Animation unlocked

Klikateľný odkazAnimácia
Platinum$1,000.00

Enhanced exposure

Klikateľný odkazAnimácia
Diamond$2,500.00

Premium placement

Klikateľný odkazAnimácia
Elite$5,000.00

Top-tier visibility

Klikateľný odkazAnimácia
Legendary$10,000.00

Maximum visibility & branding

Klikateľný odkazAnimácia

Limity rýchlosti

Počet požiadaviek je obmedzený na jeden kľúč za minútu. Každá overená odpoveď obsahuje hlavičky X-RateLimit-Limit, X-RateLimit-Remaining a X-RateLimit-Reset; pri prekročení limitu sa vráti stav 429 Too Many Requests s hlavičkou Retry-After.

Zoznam povolených IP adries

Voliteľné, pre každého partnera. Pokiaľ nepridáte žiadny záznam, vaše kľúče prijímajú požiadavky z akejkoľvek IP adresy – prvý záznam prepne všetky kľúče daného partnera do režimu „len zoznam povolených“.

Webhooky

Každý webhook je podpísaný pomocou algoritmu HMAC-SHA256 s využitím tajného kľúča, ktorý sa generuje jednorazovo pri jeho vytvorení – predtým, ako dôverujete obsahu správy, overte jej podpis. Udalosti sa doručujú iba partnerovi, ktorý je vlastníkom príslušného inzerenta.

payment.succeededPlatba bola potvrdená.
payment.refundedVrátenie peňazí bolo vykonané.
ad.activatedInzerát sa zverejní automaticky alebo po schválení správcom.
invoice.issuedVystaví sa faktúra.
referral.payout.completedProvízia za odporúčanie dosiahla status „vyplatená“.
referral.payout.failedHromadná výplata provízií za odporúčania zlyhala u poskytovateľa — výnosy sa vrátili do položky „k vyplateniu“ a proces sa opakuje.
rank.changedZmena poradia reklamy – vrátane prípadov, keď k nej dôjde v dôsledku platby iného inzerenta.
ad.expiring_soon30, 7 alebo 1 deň (dni) pred uplynutím platnosti inzerátu.
partner_ad_revenue.payout.completedVýplata podielu na príjmoch z reklamy dosiahla stav „zaplatené“.
partner_ad_revenue.payout.failedHromadná výplata podielu na príjmoch z reklamy zlyhala u poskytovateľa – podiely sa vrátili do položky „k vyplateniu“ a pokus sa opakuje.

Súbory nástrojov na vývoj softvéru

Plánuje sa vydanie oficiálnych SDK pre JavaScript/TypeScript a Python, ktoré budú vygenerované na základe tejto špecifikácie API, zatiaľ však neboli zverejnené — dovtedy využívajte priamo HTTP API.

Rýchly štart

Zatiaľ nie je k dispozícii žiadne SDK – tieto riešenia volajú HTTP API priamo a fungujú už dnes v akomkoľvek jazyku.

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": "...",
    },
)