Annual Ads

Dokumentacija kūrėjams

Kurkite tiesiogiai „Annual Ads“ platformoje – kurkite reklamuotojus, skelbkite skelbimus, inicijuokite mokėjimus ir stebėkite reitingą, viską atliekant per API.

Peržiūrėkite visą kainų lentelę

Jums lieka 70 % iš sumos, kurią jūsų „Connect“ režimo reklamuotojai moka už savo skelbimus – ši suma automatiškai pervedama į jūsų piniginę. Žemiau sužinokite, kaip tai veikia.

Pagrindinis URL

https://api.adhub365.com
OpenAPI 3

Autentifikavimas

Kiekvienas užklausimas autentiškumas patvirtinamas naudojant slaptąjį raktą, esantį „Authorization“ antraštėje, pagal „Bearer“ schemą.

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

Bandomoji aplinka ir gamybinė aplinka

„Sandbox“ ir gamybos raktų veikimas yra visiškai atskirtas vienas nuo kito — „Sandbox“ raktas niekada negali skaityti ar įrašyti duomenų, kuriuos sukūrė gamybos raktas, ir atvirkščiai.

Taikikliai

Kiekvienas raktas galioja tik tose srityse, kuriose jis buvo išduotas – raktas niekada nesuteikia didesnių prieigos teisių nei partnerio paskyra, kurioje jis buvo sukurtas.

API raktus patvirtintoms partnerių paskyroms išduoda „Annual Ads“ komanda.

Sukurti partnerio paskyrą

Reklamos pajamų pasidalijimas

Jei jūsų API raktai sukuria reklamuotojų paskyras jūsų pačių vartotojams („Connect“ režimas — žr. skyrių „Autentiškumo patvirtinimas“ aukščiau), jūs gaunate dalį sumos, kurią tie reklamuotojai moka už savo skelbimus. Toliau pateiktas paskirstymas gaunamas realiuoju laiku iš to paties galinio taško, niekada nėra užkoduotas kodo lygiu ir yra visiškai atskirtas nuo rekomendacinės komisijos, apie kurią rašoma toliau šiame puslapyje.

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

70%

Tai tau

Lėšos automatiškai pervedamos į jūsų nurodytą išmokėjimo piniginę – nereikia teikti išėmimo prašymo.

30%

Pereina į „Metines reklamas“

Apima moderavimą, talpinimą ir reitingavimo infrastruktūrą, kurioje rodomi jūsų skelbimai.

Kaip tai veikia

  1. Vienas iš jūsų „Connect“ režimu veikiančių reklamuotojų sumoka už reklamą per jūsų integraciją.
  2. Skelbimas yra peržiūrimas ir patvirtinamas – automatiškai arba mūsų moderatorių komandos.
  3. Jūsų dalis įtraukta į eilę automatiniam išmokėjimui į jūsų piniginę – tas pats mechanizmas, kaip ir toliau aprašytoje rekomendavimo programoje.
Pelnas niekada neskaičiuojamas tol, kol skelbimas nėra faktiškai patvirtintas – jei moderatoriai jį atmeta, už tą mokėjimą nieko nereikia mokėti. Papildymas jau veikiančiam skelbimui tokios rizikos nekelia, o pelnas paskirstomas iš karto.

Išmokėjimo sąlygos

  • Jūsų partnerio paskyroje sukonfigūruota kriptovaliutų išmokėjimų piniginė.
  • Jums nereikia atlikti KYC procedūros – jūsų partnerio paskyra jau buvo patikrinta jos sukūrimo metu.

Pavyzdys: sukauptų akcijų skaičiaus nustatymas

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
}

Galiniai taškai

Sąskaitos

POST/v1/partner/advertisers

Sukurkite reklamuotojo paskyrą vieno iš jūsų vartotojų vardu („Connect“ režimas).

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

Ieškokite šio partnerio sukurto reklamuotojo paskyros.

advertisers:read

Skelbimai

POST/v1/partner/ads

Sukurkite skelbimą. Iš pradžių jis bus „juodraščio“ būsenoje. Neprivalomi laukai „advertiser_type“, „promotion_type“, „link_type“ ir „promoted_brand“ apibūdina partnerių, rekomendacinę, kūrėjo arba individualią reklamą — žr. pastabą žemiau.

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

Ieškokite skelbimo.

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

Atnaujinkite redakcinį turinį — pavadinimą, aprašymą, nuorodą, reklamuotojo tipą, reklamos tipą, nuorodos tipą ir reklamuojamą prekės ženklą. Kategorijos, geografinės vietovės ir bet kokios kitos informacijos, kurią nuskaito reitingavimo sistema, čia keisti negalima.

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

Tiesiogiai įkelkite skelbimo paveikslėlį (JPEG/PNG/WebP, ne daugiau kaip 5 MB). Tai būtina padaryti prieš atlikdami pirmąjį mokėjimą — žr. skyrių „Mokėjimai“ žemiau.

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

Nustatykite reklamos paveikslėlį naudodami URL adresą, o ne įkeliant failą – serveris pats jį atsisiųs ir talpins. Tas pats reikalavimas: tai reikia padaryti prieš pirmąjį mokėjimą.

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

Dabartinis skelbimo reitingas, kategorija ir geografinė aprėptis.

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

Bendras skelbimo peržiūrų ir paspaudimų skaičius bei praėjusių ir likusių dienų skaičius gaunami iš laukų „activated_at“ ir „expires_at“, kurie jau yra užklausos GET /{id} duomenyse, o reitingas – iš užklausos GET /{id}/rank.

ads:read

Mokėjimai

POST/v1/partner/payments

Pradėkite mokėjimą kriptovaliuta už pirmąjį pirkimą arba sąskaitos papildymą. Pirmasis mokėjimas baigsis klaida 422, jei skelbime dar nėra nuotraukos — žr. „uploadAdImage/setAdImageUrl“ aukščiau.

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

Patikrinkite mokėjimo būseną.

payments:read

Rekomendacijos

POST/v1/partner/referrals

Sukurkite rekomendacinę nuorodą.

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

Bendros pajamos už rekomendacijas, suskirstytos pagal statusą.

referrals:read

Reklamos pajamų pasidalijimas

GET/v1/partner/ad-revenue/earnings

Jūsų 70 % dalis nuo sumos, kurią už savo skelbimus sumokėjo reklamuotojai, kuriuos sukūrėte „Connect“ režimu, suskirstyta pagal statusą.

ad-revenue:read

Prieigos žurnalas

GET/v1/partner/access-log

Išsami šio raktinio žodžio iškvietų istorija — metodas, kelias, IP adresas, laiko žyma.

Ten

Viešieji galiniai taškai

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

Tik skaitymo režimo reitingas pagal kategoriją ir geografinę sritį.

Viešas
GET/v1/tiers

7 nustatyti kainodaros lygiai (ribinis lygis, atrakinti privalumai).

Viešas
GET/v1/referral-program

Šiuo metu galiojantys komisinių procentiniai dydžiai, taikomi rekomendacijų grandinei ir „Leaders Pool“ programai.

Viešas
GET/v1/partner-program

Dabartinis reklamos pajamų paskirstymas (režimas „Connect“) tarp jūsų ir „Annual Ads“.

Viešas
GET/v1/search?q={query}

Paieška natūralia kalba — užklausą, pavyzdžiui, „baldų reklamuotojai Kenijoje“, nukreipia į atitinkamą kategoriją ir geografinę sritį, o tada pateikia rezultatų sąrašą tiksliai tokia tvarka, kokia jie iš tikrųjų yra.

Viešas

Partnerių ir rekomendacinė reklama

„advertiser_type“, „promotion_type“, „link_type“ ir „promoted_brand“ yra neprivalomi laukai POST ir PATCH užklausose į /v1/partner/ads — „Annual Ads“ neapsiriboja tik įmonėmis, reklamuojančiomis pačias save. Kai „link_type“ yra „affiliate_link“ arba „referral_invitation_link“, arba „promotion_type“ yra „affiliate_offer“ arba „referral_opportunity“, „affiliate_terms_accepted“ turi būti „true“, kitaip užklausa bus atmesta su kodu 422. „title“ ilgis ribojamas iki 35 simbolių, o „description“ – iki 80; abu apribojimai taikomi serverio pusėje, o ne tik valdymo skydo vartotojo sąsajoje.

AI įrankiai

Kiekvienai reklamuotojo paskyrai suteikiamas įdiegtų AI įrankių rinkinys – reklamos turinio ir vaizdų generatorius, pokalbių asistentas, biudžeto konsultantas ir išorinis SEO auditorius – už kuriuos, be fiksuoto metinio mokesčio, mokama AI kreditais.

Šios funkcijos veikia per paties reklamuotojo valdymo skydo prisijungimo duomenis (sesijos prieigos žetoną), o ne per partnerio API raktą – trečiosios šalies integracija negali jų iškviesti reklamuotojo vardu.
POST/v1/advertisers/{id}/ai/assistant

„Ask Annual Ads“ – plaukiojantis pokalbių asistentas, skirtas tik informaciniais tikslais, turintis tik skaitymo teises prie paskyros duomenų.

Viešas
POST/v1/advertisers/{id}/ai/creative-studio

Pagal trumpą įmonės aprašymą sugeneruokite skelbimo pavadinimą, aprašymą ir raktinius žodžius.

2 kreditų
POST/v1/advertisers/{id}/ai/creative-studio/image

Sukurti skelbimo iliustraciją (PNG) pagal tą patį įmonės aprašymą – ji bus išsaugota ir paruošta pridėti prie skelbimo.

8 kreditų
POST/v1/advertisers/{id}/ai/budget-advisor

Tikra statistinė prognozė – jokiu būdu ne spėjimas – apie tikimybę išlaikyti tam tikrą reitingą po 30, 90 ir 365 dienų.

1 kreditų
POST/v1/advertisers/{id}/ai/seo-audit

Išanalizuokite paties reklamuotojo išorinę svetainę ir pasiūlykite konkrečių SEO tobulinimo priemonių.

2 kreditų

Pavyzdys — reklamos turinio kūrimas

Ta pati kategorija ir verslo aprašymas taip pat naudojami žemiau pateiktame vaizdų generatoriuje.

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
}

Sukurti atitinkamą vaizdinę medžiagą tai pačiai reklamai:

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
}

Valdiklis

Įdėkite paruoštą reklamos bloką į savo svetainę — nereikia nieko kurti, nereikia naudoti „iframe“. Skriptas atvaizduojamas tiesiogiai puslapyje, izoliuotame „Shadow DOM“ konteineriuje, todėl jo stilius niekada neatsispindi jūsų svetainėje, o jūsų svetainės stilius niekada neatsispindi jame.

Įtraukite jį į savo puslapį

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

Pagal numatytuosius nustatymus čia rodomas visas viešas kategorijos reitingas – visi platformos reklamuotojai, o ne tik tie, kuriuos pritraukėte. Norėdami rodyti tik tų reklamuotojų skelbimus, kuriuos sukūrėte naudodami „Connect“ režimą (t. y. tuos, už kuriuos gaunate komisinį atlygį), pridėkite „data-partner“ su savo partnerio ID (jį rasite savo valdymo skydo puslapyje „Kūrėjai“):

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

Jei jūsų reklamuotojai priklauso kelioms kategorijoms, visiškai atsisakykite „data-category“ – naudodami tik „data-partner“, valdiklis viename tinklelyje parodys visas jūsų reklamas iš visų kategorijų, o ne po vieną valdiklio bloką kiekvienai kategorijai:

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

Norite, kad šalia turinyje rodomo reklamos bloko būtų ir apačioje esantis blokas, kuriuose būtų rodomos skirtingos reklamos? Pridėkite antrąjį valdiklio bloką su atributu „data-layout="compact"“ (viena reklama, suskleidžiama į nedidelį langelį) ir nustatykite „data-offset“ reikšmę pagal tai, kiek reklamų jau rodo jūsų pirmasis valdiklis:

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

Savybės

data-categoryRodytinas kategorijos ID. Privaloma — išskyrus atvejus, kai nustatytas „data-partner“ parametras; tokiu atveju, jei šis parametras nenurodytas, visose kategorijose rodomi to partnerio skelbimai.
data-geoGeografinė aprėptis: vietinė, regioninė arba pasaulinė. Numatytasis nustatymas – pasaulinė.
data-countRodytinų skelbimų skaičius. Numatytasis nustatymas – 4.
data-columnsTinklelio stulpelių skaičius. Numatytasis nustatymas – 2.
data-layouttinklelis, sąrašas arba kompaktiškas. Numatytasis nustatymas – tinklelis. Kompaktiškas variantas rodo vieną skelbimą (parametras „data-count“ ignoruojamas) su mygtuku, leidžiančiu jį suslėgti į nedidelį langelį ir vėl išskleisti – tai apatinės puslapio dalies stiliaus elementas, kurio pats skriptas niekada nefiksuoja; jūs patys savo puslapyje galite laisvai išdėstyti ir stiliuoti konteinerio „div“ elementą.
data-offsetAukščiausiai reitinguojamų skelbimų, kuriuos reikia praleisti, skaičius. Numatytasis nustatymas – 0. Leidžia antrajam to paties puslapio valdikliui (pvz., kompaktiškam valdikliui puslapio apačioje ir tinkleliu išdėstytam valdikliui aukščiau) rodyti kitus skelbimus, o ne kartoti tą patį du kartus – perduokite skelbimų skaičių, kurį jau rodo kitas valdiklis.
data-partnerJūsų partnerio ID (jį rasite savo valdymo skydo puslapyje „Kūrėjai“). Neprivaloma — jei jo nenurodysite, valdiklis rodys visą viešą tos kategorijos reitingą, apimantį visus platformos reklamuotojus. Jei jį nurodysite, bus rodomi tik tų reklamuotojų skelbimai, kuriuos pritraukėte naudodami „Connect“ režimą — t. y. tų, kurie iš tikrųjų generuoja jūsų dalį.

Pajamų dalis

Kaip partneriui iš tikrųjų išmokama rekomendacijos komisija — procentinė dalis, išmokėjimo tvarka ir sąlygos.

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
}

Tai nėra fiksuotas skaičius

Komisijos procentinė dalis nustatoma mūsų pusėje ir gali kisti — visada ją tikrinkite realiuoju laiku iš šio galinio taško, o ne įrašykite vertę kodo tekstuose.

Visiškai automatinis

Išmokėjimo pabaigos termino nėra. Planuota užduotis apskaičiuoja išmokėtinas pajamas, sugrupuoja jas pagal reklamuotojus ir automatiškai išmoka, kai įvykdomos visos toliau išvardytos sąlygos.

Išmokėjimo sąlygos

  • Reklamuotojo bendra išmokėtina suma pasiekia minimalią išmokėjimo sumą.
  • Jų paskyroje sukonfigūruota kriptovaliutų išmokėjimų piniginė.
  • Jų KYC statusas yra patvirtintas.

Pavyzdys: sukauptų pelnų perskaitymas

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
}

Kainų pakopos (veikiančios)

Skaitykite duomenis tiesiogiai iš šio galinio taško — niekada neįrašykite šių verčių kodo, nes jos mūsų pusėje gali pasikeisti. Sukurkite savo vartotojams pakopų pasirinkimo meniu vietoj laisvai užpildomo sumos laukelio: kiekviena rodoma kaina jau yra tiksli suma, kurią reikia pervesti atliekant mokėjimą, o čia rodomos prieinamos naudos vartotojams aiškiai parodo, ką jie gauna už tą kainą, todėl jie pasirenka kainą, kurią supranta, o ne spėlioja skaičių.

LygisKainaAtrakina
Bronze$50.00

Basic visibility

Silver$300.00

Clickable link unlocked

Spustelėjama nuoroda
Gold$500.00

Animation unlocked

Spustelėjama nuorodaAnimacija
Platinum$1,000.00

Enhanced exposure

Spustelėjama nuorodaAnimacija
Diamond$2,500.00

Premium placement

Spustelėjama nuorodaAnimacija
Elite$5,000.00

Top-tier visibility

Spustelėjama nuorodaAnimacija
Legendary$10,000.00

Maximum visibility & branding

Spustelėjama nuorodaAnimacija

Ribos

Užklausų skaičius ribojamas pagal raktą ir per minutę. Kiekviename autentiškame atsakyme yra antraštės „X-RateLimit-Limit“, „X-RateLimit-Remaining“ ir „X-RateLimit-Reset“; viršijus ribą, grąžinamas kodas 429 „Too Many Requests“ su antrašte „Retry-After“.

IP leidžiamų adresų sąrašas

Pasirinktinai, kiekvienam partneriui. Kol neįtrauksite įrašo, jūsų raktai priima užklausas iš bet kurio IP adreso – pirmasis įrašas perjungia visus to partnerio raktus į režimą, kai leidžiami tik įtraukti į sąrašą adresai.

Webhookai

Kiekvienas „webhook“ pasirašomas naudojant HMAC-SHA256 ir vienkartinį raktą, suteiktą jo sukūrimo metu – prieš pasitikėdami duomenų turiniu, patikrinkite parašą. Įvykiai perduodami tik tam partneriui, kuriam priklauso atitinkamas reklamuotojas.

payment.succeededMokėjimas patvirtintas.
payment.refundedGrąžinimas įvykdytas.
ad.activatedSkelbimas tampa aktyvus automatiškai arba po administratoriaus patikrinimo.
invoice.issuedIšrašoma sąskaita faktūra.
referral.payout.completedRekomendacijos komisija pasiekia „apmokėta“ būseną.
referral.payout.failedRekomendacijų išmokų partija nepavyksta apdoroti paslaugų teikėjo pusėje — pajamos grįžta į mokėtinų sumų sąskaitą ir bandoma jas apdoroti iš naujo.
rank.changedSkelbimo reitingas keičiasi – taip pat ir tais atvejais, kai tai lemia kito reklamuotojo atliktas mokėjimas.
ad.expiring_soon30, 7 arba 1 diena (-os) prieš skelbimo galiojimo pabaigą.
partner_ad_revenue.payout.completedIšmoka už pajamų dalį iš reklamos pasiekė „apmokėta“ būseną.
partner_ad_revenue.payout.failedReklamos pajamų dalies išmokėjimo partija nepavyksta pas paslaugų teikėją — dalys grįžta į mokėtinų sumų sąrašą ir bandoma jas išmokėti iš naujo.

Programinės įrangos kūrimo rinkiniai

Planuojama išleisti oficialius „JavaScript“/„TypeScript“ ir „Python“ SDK, sukurtus remiantis ta pačia API specifikacija, tačiau jie dar nėra paskelbti – iki tol kreipkitės tiesiogiai į HTTP API.

Greitasis pradžios vadovas

Kol kas nėra SDK — šios funkcijos tiesiogiai kreipiasi į HTTP API ir jau dabar veikia bet kuria programavimo kalba.

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