Annual Ads платформасында тікелей жұмыс істеңіз — жарнама берушілерді жасаңыз, жарнамаларды жариялаңыз, төлемдерді іске қосыңыз және рейтингті бақылаңыз, барлығы API арқылы.
Толық баға кестесін көруСіз 70%-ды сақтайсыз Connect-режиміндегі жарнама берушілеріңіз жарнамалары үшін не төлейтінін — автоматты түрде әмияныңызға аударылады. Төменде оның қалай жұмыс істейтінін көріңіз.
Әрбір сұраным Authorization басылымындағы Bearer схемасы арқылы құпия кілтпен аутентификацияланады.
POST https://api.adhub365.com/v1/partner/ads
Authorization: Bearer sk_sandbox_...
Content-Type: application/jsonAPI кілттері Жылдық жарнамалар тобымен мақұлданған серіктес есепшоттарына беріледі.
Серіктес шотын жасаңыз| POST | /v1/partner/advertisersПайдаланушыларыңыздың бірінің атынан жарнама берушінің есептік жазбасын жасаңыз (Connect режимі). | advertisers:write |
| GET | /v1/partner/advertisers/{id}Осы серіктес жасаған жарнама берушінің есептік жазбасын қарап шығыңыз. | advertisers:read |
| POST | /v1/partner/adsЖарнама жасаңыз. Ол бастапқыда жоба режимінде болады. Қосымша advertiser_type, promotion_type, link_type және promoted_brand өрістері серіктестік, сілтемелік, авторлық немесе жеке жарнаманы сипаттайды — төмендегі ескертуге қараңыз. | ads:write |
| GET | /v1/partner/ads/{id}Жарнаманы іздеңіз. | ads:read |
| PATCH | /v1/partner/ads/{id}Редакциялық мазмұнды жаңарту — тақырып, сипаттама, сілтеме, жарнама беруші түрі, акция түрі, сілтеме түрі және насихатталатын бренд. Санат, география және рейтинг жүйесі оқитын кез келген мәліметті мұнда ешқашан өзгертуге болмайды. | ads:write |
| POST | /v1/partner/ads/{id}/imageЖарнама суретін тікелей жүктеңіз (JPEG/PNG/WebP, ең көбі 5 МБ). Бірінші төлем жасалмас бұрын қажет — төмендегі төлемдер тобына қараңыз. | ads:write |
| POST | /v1/partner/ads/{id}/image-urlЖарнама суретін файлды жүктеудің орнына URL-мекенжайдан орнатыңыз — сервер оны өзі жүктеп алып, қайта орналастырады. Талап бірдей: алғашқы төлемге дейін қажет. | ads:write |
| GET | /v1/partner/ads/{id}/rankЖарнаманың ағымдағы рейтингі, санаты және географиялық ауқымы. | ads:read |
| GET | /v1/partner/ads/{id}/statsЖарнаманың жалпы көрілімдері мен басулары — өткен/қалған күндер activate_at/expires_at өрістерінен (GET /{id} арқылы) алынады, ал рангі GET /{id}/rank арқылы алынады. | ads:read |
| POST | /v1/partner/paymentsБастапқы сатып алу немесе шотты толықтыру үшін крипто төлемді бастаңыз. Егер жарнамада сурет болмаса, бастапқы төлем 422 қатесімен сәтсіз аяқталады — жоғарыдағы uploadAdImage/setAdImageUrl-ге қараңыз. | payments:write |
| GET | /v1/partner/payments/{id}Төлемнің мәртебесін тексеру. | payments:read |
| POST | /v1/partner/referralsСілтеме сілтемесін жасаңыз. | referrals:write |
| GET | /v1/partner/referrals/{code}/earningsМәртебесі бойынша бөлінген жинақталған жолдама табыстары. | referrals:read |
| GET | /v1/partner/ad-revenue/earningsСіз Connect режимінде жасаған жарнама берушілеріңіздің жарнамаларына төлеген қаражаттағы сіздің 70% үлесіңіз, мәртебесі бойынша бөлінген. | ad-revenue:read |
| GET | /v1/partner/access-logБұл кілт үшін шақыру тарихының толық жазбасы — әдіс, жол, IP, уақыт таңбасы. | Сол жерде |
| GET | /v1/rankings?category={id}&geo={scope}Санат пен географиялық ауқым бойынша тек оқуға арналған рейтинг. | Қоғамдық |
| GET | /v1/tiers7 баптаулы баға деңгейлері (шегі, ашылған артықшылықтар). | Қоғамдық |
| GET | /v1/referral-programҚазіргі уақытта рефералдық каскад пен Лидерлер пулы үшін қолданыстағы комиссия пайыздық мөлшерлемелері. | Қоғамдық |
| GET | /v1/partner-programҚазіргі жарнама кірісінің бөлінісі (Connect режимінде) сіз бен Annual Ads арасында. | Қоғамдық |
| GET | /v1/search?q={query}Табиғи тілдегі іздеу — «Кениядағы жиһаз жарнама берушілер» сияқты сұрауды сәйкес санат пен географиялық ауқымға бағыттап, содан кейін сол рейтингті нақты шынайы ретімен қайтарады. | Қоғамдық |
Серіктестік және ұсыныстық жарнама
advertiser_type, promotion_type, link_type және promoted_brand — POST және PATCH /v1/partner/ads әдістеріндегі міндетті емес өрістер; Annual Ads тек өздерін жарнамалайтын кәсіпорындармен шектелмейді. link_type affiliate_link немесе referral_invitation_link болғанда, не promotion_type affiliate_offer немесе referral_opportunity болғанда affiliate_terms_accepted true болуы тиіс, әйтпесе сұраныс 422 кодымен қате болып қайтарылады. title 35 таңбаға, ал description 80 таңбаға дейін шектелген — бұл шектеулер тек бақылау тақтасының интерфейсінде ғана емес, сервер жағында да қолданылады.
Әр жарнама берушінің есепшотына кіріктірілген AI құралдарының жиынтығы беріледі: жарнама мазмұны мен визуалды генератор, әңгімелесу ассистенті, бюджет жөніндегі кеңесші және сыртқы SEO аудиторы. Олар жыл сайынғы біркелкі бағадан бөлек AI кредиттерімен төленеді.
| POST | /v1/advertisers/{id}/ai/assistantAsk Annual Ads — жүзетін әңгімелесуші көмекші, тек ақпараттық мақсатта, есептік деректерді тек оқуға арналған. | Қоғамдық |
| POST | /v1/advertisers/{id}/ai/creative-studioҚысқа бизнес сипаттамасынан жарнама тақырыбын, сипаттамасын және кілтсөздерін жасаңыз. | 2 кредит(тер) |
| POST | /v1/advertisers/{id}/ai/creative-studio/imageСол бір бизнес сипаттамасынан жарнамаға тіркеуге дайын тізімдік визуал (PNG) жасаңыз. | 8 кредит(тер) |
| POST | /v1/advertisers/{id}/ai/budget-advisorНақты статистикалық болжам — ешқашан генеративті болжам емес — белгілі бір рейтингті 30/90/365 күнде сақтап қалу ықтималдығы. | 1 кредит(тер) |
| POST | /v1/advertisers/{id}/ai/seo-auditЖарнама берушінің сыртқы веб-сайтын талдап, нақты SEO жақсартуларын ұсыныңыз. | 2 кредит(тер) |
Сол санат пен бизнес сипаттамасы төмендегі сурет генераторына да негіз болады.
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
}Сол жарнамаға сәйкес келетін визуал жасаңыз:
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
}Дайын жарнама блогын өз сайтыңызға орналастырыңыз — құру қажет емес, iframe қолданудың қажеті жоқ. Скрипт оқшауланған Shadow DOM ішінде тікелей бетке рендерленеді, сондықтан оның стильдері ешқашан сіздің сайтыңызға әсер етпейді, ал сіздің сайтыңыздың стильдері де оған әсер етпейді.
<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>Әдепкі бойынша бұл категорияның толық ашық рейтингін көрсетеді — платформадағы барлық жарнама берушілерді, тек сіз әкелгендерді ғана емес. Connect режимі арқылы жасаған (сіздің үлесіңізді түзетін) жарнама берушілердің жарнамаларын ғана көрсету үшін data-partner деректеріне серіктес идентификаторыңызды қосыңыз (оны өз бақылау тақтаңыздың Әзірлеушілер бетінен таба аласыз):
<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>Егер сіздің жарнама берушілеріңіз бірнеше санатқа жататын болса, data-category сипаттамасын мүлде алып тастаңыз — тек data-partner сипаттамасын пайдаланғанда виджет барлық санаттардағы барлық жарнамаларыңызды бір торда көрсетеді, әр санатқа бөлек виджет блогын орналастырудың қажеті жоқ:
<div
class="annualads-widget"
data-geo="global"
data-partner="YOUR_PARTNER_ID"
></div>
<script async src="https://adhub365.com/widget.js"></script>Мазмұндағы баннер блогының қасына әрқайсысы әртүрлі жарнама көрсететін футер стиліндегі блок қосқыңыз келе ме? data-layout="compact" (бір жарнама, кішігірім «пилл» түрінде жиырылатын) және data-offset мәнін бірінші виджетіңіздегі жарнамалар санына тең етіп орнатып, екінші виджет блогын қосыңыз:
<!-- 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 | Көрсетуге арналған санат идентификаторы. Қажет — егер data-partner көрсетілмесе, оны көрсетпеу әрбір санаттағы серіктес жарнамаларын көрсетуді білдіреді. |
data-geo | Гео ауқымы: жергілікті, өңірлік немесе жаһандық. Әдепкі бойынша жаһандық. |
data-count | Көрсетілетін жарнамалар саны. Әдепкі бойынша 4. |
data-columns | Тор бағаналарының саны. Әдепкі бойынша 2. |
data-layout | тор, тізім немесе ықшам. Әдепкі бойынша тор. Ықшам бір ғана жарнаманы (data-count ескерілмейді) көрсетеді, оны шағын түймешеге жинап, қайта шығаруға мүмкіндік беретін батырмасы бар — бұл беттің төменгі жағындағы бөлім стиліндегі блок, скрипт оны ешқашан бекітілген күйге орналастырмайды, сіз контейнер div-ті өз бетіңізде қалағаныңызша орналастырып, стильдей аласыз. |
data-offset | Жоғары рейтингті жарнамаларды өткізіп жіберу саны. Әдепкі бойынша 0. Бұл бір беттегі екінші виджетке (мысалы, төменгі жақтағы ықшам виджет пен беттің жоғарғы жағындағы торлы виджет) бірдей жарнаманы екі рет қайталамай, басқа жарнамаларды көрсетуге мүмкіндік береді — басқа виджеттің қазір көрсетіп тұрған жарнамалар санын жіберіңіз. |
data-partner | Сіздің серіктес идентификаторыңыз (оны өз бақылау тақтаңыздың «Әзірлеушілер» бетінен таба аласыз). Міндетті емес — ол болмаса, виджет сол санаттағы барлық жарнама берушілердің толық ашық рейтингін көрсетеді. Ал оны қолдансаңыз, тек Connect режимі арқылы әкелген жарнама берушілердің жарнамалары ғана көрсетіледі — яғни, нақты сіздің үлесіңізді құрайтын жарнамалар. |
Сұраулар әр кілт бойынша минутына шектеледі. Әрбір аутентификацияланған жауап X-RateLimit-Limit, X-RateLimit-Remaining және X-RateLimit-Reset басылықтарын қамтиды; шектен асқан кезде Retry-After басылығымен 429 Too Many Requests қатесі қайтарылады.
Әр серіктес үшін міндетті емес. Сіз жазба қосқанға дейін кілттеріңіз кез келген IP-мекенжайдан келетін сұраныстарды қабылдайды — алғашқы жазба сол серіктестің барлық кілттерін тек рұқсат етілген тізімге ғана жіберу режиміне ауыстырады.
Әрбір вебхук құрылған кезде бір рет берілетін құпия кілт негізінде HMAC-SHA256 әдісімен қол қойылады — жүктемені сенімге алмас бұрын қолтаңбаны тексеріңіз. Оқиғалар тек тиісті жарнама берушіге ие серіктеске жеткізіледі.
payment.succeeded | Төлем расталды. |
payment.refunded | Қайтару жүзеге асырылады. |
ad.activated | Жарнама автоматты түрде немесе әкімші мақұлдағаннан кейін белсенді болады. |
invoice.issued | Шот-фактура шығарылды. |
referral.payout.completed | Рефералдық комиссия төленетін мәртебеге жетеді. |
referral.payout.failed | Провайдерде рефералдық төлем пакеті сәтсіз аяқталды — табыстар төленуге қайта оралып, қайтадан өңделеді. |
rank.changed | Жарнаманың рангі өзгереді — соның ішінде басқа жарнама берушінің төлемі себеп болған кезде де. |
ad.expiring_soon | Жарнама мерзімі аяқталуға 30, 7 немесе 1 күн қалғанда. |
partner_ad_revenue.payout.completed | Жарнама кірісінің үлесін төлеу ақылы мәртебеге жетеді. |
partner_ad_revenue.payout.failed | Провайдерде жарнама кірісін бөлісу төлемінің партиясы сәтсіз аяқталды — үлестер төлеуге қайта оралып, қайтадан орындалады. |
Осы бірдей API сипаттамасынан жасалған ресми JavaScript/TypeScript және Python SDK-лары жоспарланған, бірақ әлі жарияланбаған — сол уақытқа дейін HTTP API-ге тікелей қоңырау шалыңыз.
Әзірге SDK жоқ — олар HTTP API-ге тікелей шақырады және бүгінгі күні кез келген тілде жұмыс істейді.
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": "...",
},
)