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átA 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.
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/jsonAz API-kulcsokat az Annual Ads csapata állítja ki a jóváhagyott partnerfiókok számára.
Partnerfiók létrehozása| POST | /v1/partner/advertisersHozzon 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 |
| POST | /v1/partner/adsHozzon 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}/imageTö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-urlA 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}/rankEgy hirdetés aktuális rangja, kategóriája és földrajzi hatálya. | ads:read |
| GET | /v1/partner/ads/{id}/statsEgy 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 |
| POST | /v1/partner/paymentsIndí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 |
| POST | /v1/partner/referralsHozzon létre egy ajánló linket. | referrals:write |
| GET | /v1/partner/referrals/{code}/earningsA státuszok szerinti bontásban megjelenített összesített ajánlási bevétel. | referrals:read |
| GET | /v1/partner/ad-revenue/earningsA 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 |
| GET | /v1/partner/access-logA kulcs teljes híváselőzményei – módszer, elérési út, IP-cím, időbélyeg. | Ott |
| 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/tiersA 7 beállított árkategória (küszöbérték, feloldott előnyök). | Nyilvános |
| GET | /v1/referral-programAz 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-programA 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.
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.
| POST | /v1/advertisers/{id}/ai/assistantKé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-studioKé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/imageKé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-advisorEgy 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-auditElemezze a hirdető saját külső weboldalát, és javasoljon konkrét SEO-fejlesztéseket. | 2 kredit(ek) |
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
}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.
<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>data-category | Megjelení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-geo | Földrajzi hatály: helyi, regionális vagy globális. Alapértelmezés szerint globális. |
data-count | A megjelenítendő hirdetések száma. Az alapértelmezett érték 4. |
data-columns | A rács oszlopainak száma. Alapértelmezés szerint 2. |
data-layout | rá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-offset | Az á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-partner | A 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. |
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.
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.
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.succeeded | A fizetés megerősítve. |
payment.refunded | A visszatérítés megtörtént. |
ad.activated | A hirdetés automatikusan vagy az adminisztrátor általi ellenőrzés után válik aktívvá. |
invoice.issued | Kiadásra kerül egy számla. |
referral.payout.completed | Egy ajánlási jutalék kifizetési státuszt ér el. |
referral.payout.failed | Egy 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.changed | A hirdetés rangja változik – többek között akkor is, ha ezt egy másik hirdető befizetése okozza. |
ad.expiring_soon | 30, 7 vagy 1 nappal a hirdetés lejárta előtt. |
partner_ad_revenue.payout.completed | Egy hirdetési bevétel-megosztási kifizetés „kifizetett” státuszt ér el. |
partner_ad_revenue.payout.failed | A 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. |
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.
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": "...",
},
)