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.
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/jsonAPI raktus patvirtintoms partnerių paskyroms išduoda „Annual Ads“ komanda.
Sukurti partnerio paskyrą| POST | /v1/partner/advertisersSukurkite 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 |
| POST | /v1/partner/adsSukurkite 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}/imageTiesiogiai į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-urlNustatykite 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}/rankDabartinis skelbimo reitingas, kategorija ir geografinė aprėptis. | ads:read |
| GET | /v1/partner/ads/{id}/statsBendras 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 |
| POST | /v1/partner/paymentsPradė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 |
| POST | /v1/partner/referralsSukurkite rekomendacinę nuorodą. | referrals:write |
| GET | /v1/partner/referrals/{code}/earningsBendros pajamos už rekomendacijas, suskirstytos pagal statusą. | referrals:read |
| GET | /v1/partner/ad-revenue/earningsJū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 |
| GET | /v1/partner/access-logIšsami šio raktinio žodžio iškvietų istorija — metodas, kelias, IP adresas, laiko žyma. | Ten |
| GET | /v1/rankings?category={id}&geo={scope}Tik skaitymo režimo reitingas pagal kategoriją ir geografinę sritį. | Viešas |
| GET | /v1/tiers7 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-programDabartinis 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.
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.
| 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-studioPagal trumpą įmonės aprašymą sugeneruokite skelbimo pavadinimą, aprašymą ir raktinius žodžius. | 2 kreditų |
| POST | /v1/advertisers/{id}/ai/creative-studio/imageSukurti 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-advisorTikra 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-auditIšanalizuokite paties reklamuotojo išorinę svetainę ir pasiūlykite konkrečių SEO tobulinimo priemonių. | 2 kreditų |
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
}Į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.
<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>data-category | Rodytinas kategorijos ID. Privaloma — išskyrus atvejus, kai nustatytas „data-partner“ parametras; tokiu atveju, jei šis parametras nenurodytas, visose kategorijose rodomi to partnerio skelbimai. |
data-geo | Geografinė aprėptis: vietinė, regioninė arba pasaulinė. Numatytasis nustatymas – pasaulinė. |
data-count | Rodytinų skelbimų skaičius. Numatytasis nustatymas – 4. |
data-columns | Tinklelio stulpelių skaičius. Numatytasis nustatymas – 2. |
data-layout | tinklelis, 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-offset | Aukšč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-partner | Jū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į. |
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“.
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.
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.succeeded | Mokėjimas patvirtintas. |
payment.refunded | Grąžinimas įvykdytas. |
ad.activated | Skelbimas tampa aktyvus automatiškai arba po administratoriaus patikrinimo. |
invoice.issued | Išrašoma sąskaita faktūra. |
referral.payout.completed | Rekomendacijos komisija pasiekia „apmokėta“ būseną. |
referral.payout.failed | Rekomendacijų 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.changed | Skelbimo reitingas keičiasi – taip pat ir tais atvejais, kai tai lemia kito reklamuotojo atliktas mokėjimas. |
ad.expiring_soon | 30, 7 arba 1 diena (-os) prieš skelbimo galiojimo pabaigą. |
partner_ad_revenue.payout.completed | Išmoka už pajamų dalį iš reklamos pasiekė „apmokėta“ būseną. |
partner_ad_revenue.payout.failed | Reklamos 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. |
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.
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": "...",
},
)