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 completaGardatz 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.
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/jsonLas claus API son emesas als comptes de partenaris aprovats per l'equipa Publicitats Anualas.
Crear un compte de partenari| POST | /v1/partner/advertisersCrear 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 |
| POST | /v1/partner/adsCrea 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}/imageCargatz 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-urlDefini 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}/rankRang actual, categoria e abast geografic per una anóncia. | ads:read |
| GET | /v1/partner/ads/{id}/statsLo 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 |
| POST | /v1/partner/paymentsInicia 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 |
| POST | /v1/partner/referralsCrear un ligam de referéncia. | referrals:write |
| GET | /v1/partner/referrals/{code}/earningsGanhs acumulats de referiment, desglossats per estatut. | referrals:read |
| GET | /v1/partner/ad-revenue/earningsVò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 |
| GET | /v1/partner/access-logIstoric complet dels apèls per aquesta clau — metòde, camin, adreça IP, estampilha de temps. | I a |
| GET | /v1/rankings?category={id}&geo={scope}Classament en lectura solament per una categoria e un escòp geografic. | Public |
| GET | /v1/tiersLos 7 nivèls de preç configurats (seuèlh, avantatges desblocats). | Public |
| GET | /v1/referral-programLos percentatges de comission actualament actius per la cascada de referiment e lo pòl de caps. | Public |
| GET | /v1/partner-programLa 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.
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.
| POST | /v1/advertisers/{id}/ai/assistantAsk Annual Ads — un assistent de discussion flotant, solament informatiu, en lectura solament sus las donadas del compte. | Public |
| POST | /v1/advertisers/{id}/ai/creative-studioGenerar 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/imageGenerar 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-advisorUna 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-auditAnalizar lo sit web exterior de l'anunciant e suggerir de melhoraments SEO concrets. | 2 crèdit(s) |
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
}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.
<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>data-category | ID 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-geo | Portada geografica: locala, regionala o globala. Per defaut, es globala. |
data-count | Nombre d'anóncias d'afichar. Per defaut, 4. |
data-columns | Nombre de colomnas de la grilha. Per defaut, es 2. |
data-layout | grilha, 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-offset | Nombre 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-partner | Ton 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. |
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.
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.
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.succeeded | Un pagament es confirmat. |
payment.refunded | Un remborsament es executat. |
ad.activated | Una anóncia ven activa, automaticament o après la revision de l'administrator. |
invoice.issued | Una factura es emesa. |
referral.payout.completed | Una comission de referéncia arriba al statut pagat. |
referral.payout.failed | Un lot de pagaments de referéncia fracassa al proveïdor — los guanhs tornan dins lo compte de pagament e son tornats ensajar. |
rank.changed | Lo classament d'una anóncia càmbia — quitament quand es causat pel pagament d'un autre anonciaire. |
ad.expiring_soon | 30, 7, o 1 jorn(s) abans qu'una anóncia expire. |
partner_ad_revenue.payout.completed | Un pagament de partatge de revenguts publicitaris atén l'estatut de pagat. |
partner_ad_revenue.payout.failed | Un 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. |
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.
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": "...",
},
)