Annual Ads

Dokumentatioun fir Entwéckler

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

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

Basis-URL

https://api.adhub365.com
OpenAPI 3

Authentifikatioun

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

Sandbox & Produktioun

Sandbox- a Produktiounsschlësselen sinn vollstänneg vuneneen isoléiert — e Sandbox-Schlëssel kann ni Donnéeën liesen oder schreiwen, déi vun engem Produktiounsschlëssel erstallt goufen, an ëmgedréint.

Ziichter

All Schlëssel ass op déi Bereicher limitéiert, fir déi en erausginn gouf — e Schlëssel huet ni méi Zougang wéi de Partnerkont, deen en erstallt huet.

API-Schlëssel ginn vum Annual Ads-Team un genehmegt Partnerkonten erausginn.

Maacht e Partnerkonto op

Reklammeinnahmeverdeelung

Wann Är API-Schlësselen fir Är eege Benotzer Annonceur-Konten erstellen (Connect-Modus — kuckt hei uewen bei Authentifikatioun), verdéngt Dir e Undeel vun deem, wat dës Annonceuren fir hir Annoncen bezuelen. De Split hei ënnen gëtt direkt vun deemselwechte Endpunkt gelies, ni hart kodéiert, a steet komplett onofhängeg vun der Referral-Kommissioun, déi méi wäit ënnen op dëser Säit steet.

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

70%

Gëllt fir dech

Gezielt automatesch op Äre konfiguréierten Ausbezuelungs-Wallet — keng Ausbezuelungsufro néideg.

30%

Geet op d'Joresannoncen

Deckt d'Moderatioun, d'Hosting an d'Ranking-Infrastruktur of, op där Är Annoncen lafen.

Wéi et funktionéiert

  1. Ee vun äre Connect-Mode-Annonceuren bezilt fir eng Annonce iwwer Är Integratioun.
  2. D'Annonce gëtt iwwerpréift an genehmegt — automatesch oder vun eisem Moderatiounsteam.
  3. Äre Undeel steet an der Warteschlaang fir eng automatesch Ausbezuelung an Ärem Wallet, dee selwechte Mechanismus wéi am Referralprogramm hei ënnen.
Eng Aktie gëtt ni erstallt, ier d'Annonce wierklech guttgeheescht ass — wann d'Moderatioun se ofleent, besteet keng Verpflichtung fir déi Bezuelung. Eng Opluede op eng schonn aktiv Annonce bréngt kee sou Risiko mat sech a gëtt direkt gedeelt.

Ausbezuelungsbedéngungen

  • E Krypto-Ausbezuelungs-Wallet ass op Ärem Partnerkont konfiguréiert.
  • Op ärer Säit ass keng KYC néideg — ären Partnerkont gouf schonn bei der Erstellunge iwwerpréift.

Beispill: geliesene akkumuléiert Aktien

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
}

Endpunkten

Konten

POST/v1/partner/advertisers

Erstellt 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

Annoncen

POST/v1/partner/ads

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

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

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

Aktuell Rang, Kategorie an geographeschen Ëmfang fir eng Annonce.

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

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

Bezuelungen

POST/v1/partner/payments

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

Weiderempfehlungen

POST/v1/partner/referrals

Erstellt e Weiderleeschtungslink.

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

Kumulativ Referral-Verdéngschter, opgedeelt no Status.

referrals:read

Reklammeinnahmeverdeelung

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

Zougangslog

GET/v1/partner/access-log

Komplett Uruffgeschicht fir dëse Schlëssel — Method, Pfad, IP, Zäitstempel.

Do

ëffentlech Endpunkten

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

Lies-nëmmen-Ranking fir eng Kategorie an e geographesche Beräich.

ëffentlech
GET/v1/tiers

Déi 7 konfiguréiert Präisniveauen (Schwelle, fräigeschaltete Virdeeler).

ëffentlech
GET/v1/referral-program

Déi aktuell aktiv Kommissiounsquoten fir d'Weiderempfehlungskaskade an de Leaders-Pool.

ëffentlech
GET/v1/partner-program

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

KI-Tools

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.

Dës ginn iwwer de Login vum Dashboard vum Annonceur selwer (e Session-Zougangstoken) ofgeruff, net iwwer eng Partner-API-Schlëssel — eng Integratioun vun engem Drëtte kann se net am Numm vum Annonceur uruffen.
POST/v1/advertisers/{id}/ai/assistant

Ask Annual Ads — e schwebende Konversatiounsassistent, nëmmen informativ, Liese-Zougang op Kontodonnéeën.

ëffentlech
POST/v1/advertisers/{id}/ai/creative-studio

Generéiert e Annoncetitel, eng Beschreiwung an Schlësselwierder aus enger kuerzer Firmenbeschreiwung.

2 Kreditter
POST/v1/advertisers/{id}/ai/creative-studio/image

Generé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-advisor

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

Analyséiert d'extern Websäit vum Annonceur a proposéiert konkret SEO-Verbesserungen.

2 Kreditter

Beispill — Annoncëinhalt generéieren

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
}

Widget

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.

Füügt et op Är Säit derbäi.

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

Eegeschaften

data-categoryID 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-geoGeografeschen Ëmfang: lokal, regional oder global. Voreingestallt op global.
data-countZuel vun Annoncen, déi ugewisen ginn. Standard ass 4.
data-columnsZuel vun de Spalten am Raster. Standard ass 2.
data-layoutgrid, 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-offsetZuel 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.

Akommesdeelung

Wéi eng Verweiskommissioun vun engem Partner hinnen eigentlech zougänglech gëtt — de Prozentsaz, de Bezuelungsmechanismus an d'Viraussetzungen.

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
}

Keng fest Zuel

De Kommissiounssaz ass op eiser Säit konfiguréiert a kann sech änneren — lies en ëmmer live vun dësem Endpunkt amplaz e Wäert fest ze kodéieren.

Vollautomatesch

Et gëtt keen Ofzuchsendpunkt. Eng geplangte Aufgab generéiert ausbezuelbar Verdéngschter, gruppéiert se pro Annonceur a bezilt se automatesch aus, soubal all ënnen opgelëscht Konditiounen erfëllt sinn.

Ausbezuelungsbedéngungen

  • Déi total bezuelswäert Verdéngscht vum Annonceur erreechen de Mindestausbezuelungsbetrag.
  • En Krypto-Ausbezuelungs-Wallet ass op hirem Kont konfiguréiert.
  • Hiren KYC-Status ass verifizéiert.

Beispill: d'akkumuléiert Verdéngschter liesen

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
}

Präisniveauen (lieweg)

Lies live vun dësem Endpunkt — hardcodéier dës Wäerter ni, si kënnen op eiser Säit geännert ginn. Baut e Preissniveau-Auswieler fir Är eege Benotzer amplaz vun engem Feld fir e fräie Betrag: All ugewisenen Präis ass schonn de präzise Betrag, deen bei der Bezuelungserstellung verschéckt gëtt, an déi hei ugewisenen fräigeschalteten Virdeeler soen de Benotzer genee, wat dee Präis hinnen bitt, sou datt si e Präis auswielen, deen si verstoen, amplaz eng Zuel ze raten.

StufPräisSchléisst op
Bronze$50.00

Basic visibility

Silver$300.00

Clickable link unlocked

Klickbare Link
Gold$500.00

Animation unlocked

Klickbare LinkAnimatioun
Platinum$1,000.00

Enhanced exposure

Klickbare LinkAnimatioun
Diamond$2,500.00

Premium placement

Klickbare LinkAnimatioun
Elite$5,000.00

Top-tier visibility

Klickbare LinkAnimatioun
Legendary$10,000.00

Maximum visibility & branding

Klickbare LinkAnimatioun

Ratenlimiten

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.

IP-Erlaabnislëscht

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.

Webhooks

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.succeededEng Bezuelung ass bestätegt.
payment.refundedEng Remboursement gëtt ausgefouert.
ad.activatedEng Annonce gëtt aktiv, automatesch oder no der Iwwerpréiwung vum Administrator.
invoice.issuedEng Rechnung gëtt ausgestallt.
referral.payout.completedEng Verweiskommissioun erreecht de bezuelten Status.
referral.payout.failedEng Ausbezuelungsserie fir Verweisungen beim Provider feelt — d'Verdéngschter ginn zréck an d'ausstehend Ausbezuelungen a ginn nees versicht.
rank.changedD'Rang vun enger Annonce ännert sech — och wann eng Bezuelung vun engem aneren Annonceur dozou féiert.
ad.expiring_soon30, 7 oder 1 Dag(en) virun dem Oflaaf vun enger Annonce.
partner_ad_revenue.payout.completedEng Ausbezuelung vum Annonceinnahmedeel erreecht de bezuelten Status.
partner_ad_revenue.payout.failedEng Ausbezuelungsbatch fir d'Reklammeinnahme-Verdeelung beim Provider feelt — d'Anteile ginn zréck an d'Zuelbar a ginn nees probéiert.

Softwareentwécklungs-Kits

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.

Schnellstart

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