Ndërtoni drejtpërdrejt në platformën Annual Ads — krijoni reklamues, botoni reklama, inicioni pagesat dhe ndiqni renditjen, tërësisht përmes API-së.
Shiko tabelën e plotë të çmimeveTi mban 70% e asaj që reklamuesit tuaj në modalitetin Connect paguajnë për reklamat e tyre — paguar automatikisht në portofolin tuaj. Shikoni më poshtë se si funksionon.
Çdo kërkesë autentikohet me një çelës sekret në kokën e Autorizimit, duke përdorur skemën Bearer.
POST https://api.adhub365.com/v1/partner/ads
Authorization: Bearer sk_sandbox_...
Content-Type: application/jsonÇelësat e API-së lëshohen për llogaritë e partnerëve të miratuara nga Ekipi Vjetor i Reklamave.
Krijoni një llogari partneri| POST | /v1/partner/advertisersKrijoni një llogari reklamuesi në emër të njërit prej përdoruesve tuaj (moda Connect). | advertisers:write |
| GET | /v1/partner/advertisers/{id}Kërko një llogari të reklamuesit të krijuar nga ky partner. | advertisers:read |
| POST | /v1/partner/adsKrijoni një reklamë. Ajo fillon në statusin e draftit. Fushat opsionale advertiser_type, promotion_type, link_type dhe promoted_brand përshkruajnë reklamim affiliate, referral, creator ose individual — shih shënimin më poshtë. | ads:write |
| GET | /v1/partner/ads/{id}Kërko një reklamë. | ads:read |
| PATCH | /v1/partner/ads/{id}Përditësoni përmbajtjen redaksionale — titullin, përshkrimin, lidhjen, llojin e reklamuesit, llojin e promovimit, llojin e lidhjes dhe markën e promovuar. Kategoria, gjeografia dhe çdo gjë që lexohet nga motori i renditjes nuk mund të ndryshohen kurrë këtu. | ads:write |
| POST | /v1/partner/ads/{id}/imageNgarko një imazh reklame direkt (JPEG/PNG/WebP, maks. 5 MB). Kërkohet para pagesës së parë — shih grupin e pagesave më poshtë. | ads:write |
| POST | /v1/partner/ads/{id}/image-urlCaktoni imazhin e një reklame nga një URL në vend që të ngarkoni një skedar — serveri e merr dhe e ri-hoston vetë. E njëjta kërkesë: duhet përpara pagesës së parë. | ads:write |
| GET | /v1/partner/ads/{id}/rankRanga aktuale, kategoria dhe fushëveprimi gjeografik për një reklamë. | ads:read |
| GET | /v1/partner/ads/{id}/statsShikimet dhe klikimet totale për një reklamë — ditët e kaluara/të mbetura vijnë nga fushat activated_at/expires_at që tashmë gjenden në GET /{id}, ndërsa renditja nga GET /{id}/rank. | ads:read |
| POST | /v1/partner/paymentsFilloni një pagesë me kriptomonedhë për një blerje fillestare ose një rimbushje. Një pagesë fillestare dështon me kodin 422, përveç nëse reklama tashmë ka një imazh — shih uploadAdImage/setAdImageUrl më lart. | payments:write |
| GET | /v1/partner/payments/{id}Kontrolloni statusin e një pagese. | payments:read |
| POST | /v1/partner/referralsKrijoni një lidhje referimi. | referrals:write |
| GET | /v1/partner/referrals/{code}/earningsTë ardhurat kumulative nga referimet, të ndara sipas statusit. | referrals:read |
| GET | /v1/partner/ad-revenue/earnings70% pjesë juaja e asaj që reklamuesit që krijuat në modalitetin Connect paguan për reklamat e tyre, e ndarë sipas statusit. | ad-revenue:read |
| GET | /v1/partner/access-logHistoria e plotë e thirrjeve për këtë çelës — metodë, rrugë, IP, vulë kohore. | Atje |
| GET | /v1/rankings?category={id}&geo={scope}Rangim vetëm për lexim për një kategori dhe fushë gjeografike. | Publik |
| GET | /v1/tiers7 nivelet e çmimeve të konfiguruara (pragu, përfitimet e zhbllokuara). | Publik |
| GET | /v1/referral-programPërqindjet e komisioneve aktualisht aktive për kaskadën e referimeve dhe Pishinën e Liderëve. | Publik |
| GET | /v1/partner-programNdara aktuale e të ardhurave nga reklamat (moda Connect) midis jush dhe Reklamave Vjetore. | Publik |
| GET | /v1/search?q={query}Kërkimi në gjuhë natyrale — drejton një kërkesë si "reklamues të mobiljeve në Kenia" te kategoria dhe fusha gjeografike përkatëse, pastaj kthen atë renditje, në rendin e saj të vërtetë. | Publik |
Reklamim i bashkëpunëtorëve dhe i referimeve
advertiser_type, promotion_type, link_type dhe promoted_brand janë fusha opsionale në POST dhe PATCH /v1/partner/ads — Reklamat Vjetore nuk janë të kufizuara vetëm për bizneset që reklamojnë veten. Kur link_type është affiliate_link ose referral_invitation_link, ose promotion_type është affiliate_offer ose referral_opportunity, affiliate_terms_accepted duhet të jetë true, përndryshe kërkesa refuzohet me kod 422. titulli është i kufizuar në 35 karaktere dhe përshkrimi në 80 — të dyja zbatohen nga ana e serverit, jo vetëm në ndërfaqen e panelit të kontrollit.
Çdo llogari e reklamuesit përfiton një grup mjetesh të integruara të inteligjencës artificiale — një gjenerator përmbajtjeje dhe vizualesh për reklama, një asistent bisedues, një këshilltar buxheti dhe një auditor i jashtëm SEO — të paguara me kredite AI, përveç çmimit fiks vjetor.
| POST | /v1/advertisers/{id}/ai/assistantAsk Annual Ads — një asistent bisedues lundrues, vetëm informativ, vetëm për lexim të të dhënave të llogarisë. | Publik |
| POST | /v1/advertisers/{id}/ai/creative-studioGjeneroni një titull reklame, një përshkrim dhe fjalë kyçe nga një përshkrim i shkurtër i biznesit. | 2 kredi |
| POST | /v1/advertisers/{id}/ai/creative-studio/imageGjeneroni një imazh listimi (PNG) nga e njëjta përshkrim i biznesit, i hostuar dhe gati për t'u bashkëngjitur në një reklamë. | 8 kredi |
| POST | /v1/advertisers/{id}/ai/budget-advisorNjë parashikim statistikor i vërtetë — kurrë një supozim gjenerues — i mundësive për të ruajtur një rang të caktuar në 30/90/365 ditë. | 1 kredi |
| POST | /v1/advertisers/{id}/ai/seo-auditAnalizo faqen e jashtme të reklamuesit dhe sugjero përmirësime konkrete të SEO-së. | 2 kredi |
E njëjta kategori dhe përshkrimi i biznesit gjithashtu ushqejnë gjeneratorin e imazheve më poshtë.
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
}Gjeneroni një pamje përkatëse për të njëjtën reklamë:
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
}Shto një njësi reklame të gatshme në faqen tënde — pa asnjë hap ndërtimi, pa iframe. Skripti shfaqet drejtpërdrejt në faqe brenda një Shadow DOM të izoluar, kështu që stilet e tij kurrë nuk rrjedhin në faqen tënde, dhe stilet e faqes tënde kurrë nuk rrjedhin në të.
<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>Si parazgjedhje, kjo tregon renditjen publike të plotë për kategorinë — çdo reklamues në platformë, jo vetëm ata që i sollët ju. Për të shfaqur vetëm reklamat nga reklamuesit që keni krijuar përmes modalitetit Connect (ata që gjenerojnë pjesën tuaj), shtoni data-partner me ID-në e partnerit tuaj (gjejeni në faqen e Zhvilluesve të panelit tuaj):
<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>Nëse reklamuesit tuaj përfshijnë disa kategori, hiqni plotësisht data-category — me vetëm data-partner, widget-i tregon çdo reklamë tuajën në të gjitha kategoritë në një rrjetë, në vend që të keni nevojë për një bllok widget-i për çdo kategori:
<div
class="annualads-widget"
data-geo="global"
data-partner="YOUR_PARTNER_ID"
></div>
<script async src="https://adhub365.com/widget.js"></script>Dëshironi një njësi në stil footer pranë asaj në përmbajtje, secila duke shfaqur reklama të ndryshme? Shtoni një bllok të dytë widget me data-layout="compact" (një reklamë e vetme, e palosshme në një pilulë të vogël) dhe data-offset të vendosur në numrin e reklamave që widget-i juaj i parë tashmë shfaq:
<!-- 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 | ID-ja e kategorisë për t'u shfaqur. E nevojshme — përveç nëse është vendosur data-partner, në të cilin rast mos-përfshirja e saj tregon reklamat e atij partneri në çdo kategori. |
data-geo | Fushat gjeografike: lokale, rajonale ose globale. Parazgjedhja është globale. |
data-count | Numri i reklamave për t'u shfaqur. Vlerë e paracaktuar: 4. |
data-columns | Numri i kolonave të rrjetit. Vlerë e paracaktuar 2. |
data-layout | grid, listë ose kompakt. Parazgjedhja është grid. Modaliteti kompakt tregon një reklamë të vetme (data-count injorohet) me një buton për ta tkurrur në një pilulë të vogël dhe për ta rikthyer — një njësi në stil footer, që kurrë nuk pozicionohet fikse nga vetë skripti; ju vendosni dhe stiloni div-in e kontejnerit si të doni në faqen tuaj. |
data-offset | Numri i reklamave të renditura më lart që do të anashkalohen. Vlerë e paracaktuar 0. Lejon që një widget i dytë në të njëjtën faqe (p.sh. një widget kompakt në fund të faqes dhe një në rrjetë më lart) të shfaqë reklama të ndryshme në vend që të përsërisë të njëjtën dy herë — jepni numrin e reklamave që widget-i tjetër tashmë shfaq. |
data-partner | ID-ja e partnerit tuaj (e gjeni në faqen e Zhvilluesve të panelit tuaj të kontrollit). Opsionale — pa të, widget-i tregon renditjen publike të plotë për atë kategori, çdo reklamues në platformë. Me të, vetëm reklamat nga reklamuesit që i keni sjellë përmes modalitetit Connect — ato që në të vërtetë gjenerojnë pjesën tuaj. |
Kërkesat janë të kufizuara për çelës, për minutë. Çdo përgjigje e autentifikuar përmban kokërat X-RateLimit-Limit, X-RateLimit-Remaining dhe X-RateLimit-Reset; tejkalimi i kufirit kthen kodin e gabimit 429 Too Many Requests me kokërën Retry-After.
Opsionale, për partner. Deri sa të shtoni një hyrje, çelësat tuaj pranojnë kërkesa nga çdo IP — hyrja e parë i vendos të gjitha çelësat e atij partneri vetëm në listën e lejuar.
Çdo webhook nënshkruhet me HMAC-SHA256 duke përdorur një sekret të lëshuar një herë, në kohën e krijimit — verifikoni nënshkrimin para se t'i besoni ngarkesës. Ngjarjet dorëzohen vetëm partnerit që zotëron reklamuesin përkatës.
payment.succeeded | Një pagesë është konfirmuar. |
payment.refunded | Ekzekutohet një rimbursim. |
ad.activated | Një reklamë bëhet aktive, automatikisht ose pas rishikimit nga administratori. |
invoice.issued | Një faturë lëshohet. |
referral.payout.completed | Një komision referimi arrin statusin e paguar. |
referral.payout.failed | Një grup pagesash referimi dështon te ofruesi — fitimet kthehen në pagesë dhe provohen përsëri. |
rank.changed | Renditja e një reklame ndryshon — përfshirë kur pagesa e një reklamuesi tjetër e shkakton këtë. |
ad.expiring_soon | 30, 7 ose 1 ditë(ë) para skadimit të një reklame. |
partner_ad_revenue.payout.completed | Përfitimi i të ardhurave nga reklamat arrin statusin e paguar. |
partner_ad_revenue.payout.failed | Një grup pagesash për ndarjen e të ardhurave nga reklamat dështon te ofruesi — pjesët kthehen në të pagueshme dhe provohen përsëri. |
SDK-të zyrtare për JavaScript/TypeScript dhe Python, të gjeneruara nga e njëjta specifikim i API-së, janë planifikuar por ende nuk janë publikuar — deri atëherë thërrisni direkt API-në HTTP.
Ende nuk ka SDK — këto thërrasin direkt HTTP API-në dhe funksionojnë sot në çdo gjuhë.
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": "...",
},
)