Annual Ads

Documentacion del desvolopaire

Construïtz dirèctament sus la plataforma Annual Ads — crea anunciants, publica anóncias, desencadena los pagaments e seguís lo classament, totament a travèrs de l'API.

Veire la grilha de preus completa

Gardatz 70% de çò que vòstres anunciants en mòde Connect pagan per lors anóncias — pagat automaticament dins vòstre portamoneda. Vejatz cossí fonciona çai jos.

URL de basa

https://api.adhub365.com
OpenAPI 3

Autentificacion

Cada requèsta es autenticada amb una clau secreta dins l'entèsta d'autorizacion, en utilizant l'esquema Bearer.

POST https://api.adhub365.com/v1/partner/ads
Authorization: Bearer sk_sandbox_...
Content-Type: application/json

Espaci de proves e produccion

Las claus de sandbox e de produccion son completament isoladas entre elas — una clau de sandbox pòt jamai legir ni escriure de donadas creadas per una clau de produccion, e vice versa.

Portada

Cada clau es limitada als escòps amb los quals foguèt emesa — una clau a jamai mai d'accès que lo compte partenari que l'a creada.

Las claus API son emesas als comptes de partenaris aprovats per l'equipa Publicitats Anualas.

Crear un compte de partenari

Partiment dels revenguts publicitaris

Se vòstras claus API crean de comptes d'anunciants per vòstres pròpris utilizaires (mòde Connect — veire l'autentificacion mai naut), ganhatz una partida de çò que aqueles anunciants pagan per lors anóncias. La reparticion çai jos se legís en dirècte dempuèi aquel meteis punt de fin, jamai codificada en dur, e es completament separada de la comission de referéncia mai avall sus aquesta pagina.

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

70%

Va cap a tu

Pagat automaticament dins vòstre portamonèda de pagament configurat — cap de demanda de retirada es pas necessària.

30%

Va a las publicitats annualas

Cobre la moderacion, l'ostalatge e l'infrastructura de classament sus la quala foncionan vòstras publicitats.

Cossí fonciona

  1. Un dels vòstres anunciants en mòde Connect paga una anóncia a travèrs de vòstra integracion.
  2. La publicitat es revisada e aprovada — automaticament, o per nòstra equipa de moderacion.
  3. Ta part es mesa dins la fila d'espèra per un pagament automatic dins ton portamoneda, lo meteis mecanisme que lo programa de referéncia çai jos.
Una participacion es jamai creada abans que l'anóncia siá realament aprovada — se la moderacion la refusa, res es degut per aquel pagament. Un suplement sus una anóncia ja activa pòrta pas aquel risc e es partejat immediatament.

Condicions de pagament

  • Un portamoneda de pagament en criptomoneda es configurat sus vòstre compte de partenari.
  • Cap de KYC es pas necessari de vòstre costat — vòstre compte de partenari es ja verificat al moment de sa creacion.

Exemple: lectura de las accions acumuladas

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
}

Punts finals

Comptas

POST/v1/partner/advertisers

Crear un compte d'anunciant en nom d'un dels vòstres utilizaires (mòde Connect).

advertisers:write
GET/v1/partner/advertisers/{id}

Consultatz un compte d'anunciant creat per aqueste partenari.

advertisers:read

Publicitats

POST/v1/partner/ads

Crea una publicitat. Comença dins l'estat d'esbòs. Los camps opcionals advertiser_type, promotion_type, link_type e promoted_brand descrivon la publicitat d'afiliat, de referiment, de creator o individuala — veire la nòta çai jos.

ads:write
GET/v1/partner/ads/{id}

Cercatz una anóncia.

ads:read
PATCH/v1/partner/ads/{id}

Metre a jorn lo contengut editorial — títol, descripcion, ligam, tipe d'anunciant, tipe de promocion, tipe de ligam e marca promoguda. La categoria, la geografia e tot çò que lo motor de classament legís pòdon pas jamai èsser modificats aquí.

ads:write
POST/v1/partner/ads/{id}/image

Cargatz dirèctament una imatge d'anóncia (JPEG/PNG/WebP, 5 MB al maximum). Es necessari abans del primièr pagament — veire lo grop de pagaments çai jos.

ads:write
POST/v1/partner/ads/{id}/image-url

Defini l'imatge d'una anóncia a partir d'una URL en luòc de telecargar un fichièr — lo servidor la recupèra e la re-alòja el meteis. Mèsma exigéncia : cal abans lo primièr pagament.

ads:write
GET/v1/partner/ads/{id}/rank

Rang actual, categoria e abast geografic per una anóncia.

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

Lo nombre total de vistas e de clics per una anóncia — los jorns passats e los jorns restants venon dels camps activated_at e expires_at ja disponibles dins GET /{id}, e lo rang ven de GET /{id}/rank.

ads:read

Pagaments

POST/v1/partner/payments

Inicia un pagament en criptomoneda per una compra iniciala o per un reabastiment. Un pagament inicial falla amb 422 a mens que l'anóncia aja ja una imatge — veire uploadAdImage/setAdImageUrl çai sus.

payments:write
GET/v1/partner/payments/{id}

Verificar l'estat d'un pagament.

payments:read

Referéncias

POST/v1/partner/referrals

Crear un ligam de referéncia.

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

Ganhs acumulats de referiment, desglossats per estatut.

referrals:read

Partiment dels revenguts publicitaris

GET/v1/partner/ad-revenue/earnings

Vòstra part de 70 % de çò que los anunciants que avètz creats en mòde Connect an pagat per lors anóncias, detalhada per estat.

ad-revenue:read

Jornal d'accès

GET/v1/partner/access-log

Istoric complet dels apèls per aquesta clau — metòde, camin, adreça IP, estampilha de temps.

I a

Punts de terminus publics

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

Classament en lectura solament per una categoria e un escòp geografic.

Public
GET/v1/tiers

Los 7 nivèls de preç configurats (seuèlh, avantatges desblocats).

Public
GET/v1/referral-program

Los percentatges de comission actualament actius per la cascada de referiment e lo pòl de caps.

Public
GET/v1/partner-program

La reparticion actuala dels revenguts publicitaris (mòde Connect) entre vos e Publicitats Anualas.

Public
GET/v1/search?q={query}

Recèrca en lenga naturala — dirige una consulta coma «publicitaris de mobles en Kenya» cap a la categoria e l'escòp geografic correspondents, puèi retorna aquel classament dins son òrdre real exacte.

Public

Publicitat d'afiliacion e de recomandacion

advertiser_type, promotion_type, link_type, e promoted_brand son de camps opcionals sus POST e PATCH /v1/partner/ads — Annual Ads es pas limitat a las entrepresas que se fan publicitat. Quand link_type es affiliate_link o referral_invitation_link, o promotion_type es affiliate_offer o referral_opportunity, affiliate_terms_accepted deu èsser vertadièr, senon la demanda es rebutada amb un 422. Lo títol es limitat a 35 caractèrs e la descripcion a 80 — ambas limitacions son aplicadas del costat del servidor, pas solament dins l'interfàcia d'utilizaire del tablèu de bòrd.

Aisinas d'IA

Cada compte de publicitari obtén un ensems d'aisinas d'IA integradas — un generator de contengut e d'imatges publicitàrias, un assistent de conversacion, un conselhièr de pressupòst e un auditor SEO extern — pagadas amb crèdits d'IA, en mai del prètz annual fix.

Aquelas s'executan amb l'identificant de session de l'interfàcia de l'anunciant (un jeton d'accès de session), e non pas amb una clau API de partenari — una integracion de tèrça partida pòt pas las apelar en nom de l'anunciant.
POST/v1/advertisers/{id}/ai/assistant

Ask Annual Ads — un assistent de discussion flotant, solament informatiu, en lectura solament sus las donadas del compte.

Public
POST/v1/advertisers/{id}/ai/creative-studio

Generar un títol d'anóncia, una descripcion e de mots clau a partir d'una brèva descripcion d'entrepresa.

2 crèdit(s)
POST/v1/advertisers/{id}/ai/creative-studio/image

Generar una imatge de lista (PNG) a partir de la meteissa descripcion d'entrepresa, ospitada e prèsta per èsser adjuntada a una anóncia.

8 crèdit(s)
POST/v1/advertisers/{id}/ai/budget-advisor

Una vertadièra projeccion estatistica — jamai una estimacion generativa — de las probabilitats de manténer un rang donat a 30/90/365 jorns.

1 crèdit(s)
POST/v1/advertisers/{id}/ai/seo-audit

Analizar lo sit web exterior de l'anunciant e suggerir de melhoraments SEO concrets.

2 crèdit(s)

Exemple — generar de contengut publicitari

La meteissa categoria e la descripcion de l'entrepresa alimentan tanben lo generator d'imatges çai jos.

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
}

Generatz un visual adaptat per la meteissa anóncia:

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
}

Giteta

Deposatz una unitat publicitària prèsta sus vòstre site — sens cap de pas de construccion, sens iframe. Lo script se rendís dirèctament dins la pagina dins un Shadow DOM isolat, atal sos estils jamai se filtran dins vòstre site, e los estils de vòstre site jamai se filtran dins el.

Apondètz aquò a vòstra pagina

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

Per defaut, aquò mòstra lo classament public complet de la categoria — cada anunciant sus la plataforma, pas solament aqueles que avètz integrats. Per mostrar solament los anóncis dels anunciants que avètz creats a travèrs del mòde Connect (aqueles que generisson vòstra part), apondètz data-partner amb vòstre ID de partenari (lo trobaretz sus la pagina dels desvolopaires de vòstre tablèu de bord):

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

Se vòstres anunciants s'estenden a mantunas categorias, suprimissètz completament data-category — amb solament data-partner, lo widget aficha totes vòstres anóncias dins totas las categorias dins una sola grilha, en luòc d'aver besonh d'un blòc de widget per cada categoria:

<div
  class="annualads-widget"
  data-geo="global"
  data-partner="YOUR_PARTNER_ID"
></div>
<script async src="https://adhub365.com/widget.js"></script>

Volètz una unitat en estil de piè de pagina al costat de la vòstra unitat dins lo contengut, caduna mostrant d'anóncias diferentas? Apondètz un segond blòc de widget amb data-layout="compact" (una anóncia unica, plegabla dins una pichòta pílula) e data-offset ajustat al nombre d'anóncias que vòstre primièr widget ja mòstra:

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

Atributs

data-categoryID de categoria a afichar. Obligatòri — a mens que data-partner siá definit, dins aquel cas, en ometent-lo, se mostraràn los anóncias d'aquel partenari dins cada categoria.
data-geoPortada geografica: locala, regionala o globala. Per defaut, es globala.
data-countNombre d'anóncias d'afichar. Per defaut, 4.
data-columnsNombre de colomnas de la grilha. Per defaut, es 2.
data-layoutgrilha, lista o compacte. Per defaut, es en grilha. Lo mòde compacte aficha una sola publicitat (lo nombre de donadas es ignorat) amb un boton per la plegar dins una pichona pastilha e la tornar afichar — una unitat al estil de piè de pagina, jamai posicionada fixa pel script meteis ; plaças e estilas lo contenidor div coma vòls sus ta pròpria pagina.
data-offsetNombre d'anóncias de nauta classificacion a saltar. Per defaut, es a 0. Permet a un segond widget sus la meteissa pagina (per exemple, un de compacte dins lo pè de pagina e un en grilha mai naut) de mostrar d'anóncias diferentas en luòc de repetir la meteissa anóncia doas còps — passatz lo nombre d'anóncias que l'autre widget ja mòstra.
data-partnerTon ID de partenari (lo tròbas sus la pagina dels desvolopaires de ton tablèu de bord). Opcional — sens aquò, lo widget aficha lo classament public complet d'aquela categoria, amb totes los anunciants de la plataforma. Amb aquò, solament las publicitats dels anunciants que as integrats en mòde Connect — aquelas que generisson realament ta part.

Partiment dels revenguts

Cossí la comission de referiment d'un partenari arriba realament a el — lo percentatge, lo mecanisme de pagament e las precondicionas.

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
}

Non es un nombre fix

Lo percentatge de la comission es configurat de nòstre costat e pòt cambiar — legissètz-lo totjorn en dirècte dempuèi aqueste punt final puslèu que d'encodar una valor fixa.

Totalament automatic

Non i a cap de punt de retirada. Un trabalh programat genera de ganhs pagables, los agrupa per anunciant e los paga automaticament un còp que totas las condicions seguentas son satisfachas.

Condicions de pagament

  • Los guanhs totals pagables de l'anunciant aténon lo montant minim de pagament.
  • Un portamoneda de pagament en criptomoneda es configurat sus lor compte.
  • Lor estatut KYC es verificat.

Exemple: legir los guanhs acumulats

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
}

Nivèls de prètz (en dirècte)

Legissètz en dirècte dempuèi aqueste punt de fin — jamai codar en dur aquelas valors, pòdon cambiar de nòstre costat. Construïtz un selector de nivèls per vòstres utilizaires en luòc d'un camp de montada liura : cada prètz afichat es ja la soma exacta de mandar al moment de crear lo pagament, e los avantatges desblocats afichats aquí dison exactament çò que aquel prètz lor balha, atal causisson un prètz que comprenon en luòc d'endevinar un nombre.

NivèlPrètzDesblòca
Bronze$50.00

Basic visibility

Silver$300.00

Clickable link unlocked

Ligam clicable
Gold$500.00

Animation unlocked

Ligam clicableAnimacion
Platinum$1,000.00

Enhanced exposure

Ligam clicableAnimacion
Diamond$2,500.00

Premium placement

Ligam clicableAnimacion
Elite$5,000.00

Top-tier visibility

Ligam clicableAnimacion
Legendary$10,000.00

Maximum visibility & branding

Ligam clicableAnimacion

Limitas de velocitat

Las demandas son limitadas per clau e per minuta. Cada responsa autenticada pòrta los en-tèstas X-RateLimit-Limit, X-RateLimit-Remaining e X-RateLimit-Reset ; se se despassa lo limit, se retorna lo còde d'error 429 Too Many Requests amb l'en-tèsta Retry-After.

Lista d'adreças IP autorizadas

Opcional, per cada partenari. Fins que n'ajustatz pas una entrada, las vòstras claus accèptan las demandas de quina adreça IP que siá — la primièra entrada met totas las claus d'aquel partenari en mòde de lista blanca solament.

Webhooks

Cada webhook es signat amb HMAC-SHA256 en utilizant un secret emés un sol còp al moment de la creacion — verificatz la signatura abans de far fisança al contengut. Los eveniments son livrats solament al partenari que possedís l'anunciant concernit.

payment.succeededUn pagament es confirmat.
payment.refundedUn remborsament es executat.
ad.activatedUna anóncia ven activa, automaticament o après la revision de l'administrator.
invoice.issuedUna factura es emesa.
referral.payout.completedUna comission de referéncia arriba al statut pagat.
referral.payout.failedUn lot de pagaments de referéncia fracassa al proveïdor — los guanhs tornan dins lo compte de pagament e son tornats ensajar.
rank.changedLo classament d'una anóncia càmbia — quitament quand es causat pel pagament d'un autre anonciaire.
ad.expiring_soon30, 7, o 1 jorn(s) abans qu'una anóncia expire.
partner_ad_revenue.payout.completedUn pagament de partatge de revenguts publicitaris atén l'estatut de pagat.
partner_ad_revenue.payout.failedUn lot de pagament de partatge de revenguts publicitaris fracassa al proveïdor — las partidas tornan dins la lista de pagaments pendents e son tornadas ensajar.

Kit de desvolopament de logicials

Los SDK oficials per JavaScript/TypeScript e Python, generats a partir d'aquesta meteissa especificacion d'API, son previstes mas pas encara publicats — utilizatz directament l'API HTTP fins alara.

Demanada rapida

Encara pas de SDK — aquelas apèlan dirèctament l'API HTTP e foncionan uèi dins quina que siá lenga.

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