Baut direkt op der Annual Ads-Plattform — erstellt Annonceuren, publizéiert Annoncen, initiéiert Bezuelungen a verfollegt d'Rang, alles iwwer d'API.
Kuckt d'vollstänneg Präis-TabellDu behälts 70% Vun deem, wat Är Connect-Mode-Annonceuren fir hir Annoncen bezuelen — automatesch op Äre Portemonnaie bezuelt. Kuckt hei ënnen, wéi et funktionéiert.
All Ufroen ginn mam Authorization-Header an engem geheime Schlëssel mam Bearer-Schema authentifizéiert.
POST https://api.adhub365.com/v1/partner/ads
Authorization: Bearer sk_sandbox_...
Content-Type: application/jsonAPI-Schlëssel ginn vum Annual Ads-Team un genehmegt Partnerkonten erausginn.
Maacht e Partnerkonto op| POST | /v1/partner/advertisersErstellt e Reklammekonto am Numm vun engem vun äre Benotzer (Connect-Modus). | advertisers:write |
| GET | /v1/partner/advertisers/{id}Sicht no engem Annonceurkont, deen vun dësem Partner erstallt gouf. | advertisers:read |
| POST | /v1/partner/adsMaacht eng Annonce. Si fänkt am Entworf-Status un. Optiounell advertiser_type-, promotion_type-, link_type- a promoted_brand-Felder beschreiwen Affiliate-, Referral-, Creator- oder individuell Reklamm — kuckt d'Notiz hei ënnen. | ads:write |
| GET | /v1/partner/ads/{id}Sicht eng Annonce no. | ads:read |
| PATCH | /v1/partner/ads/{id}Aktualiséiert den Editorial-Inhalt — Titel, Beschreiwung, Link, Annonceurtyp, Promotiounstyp, Linktyp an d'geförderte Mark. Kategorie, Geographie an alles, wat vum Ranking-Motor gelies gëtt, kann hei ni geännert ginn. | ads:write |
| POST | /v1/partner/ads/{id}/imageLued direkt eng Annoncbild erop (JPEG/PNG/WebP, maximal 5 MB). Erfuerderlech virun der éischter Bezuelung — kuckt d'Bezuelungsgrupp hei ënnen. | ads:write |
| POST | /v1/partner/ads/{id}/image-urlSetzt d'Bild vun enger Annonce vun enger URL unstatt eng Datei eropzelueden — de Server luet et selwer erof a hostet et nees. Déi selwecht Ufuerderung: néideg virun der éischter Bezuelung. | ads:write |
| GET | /v1/partner/ads/{id}/rankAktuell Rang, Kategorie an geographeschen Ëmfang fir eng Annonce. | ads:read |
| GET | /v1/partner/ads/{id}/statsD'Gesamtzuel vun Usiichten a Klicks fir eng Annonce — d'Zuel vun de vergaangene/nach verbleiwen Deeg stamen aus de Felder activated_at an expires_at, déi schonn iwwer GET /{id} verfügbar sinn, an de Rang stamt aus GET /{id}/rank. | ads:read |
| POST | /v1/partner/paymentsFänkt eng Krypto-Zuelung fir eng initial Kaaf oder e Oplued un. Eng initial Zuelung feelt mat 422, ausser d'Annonce huet schonn e Bild — kuckt uploadAdImage/setAdImageUrl uewen. | payments:write |
| GET | /v1/partner/payments/{id}De Status vun enger Bezuelung iwwerpréiwen. | payments:read |
| POST | /v1/partner/referralsErstellt e Weiderleeschtungslink. | referrals:write |
| GET | /v1/partner/referrals/{code}/earningsKumulativ Referral-Verdéngschter, opgedeelt no Status. | referrals:read |
| GET | /v1/partner/ad-revenue/earningsÄre 70 % Undeel vun deem, wat d'Annonceuren, déi Dir am Connect-Modus erstallt hutt, fir hir Annoncen bezuelt hunn, opgedeelt no Status. | ad-revenue:read |
| GET | /v1/partner/access-logKomplett Uruffgeschicht fir dëse Schlëssel — Method, Pfad, IP, Zäitstempel. | Do |
| GET | /v1/rankings?category={id}&geo={scope}Lies-nëmmen-Ranking fir eng Kategorie an e geographesche Beräich. | ëffentlech |
| GET | /v1/tiersDéi 7 konfiguréiert Präisniveauen (Schwelle, fräigeschaltete Virdeeler). | ëffentlech |
| GET | /v1/referral-programDéi aktuell aktiv Kommissiounsquoten fir d'Weiderempfehlungskaskade an de Leaders-Pool. | ëffentlech |
| GET | /v1/partner-programDen aktuellen Undeel vun de Reklamm-Akommes (Connect-Modus) tëscht Iech an Annual Ads. | ëffentlech |
| GET | /v1/search?q={query}Sich an der Naturalsprooch — routet eng Ufro wéi "Möbelannouncer a Kenia" op déi entspriechend Kategorie an de geographesche Geltungsberäich, an zréckgëtt duerno déi exakt reell Reiefolleg vun deem Ranking. | ëffentlech |
Partner- a Weiderempfehlungsmarketing
advertiser_type, promotion_type, link_type an promoted_brand sinn optional Felder op POST an PATCH /v1/partner/ads — Annual Ads ass net limitéiert op Betriber, déi sech selwer annoncéieren. Wann link_type affiliate_link oder referral_invitation_link ass, oder promotion_type affiliate_offer oder referral_opportunity ass, muss affiliate_terms_accepted op true gesat ginn, soss gëtt d'Ufro mat engem 422 ofgeleent. De Titel ass op 35 Zeechen limitéiert an d'Beschreiwung op 80 — béid ginn op der Server-Säit duerchgesat, net nëmmen an der Dashboard-UI.
All Annonceurkont kritt e Set vu agebaute KI-Tools — e Generator fir Annoncëinhalt a Visualen, e konversationellen Assistent, e Budgetberoder an en externen SEO-Auditor — déi mat KI-Kreditter bezuelt ginn, zousätzlech zum festen jäerlechen Präis.
| POST | /v1/advertisers/{id}/ai/assistantAsk Annual Ads — e schwebende Konversatiounsassistent, nëmmen informativ, Liese-Zougang op Kontodonnéeën. | ëffentlech |
| POST | /v1/advertisers/{id}/ai/creative-studioGeneréiert e Annoncetitel, eng Beschreiwung an Schlësselwierder aus enger kuerzer Firmenbeschreiwung. | 2 Kreditter |
| POST | /v1/advertisers/{id}/ai/creative-studio/imageGeneréiert eng Lëschtvisual (PNG) aus derselwechter Geschäftsbeschreiwung, gehostet a prett fir un eng Annonce unzebannen. | 8 Kreditter |
| POST | /v1/advertisers/{id}/ai/budget-advisorEng richteg statistesch Projektioun — ni eng generativ Schätzung — vun de Chancen, e bestëmmten Rang no 30, 90 oder 365 Deeg ze behalen. | 1 Kreditter |
| POST | /v1/advertisers/{id}/ai/seo-auditAnalyséiert d'extern Websäit vum Annonceur a proposéiert konkret SEO-Verbesserungen. | 2 Kreditter |
Déi selwecht Kategorie an d'Geschäftsbeschreiwung dréien och de Bildgenerator hei ënnen un.
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
}Generéiert eng entspriechend Visual fir déi selwecht Annonce:
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
}Setzt eng fäerdeg Annonce-Eenheet op Är eege Websäit — ouni Opbau-Schrëtt, ouni Iframe. D'Script renderéiert direkt an d'Säit bannent engem isoléierten Shadow DOM, sou datt seng Stiler ni op Är Websäit iwwergräifen, an d'Stiler vun Ärer Websäit ni doranner.
<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>Standardméisseg weist dëst d'vollstänneg ëffentlech Ranking vun der Kategorie — all Annonceur op der Plattform, net nëmmen déi, déi Dir iwwer Connect-Modus bruecht hutt. Fir nëmmen d'Annonce vun de Annonceuren ze weisen, déi Dir iwwer Connect-Modus erstallt hutt (déi Äre Undeel generéieren), füügt data-partner mat Ärer Partner-ID derbäi (fannt se op der Entwéckler-Säit vun Ärem eegene Dashboard):
<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>Wann Är Annonceuren iwwer verschidde Kategorien verdeelt sinn, looss d'Attribut data-category ganz ewech – mat nëmmen dem Attribut data-partner weist de Widget all Är Annoncen iwwer all Kategorien an engem eenzege Raster, amplaz datt Dir fir all Kategorie en eenzege Widget-Block braucht:
<div
class="annualads-widget"
data-geo="global"
data-partner="YOUR_PARTNER_ID"
></div>
<script async src="https://adhub365.com/widget.js"></script>Wëllt Dir eng Footer-Stil-Eenheet nieft där an der Inhalts-Eenheet, déi all verschidde Annoncen weisen? Füügt e zweeten Widget-Block mat data-layout="compact" (eng eenzel Annonce, déi an eng kleng Pëll zesummegefaasst ka ginn) an mat data-offset op de Wäert gesat, wéi vill Annoncen Äre éischte Widget schonn weist:
<!-- 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 vun der Kategorie fir unzeweisen. Erfuerderlech — ausser wann data-partner gesat ass, well an deem Fall d'Ausloossung d'Annonce vum Partner an all Kategorie weist. |
data-geo | Geografeschen Ëmfang: lokal, regional oder global. Voreingestallt op global. |
data-count | Zuel vun Annoncen, déi ugewisen ginn. Standard ass 4. |
data-columns | Zuel vun de Spalten am Raster. Standard ass 2. |
data-layout | grid, list oder compact. Als Standard gëtt op grid gesat. compact weist eng eenzeg Annonce (data-count gëtt ignoréiert) mat engem Knäppchen, fir se an eng kleng Pëll ze falen an erëm zréckzebréngen — eng Footer-Stil-Eenheet, déi vum Skript selwer ni fest positionéiert gëtt; du plazéiers an stiles de Container-div wéi du wëlls op denger eegener Säit. |
data-offset | Zuel vun uewerst gerankten Annoncen, déi iwwersprongen ginn. De Standardwäert ass 0. Erlaabt engem zweeten Widget op derselwechter Säit (z. B. engem kompakten am Footer an engem Raster-Widget méi uewen) aner Annoncen unze weisen, amplaz déi selwecht zweemol ze widderhuelen — gëtt d'Zuel vun den Annoncen un, déi deen aneren Widget schonn weist. |
data-partner | Äre Partner-ID (fannt se op der Entwéckler-Säit vun Ärem Dashboard). Optiounal — ouni se weist de Widget d'voll ëffentlech Ranglëscht fir déi Kategorie, all Annonceur op der Plattform. Mat där ID weist de Widget nëmmen d'Annonce vun de Annonceuren, déi Dir iwwer de Connect-Modus bruecht hutt — déi, déi wierklech Äre Undeel generéieren. |
Ufroen si pro Schlëssel pro Minutt limitéiert. All authentifizéiert Äntwert enthält d'Header X-RateLimit-Limit, X-RateLimit-Remaining an X-RateLimit-Reset; wann de Limit iwwerschratt gëtt, gëtt de Status 429 Too Many Requests mat engem Retry-After-Header zréckginn.
Optional, pro Partner. Bis Dir en Eintrag derbäisetzt, akzeptéieren Är Schlësselen Ufroen vun all IP-Adress — den éischten Eintrag setzt all d'Schlësselen vun deem Partner op erlaabte Lëscht nëmmen.
All Webhook gëtt mat HMAC-SHA256 ënnerschriwwen, mat engem eemoleg erausginnten Geheimnis zur Zäit vun der Erstelle — iwwerpréift d'Ënnerschrëft ier Dir der Payload vertraut. Evenementer ginn nëmmen un de Partner geliwwert, deen dee jeeweilegen Annonceur besëtzt.
payment.succeeded | Eng Bezuelung ass bestätegt. |
payment.refunded | Eng Remboursement gëtt ausgefouert. |
ad.activated | Eng Annonce gëtt aktiv, automatesch oder no der Iwwerpréiwung vum Administrator. |
invoice.issued | Eng Rechnung gëtt ausgestallt. |
referral.payout.completed | Eng Verweiskommissioun erreecht de bezuelten Status. |
referral.payout.failed | Eng Ausbezuelungsserie fir Verweisungen beim Provider feelt — d'Verdéngschter ginn zréck an d'ausstehend Ausbezuelungen a ginn nees versicht. |
rank.changed | D'Rang vun enger Annonce ännert sech — och wann eng Bezuelung vun engem aneren Annonceur dozou féiert. |
ad.expiring_soon | 30, 7 oder 1 Dag(en) virun dem Oflaaf vun enger Annonce. |
partner_ad_revenue.payout.completed | Eng Ausbezuelung vum Annonceinnahmedeel erreecht de bezuelten Status. |
partner_ad_revenue.payout.failed | Eng Ausbezuelungsbatch fir d'Reklammeinnahme-Verdeelung beim Provider feelt — d'Anteile ginn zréck an d'Zuelbar a ginn nees probéiert. |
Offiziell JavaScript-/TypeScript- a Python-SDKs, déi op där selwechter API-Spezifikatioun baséieren, sinn geplangt, awer nach net verëffentlecht — benotzt bis dohinner direkt d'HTTP-API.
Nach keen SDK — dës ruffen d'HTTP-API direkt un a funktionéieren haut an all Sprooch.
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": "...",
},
)