Annual Ads

Dokumentacioni i zhvilluesit

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ë çmimeve

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

URL-ja bazë

https://api.adhub365.com
OpenAPI 3

Autentifikimi

Ç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

Sandbox & prodhim

Çelësat e sandbox-it dhe të prodhimit janë plotësisht të izoluar nga njëri-tjetri — një çelës i sandbox-it kurrë nuk mund të lexojë ose të shkruajë të dhëna të krijuara nga një çelës i prodhimit, dhe anasjelltas.

Fushat e zbatimit

Çdo çelës është i kufizuar në fushëveprimin me të cilin është lëshuar — një çelës kurrë nuk ka më shumë akses se llogaria partnere që e krijoi.

Çelësat e API-së lëshohen për llogaritë e partnerëve të miratuara nga Ekipi Vjetor i Reklamave.

Krijoni një llogari partneri

Ndërndarja e të ardhurave nga reklamat

Nëse çelësat tuaj të API-së krijojnë llogari reklamuesish për përdoruesit tuaj (mënyra Connect — shih Autentifikimin më lart), ju fitoni një pjesë të asaj që këta reklamues paguajnë për reklamat e tyre. Ndërndarja më poshtë lexohet drejtpërdrejt nga i njëjti endpoint, kurrë e koduar në mënyrë statike, dhe është krejtësisht e ndarë nga komisioni i referimit më poshtë në këtë faqe.

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

70%

Shkon tek ty

Paguhet automatikisht në portofolin tuaj të konfiguruar për pagesë — nuk kërkohet asnjë kërkesë për tërheqje.

30%

Shkon te Reklamat Vjetore

Përfshin moderimin, pritjen dhe infrastrukturën e renditjes në të cilën funksionojnë reklamat tuaja.

Si funksionon

  1. Një nga reklamuesit tuaj në modalitetin Connect paguan për një reklamë përmes integrimit tuaj.
  2. Reklama rishikohet dhe miratohet — automatikisht, ose nga ekipi ynë i moderimit.
  3. Pjesa juaj është në radhë për pagesë automatike në portofolin tuaj, i njëjti mekanizëm si programi i referimit më poshtë.
Një pjesëmarrje nuk krijohet kurrë përpara se reklama të miratohet në të vërtetë — nëse moderimi e refuzon, nuk ka asnjë detyrim për atë pagesë. Një plotësim në një reklamë tashmë aktive nuk përbën një rrezik të tillë dhe shpërndahet menjëherë.

Kushtet e pagesës

  • Një portofol për pagesa kriptomonedhash është konfiguruar në llogarinë tuaj të partnerit.
  • Nuk kërkohet KYC nga ana juaj — llogaria juaj e partnerit është tashmë e verifikuar që në krijim.

Shembull: lexim i aksioneve të grumbulluara

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
}

Pikat përfundimtare

Llogaritë

POST/v1/partner/advertisers

Krijoni 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

Reklamat

POST/v1/partner/ads

Krijoni 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}/image

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

Caktoni 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}/rank

Ranga aktuale, kategoria dhe fushëveprimi gjeografik për një reklamë.

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

Shikimet 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

Pagesat

POST/v1/partner/payments

Filloni 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

Referimet

POST/v1/partner/referrals

Krijoni një lidhje referimi.

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

Të ardhurat kumulative nga referimet, të ndara sipas statusit.

referrals:read

Ndërndarja e të ardhurave nga reklamat

GET/v1/partner/ad-revenue/earnings

70% pjesë juaja e asaj që reklamuesit që krijuat në modalitetin Connect paguan për reklamat e tyre, e ndarë sipas statusit.

ad-revenue:read

Regjistri i aksesit

GET/v1/partner/access-log

Historia e plotë e thirrjeve për këtë çelës — metodë, rrugë, IP, vulë kohore.

Atje

Pikat e fundit publike

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

Rangim vetëm për lexim për një kategori dhe fushë gjeografike.

Publik
GET/v1/tiers

7 nivelet e çmimeve të konfiguruara (pragu, përfitimet e zhbllokuara).

Publik
GET/v1/referral-program

Përqindjet e komisioneve aktualisht aktive për kaskadën e referimeve dhe Pishinën e Liderëve.

Publik
GET/v1/partner-program

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

Mjetet e inteligjencës artificiale

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

Këto funksionojnë përmes hyrjes në panelin e reklamuesit (një token sesioni), jo përmes një çelësi API të partnerit — një integrim i palës së tretë nuk mund t'i thërrasë ato në emër të reklamuesit.
POST/v1/advertisers/{id}/ai/assistant

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

Gjeneroni 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/image

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

Një 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-audit

Analizo faqen e jashtme të reklamuesit dhe sugjero përmirësime konkrete të SEO-së.

2 kredi

Shembull — gjeneroni përmbajtje reklame

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
}

Gjethës

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

Shto atë në faqen tënde

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

Atributet

data-categoryID-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-geoFushat gjeografike: lokale, rajonale ose globale. Parazgjedhja është globale.
data-countNumri i reklamave për t'u shfaqur. Vlerë e paracaktuar: 4.
data-columnsNumri i kolonave të rrjetit. Vlerë e paracaktuar 2.
data-layoutgrid, 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-offsetNumri 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-partnerID-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.

Ndara e të ardhurave

Si i arrin me të vërtetë një partneri komisioni i referimit — përqindja, mekanizmi i pagesës dhe parakushtet.

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
}

Jo një numër i fiksuar

Përqindja e komisionit është konfiguruar nga ana jonë dhe mund të ndryshojë — gjithmonë lexojeni atë në kohë reale nga ky endpoint, në vend që të vendosni një vlerë të ngurtë.

plotësisht automatik

Nuk ka pikë daljeje. Një punë e planifikuar llogarit fitimet e pagueshme, i grupon ato për secilin reklamues dhe i paguan automatikisht sapo të përmbushen të gjitha kushtet më poshtë.

Kushtet e pagesës

  • Të ardhurat totale të pagueshme të reklamuesit arrijnë shumën minimale të pagesës.
  • Një portofol për pagesa kriptomonedhash është konfiguruar në llogarinë e tyre.
  • Statusi i tyre KYC është verifikuar.

Shembull: lexim i të ardhurave të akumuluara

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
}

Nivelet e çmimeve (live)

Lexoni drejtpërdrejt nga ky pikë fundor — mos i kodoni kurrë këto vlera në mënyrë statike, ato mund të ndryshojnë nga ana jonë. Ndërto një zgjedhës niveli për përdoruesit tuaj në vend të një fushe për shumën e lirë: çdo çmim i shfaqur është tashmë shuma e saktë për t'u dërguar kur krijohet pagesa, dhe përfitimet e zhbllokuara të shfaqura këtu u tregojnë përdoruesve saktësisht çfarë u siguron ai çmim, kështu që ata zgjedhin një çmim që e kuptojnë në vend që të hamendësojnë një numër.

NiveliÇmimiHap
Bronze$50.00

Basic visibility

Silver$300.00

Clickable link unlocked

Lidhje e klikueshme
Gold$500.00

Animation unlocked

Lidhje e klikueshmeAnimacion
Platinum$1,000.00

Enhanced exposure

Lidhje e klikueshmeAnimacion
Diamond$2,500.00

Premium placement

Lidhje e klikueshmeAnimacion
Elite$5,000.00

Top-tier visibility

Lidhje e klikueshmeAnimacion
Legendary$10,000.00

Maximum visibility & branding

Lidhje e klikueshmeAnimacion

Kufijtë e shpejtësisë

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.

Lista e lejuar e IP-ve

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.

Thirrjet e uebit

Ç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.succeededNjë pagesë është konfirmuar.
payment.refundedEkzekutohet një rimbursim.
ad.activatedNjë reklamë bëhet aktive, automatikisht ose pas rishikimit nga administratori.
invoice.issuedNjë faturë lëshohet.
referral.payout.completedNjë komision referimi arrin statusin e paguar.
referral.payout.failedNjë grup pagesash referimi dështon te ofruesi — fitimet kthehen në pagesë dhe provohen përsëri.
rank.changedRenditja e një reklame ndryshon — përfshirë kur pagesa e një reklamuesi tjetër e shkakton këtë.
ad.expiring_soon30, 7 ose 1 ditë(ë) para skadimit të një reklame.
partner_ad_revenue.payout.completedPërfitimi i të ardhurave nga reklamat arrin statusin e paguar.
partner_ad_revenue.payout.failedNjë 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.

Pako Zhvillimi Softuerik

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.

Fillim i shpejtë

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