Konstruu rekte sur la platformo Annual Ads — kreu reklamantojn, publikigu reklamojn, iniciatu pagojn kaj spuru rangon, tute per la API.
Vidu la plenan prezotabelonVi konservas 70%-on. de tio, kion viaj reklamantoj en la Konekta reĝimo pagas por siaj reklamoj — aŭtomate pagite al via monujo. Vidu sube, kiel ĝi funkcias.
Ĉiu peto estas aŭtentigita per sekreta ŝlosilo en la aŭtoriza kaplinio, uzante la Bearer-skemon.
POST https://api.adhub365.com/v1/partner/ads
Authorization: Bearer sk_sandbox_...
Content-Type: application/jsonAPI-ŝlosiloj estas eldonitaj al aprobitaj partneraj kontoj de la Jara Reklamteamo.
Kreu partneran konton| POST | /v1/partner/advertisersKreu reklamantan konton nome de unu el viaj uzantoj (Konekta reĝimo). | advertisers:write |
| GET | /v1/partner/advertisers/{id}Serĉu reklamantan konton kreitan de ĉi tiu partnero. | advertisers:read |
| POST | /v1/partner/adsKreu anoncon. Ĝi komenciĝas en skiza stato. La laŭvolaj kampoj advertiser_type, promotion_type, link_type kaj promoted_brand priskribas filian, referencan, kreintan aŭ individuan reklamadon — vidu la noton sube. | ads:write |
| GET | /v1/partner/ads/{id}Serĉu anoncon. | ads:read |
| PATCH | /v1/partner/ads/{id}Ĝisdatigu la redaktan enhavon — titolo, priskribo, ligilo, reklamanto-tipo, promocio-tipo, ligilo-tipo kaj promociita marko. Kategorio, geografio kaj ĉio, kion la rangiga motoro legas, ĉi tie neniam povas esti ŝanĝita. | ads:write |
| POST | /v1/partner/ads/{id}/imageAlŝutu reklaman bildon rekte (JPEG/PNG/WebP, maksimume 5 MB). Necesas antaŭ la unua pago — vidu la paggrupon sube. | ads:write |
| POST | /v1/partner/ads/{id}/image-urlAgordu la bildon de anonco per URL anstataŭ alŝuti dosieron — la servilo mem elprenas kaj gastigas ĝin. Sama postulo: necesas antaŭ la unua pago. | ads:write |
| GET | /v1/partner/ads/{id}/rankNuna rango, kategorio kaj geografia amplekso por anonco. | ads:read |
| GET | /v1/partner/ads/{id}/statsLa totalaj vidoj kaj klakoj de anonco — la nombro da pasintaj/restantaj tagoj devenas de la kampoj activated_at kaj expires_at jam haveblaj per GET /{id}, kaj la rango devenas de GET /{id}/rank. | ads:read |
| POST | /v1/partner/paymentsKomencu kriptopagon por komenca aĉeto aŭ por replenigo. Komenca pago malsukcesas kun 422, krom se la anonco jam havas bildon — vidu uploadAdImage/setAdImageUrl supre. | payments:write |
| GET | /v1/partner/payments/{id}Kontrolu la staton de pago. | payments:read |
| POST | /v1/partner/referralsKreu referencan ligilon. | referrals:write |
| GET | /v1/partner/referrals/{code}/earningsKumulaj referencaj enspezoj, disigitaj laŭ statuso. | referrals:read |
| GET | /v1/partner/ad-revenue/earningsVia 70%-a parto de tio, kion la reklamantoj, kiujn vi kreis en Konekta reĝimo, pagis por siaj anoncoj, disigita laŭ statuso. | ad-revenue:read |
| GET | /v1/partner/access-logKompleta vokhistorio por ĉi tiu ŝlosilo — metodo, vojo, IP-adreso, tempostampo. | Tie |
| GET | /v1/rankings?category={id}&geo={scope}Nur-legada rangigo por kategorio kaj geografia amplekso. | Publika |
| GET | /v1/tiersLa 7 agorditaj prezniveloj (sojlo, malŝlositaj avantaĝoj). | Publika |
| GET | /v1/referral-programLa komisionaj procentoj nuntempe aktivaj por la referenca kaskado kaj la gvidantaro-poto. | Publika |
| GET | /v1/partner-programLa nuna disdono de reklamenspezoj (Konekta reĝimo) inter vi kaj Annual Ads. | Publika |
| GET | /v1/search?q={query}Serĉo en natura lingvo — direktas demandon kiel "meblo-reklamantoj en Kenjo" al la kongrua kategorio kaj geografia amplekso, poste redonas tiun rangigon en ĝia preciza reala ordo. | Publika |
Afilia kaj referenca reklamado
advertiser_type, promotion_type, link_type, kaj promoted_brand estas opciaj kampoj en POST kaj PATCH /v1/partner/ads — Annual Ads ne limiĝas al entreprenoj, kiuj reklamas sin mem. Kiam link_type estas affiliate_link aŭ referral_invitation_link, aŭ promotion_type estas affiliate_offer aŭ referral_opportunity, affiliate_terms_accepted devas esti vera, alie la peto estas malakceptita per 422. La titolo estas limigita al 35 signoj kaj la priskribo al 80 — ambaŭ limigoj estas devigataj servilflanke, ne nur en la uzantinterfaco de la panelo.
Ĉiu reklamanta konto ricevas aron da enkonstruitaj AI-iloj — generilon de reklamaj enhavoj kaj vidaj elementoj, konversacian asistanton, buĝetan konsiliston kaj eksteran SEO-revizoron — pagatajn per AI-kreditoj krom la fiksa jara kotizo.
| POST | /v1/advertisers/{id}/ai/assistantAsk Annual Ads — flosanta konversacia asistanto, nur informativa, nur legenda pri konto-datumoj. | Publika |
| POST | /v1/advertisers/{id}/ai/creative-studioGeneru reklamotitolon, priskribon kaj ŝlosilvortojn el mallonga komerca priskribo. | 2 kredito(j) |
| POST | /v1/advertisers/{id}/ai/creative-studio/imageKreu listigan bildon (PNG) el la sama komerca priskribo, gastigitan kaj pretan por aldoni al anonco. | 8 kredito(j) |
| POST | /v1/advertisers/{id}/ai/budget-advisorVera statistika projekcio — neniam generativa supozo — de la probabloj konservi donitan rangon je 30/90/365 tagoj. | 1 kredito(j) |
| POST | /v1/advertisers/{id}/ai/seo-auditAnalizu la propran eksteran retejon de la reklamanto kaj proponu konkretajn SEO-plibonigojn. | 2 kredito(j) |
La sama kategorio kaj komerca priskribo ankaŭ funkciigas la bildogeneratoron sube.
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
}Kreu kongruan vidigilon por la sama reklamo:
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
}Metu pretfaran reklaman unuon sur vian propran retejon — sen konstrua paŝo, sen iframe. La skripto redonas sin rekte en la paĝo ene de izolita Shadow DOM, do ĝiaj stiloj neniam likas en vian retejon, kaj la stiloj de via retejo neniam likas en ĝin.
<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>Defaŭlte ĉi tio montras la plenan publikan rangigon de la kategorio — ĉiun reklamanton sur la platformo, ne nur tiujn, kiujn vi alportis. Por montri nur la anoncojn de reklamantoj, kiujn vi kreis per la konekta reĝimo (tiuj, kiuj generas vian parton), aldonu data-partner kun via partnera ID (trovu ĝin sur la disvolvantoj-paĝo de via propra panelo):
<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 viaj reklamantoj etendiĝas tra pluraj kategorioj, forigu tute la atributon data-category — kun nur data-partner la videto montras ĉiujn viajn reklamojn tra ĉiuj kategorioj en unu krado, anstataŭ bezoni po unu videtan blokon por ĉiu kategorio:
<div
class="annualads-widget"
data-geo="global"
data-partner="YOUR_PARTNER_ID"
></div>
<script async src="https://adhub365.com/widget.js"></script>Ĉu vi volas piedlinian unuon apud via enhava unu, ĉiu montranta malsamajn reklamojn? Aldonu duan vidjetblokon kun data-layout="compact" (unu reklamo, kunpremebla en malgrandan pilolon) kaj data-offset agordita al kiom da reklamoj via unua vidjeto jam montras:
<!-- 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 kategorio por montri. Postulata — krom se data-partner estas agordita; tiam ĝia forigo montras la anoncojn de tiu partnero en ĉiuj kategorioj. |
data-geo | Geografia amplekso: loka, regiona aŭ tutmonda. Defaŭlte tutmonda. |
data-count | Nombro de anoncoj por montri. La defaŭlto estas 4. |
data-columns | Nombro de kradkolumnoj. La defaŭlto estas 2. |
data-layout | krado, listo aŭ kompakta. La defaŭlto estas krado. Kompakta montras unu reklamon (data-count estas ignorata) kun butono por kunpremi ĝin en malgrandan pilolon kaj reestigi ĝin — unuo en piedlinia stilo, neniam fikse poziciigita de la skripto mem; vi mem metas kaj stiligas la konteneran div-elementon laŭplaĉe sur via propra paĝo. |
data-offset | Nombro de plej alte rangitaj anoncoj por preterlasi. La defaŭlta valoro estas 0. Permesas al dua vidigilo sur la sama paĝo (ekz. kompakta en la piedlinio kaj krada pli supre) montri malsamajn anoncojn anstataŭ duoble ripeti la saman — pasigu la nombron de anoncoj, kiujn la alia vidigilo jam montras. |
data-partner | Via partnera ID (trovu ĝin en la programistopaĝo de via propra instrumentpanelo). Ne deviga — sen ĝi la videto montras la plenan publikan rangon por tiu kategorio, ĉiun reklamanton sur la platformo. Kun ĝi, nur anoncoj de reklamantoj, kiujn vi alportis per la Connect-reĝimo — tiuj, kiuj efektive generas vian parton. |
Petooj estas limigitaj per ŝlosilo je minuto. Ĉiu aŭtentigita respondo portas la kapliniojn X-RateLimit-Limit, X-RateLimit-Remaining kaj X-RateLimit-Reset; superi la limon redonas 429 Tro Multaj Petooj kun la kaplinio Retry-After.
Laŭvola, por ĉiu partnero. Ĝis vi aldonos eniron, viaj ŝlosiloj akceptas petojn de iu ajn IP-adreso — la unua eniro ŝanĝas ĉiujn ŝlosilojn de tiu partnero al nur-permeslisto.
Ĉiu webhook estas subskribita per HMAC-SHA256 uzante sekretejon eldonitan unufoje ĉe ĝia kreo — kontrolu la subskribon antaŭ ol fidi la ŝarĝaĵon. Eventoj estas liverataj nur al la partnero, kiu posedas la rilatan reklamanton.
payment.succeeded | Pago estas konfirmita. |
payment.refunded | Repago estas efektivigita. |
ad.activated | Reklamo aktiviĝas aŭtomate aŭ post administra revizio. |
invoice.issued | Fakturo estas eldonita. |
referral.payout.completed | Referenca komisiono atingas pagitan staton. |
referral.payout.failed | Serio de referencaj pagoj malsukcesas ĉe la provizanto — enspezoj revenas al pagenda kaj estas re-provataj. |
rank.changed | La rango de anonco ŝanĝiĝas — inkluzive kiam pago de alia reklamanto kaŭzas ĝin. |
ad.expiring_soon | 30, 7 aŭ 1 tago(j) antaŭ ol anonco eksvalidiĝas. |
partner_ad_revenue.payout.completed | Pagado de enspezdividado de reklamoj atingas pagitan staton. |
partner_ad_revenue.payout.failed | Pago-aro de enspezdividado de reklamoj malsukcesas ĉe la provizanto — la partoj revenas al pagenda kaj estas re-provataj. |
Oficialaj JavaScript-/TypeScript- kaj Python-SDK-oj, generitaj el ĉi tiu sama API-specifo, estas planitaj sed ankoraŭ ne publikigitaj — ĝis tiam alvoku la HTTP-API-n rekte.
Ankoraŭ ne ekzistas SDK — ĉi tiuj vokas la HTTP-API-on rekte kaj hodiaŭ funkcias en ajna lingvo.
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": "...",
},
)