Annual Ads platformasida to'g'ridan-to'g'ri ishlang — reklama beruvchilarni yarating, reklamalarni joylashtiring, to'lovlarni ishga tushiring va reytingni kuzating, bularning barchasini API orqali bajaring.
To'liq narxlar jadvalini ko'ringSiz 70%ni saqlab qolasiz Connect-režimidagi reklamachilaringiz reklamalari uchun to'laydigan summa — avtomatik ravishda hamyoningizga o'tkaziladi. Qanday ishlashini quyida ko'ring.
Har bir so'rov Authorization sarlavhasidagi Bearer sxemasi yordamida maxfiy kalit bilan autentifikatsiya qilinadi.
POST https://api.adhub365.com/v1/partner/ads
Authorization: Bearer sk_sandbox_...
Content-Type: application/jsonAPI kalitlari Yillik Reklama jamoasi tomonidan tasdiqlangan hamkor hisoblariga beriladi.
Hamkor hisobini yarating| POST | /v1/partner/advertisersFoydalanuvchilaringizdan birining nomidan reklama beruvchi hisobini yarating (Ulanish rejimi). | advertisers:write |
| GET | /v1/partner/advertisers/{id}Ushbu hamkor tomonidan yaratilgan reklama beruvchi hisobini tekshiring. | advertisers:read |
| POST | /v1/partner/adsReklama yarating. U loyiha holatida boshlanadi. Ixtiyoriy advertiser_type, promotion_type, link_type va promoted_brand maydonlari affiliate, referral, creator yoki individual reklama turini tavsiflaydi — quyidagi eslatmani ko'ring. | ads:write |
| GET | /v1/partner/ads/{id}E'lonni qidiring. | ads:read |
| PATCH | /v1/partner/ads/{id}Tahririy kontentni yangilang — sarlavha, tavsif, havola, reklama beruvchi turi, aksiya turi, havola turi va targ'ib qilingan brend. Toifa, geografiya va reyting dvigateli tomonidan o'qiladigan har qanday ma'lumotni bu yerda hech qachon o'zgartirib bo'lmaydi. | ads:write |
| POST | /v1/partner/ads/{id}/imageReklama tasvirini to'g'ridan-to'g'ri yuklang (JPEG/PNG/WebP, maksimal 5 MB). Birinchi to'lovdan oldin talab etiladi — quyidagi to'lovlar guruhiga qarang. | ads:write |
| POST | /v1/partner/ads/{id}/image-urlReklama tasvirini faylni yuklash o'rniga URL manzilidan o'rnatish — server uni o'zi olib, qayta joylashtiradi. Xuddi shu talab: birinchi to'lovdan oldin bajarilishi kerak. | ads:write |
| GET | /v1/partner/ads/{id}/rankReklama uchun joriy reyting, toifa va geografik qamrov. | ads:read |
| GET | /v1/partner/ads/{id}/statsReklama uchun jami ko'rishlar va bosishlar — o'tgan/qolgan kunlar allaqachon GET /{id} bo'yicha mavjud activated_at/expires_at maydonlaridan olinadi, reyting esa GET /{id}/rank orqali olinadi. | ads:read |
| POST | /v1/partner/paymentsDastlabki xarid yoki to'ldirish uchun kripto to'lovni boshlang. Dastlabki to'lov 422 xatosi bilan muvaffaqiyatsiz tugaydi, agar reklama allaqachon rasmga ega bo'lmasa — yuqoridagi uploadAdImage/setAdImageUrl ni ko'ring. | payments:write |
| GET | /v1/partner/payments/{id}To'lov holatini tekshiring. | payments:read |
| POST | /v1/partner/referralsReferal havolasi yarating. | referrals:write |
| GET | /v1/partner/referrals/{code}/earningsMaqom bo'yicha taqsimlangan umumiy referal daromadlari. | referrals:read |
| GET | /v1/partner/ad-revenue/earningsConnect rejimida yaratgan reklamachilaringiz reklamalari uchun to'lagan summaning sizga tegishli 70% ulushi, holatlar bo'yicha taqsimlangan. | ad-revenue:read |
| GET | /v1/partner/access-logUshbu kalit — metod, yo'l, IP, vaqt tamg'asi bo'yicha to'liq qo'ng'iroq tarixi. | U yerda |
| GET | /v1/rankings?category={id}&geo={scope}Faqat o'qish uchun reyting: toifa va geografik doira bo'yicha. | Jamoat |
| GET | /v1/tiers7 ta sozlangan narxlash bosqichlari (chegarasi, ochilgan imtiyozlar). | Jamoat |
| GET | /v1/referral-programHozirda referal kaskadi va Rahbarlar hovuzi uchun amal qilayotgan komissiya foizlari. | Jamoat |
| GET | /v1/partner-programJoriy reklama daromadlari taqsimoti (Connect rejimi) siz va Annual Ads o'rtasida. | Jamoat |
| GET | /v1/search?q={query}Tabiiy til qidiruvi — masalan, "Keniyadagi mebel reklamachilari" kabi so'rovni mos keladigan toifa va geografik doiraga yo'naltiradi, so'ngra shu reytingni uning haqiqiy tartibida qaytaradi. | Jamoat |
sheriklik va tavsiya asosidagi reklama
advertiser_type, promotion_type, link_type va promoted_brand POST va PATCH /v1/partner/ads bo'yicha ixtiyoriy maydonlardir — Annual Ads faqat o'zini reklama qilayotgan korxonalar bilan cheklanmaydi. link_type affiliate_link yoki referral_invitation_link bo'lganda, yoki promotion_type affiliate_offer yoki referral_opportunity bo'lganda, affiliate_terms_accepted qiymati true bo'lishi kerak, aks holda so'rov 422 bilan rad etiladi. title 35 belgiga, description esa 80 belgiga cheklangan — bu cheklovlar faqat boshqaruv paneli foydalanuvchi interfeysida emas, balki server tomonida ham qo'llaniladi.
Har bir reklama beruvchi hisobiga o'rnatilgan sun'iy intellekt vositalar to'plami beriladi — reklama kontenti va vizual generator, suhbatli yordamchi, byudjet bo'yicha maslahatchi va tashqi SEO auditori — ularning barchasi yillik bir xil to'lovga qo'shimcha ravishda sun'iy intellekt kreditlari evaziga to'lanadi.
| POST | /v1/advertisers/{id}/ai/assistantAsk Annual Ads — suzuvchi muloqot yordamchisi, faqat ma'lumot berish uchun, hisob ma'lumotlarini faqat o'qish huquqiga ega. | Jamoat |
| POST | /v1/advertisers/{id}/ai/creative-studioQisqa biznes tavsifidan reklama sarlavhasi, tavsifi va kalit so'zlarini yarating. | 2 kredit(lar) |
| POST | /v1/advertisers/{id}/ai/creative-studio/imageXuddi shu biznes tavsifidan e'longa ilova qilishga tayyor, joylashtirilgan ro'yxat vizualini (PNG) yarating. | 8 kredit(lar) |
| POST | /v1/advertisers/{id}/ai/budget-advisorHaqiqiy statistik prognoz — hech qachon generativ taxmin emas — ma'lum bir reytingni 30/90/365 kunda saqlab qolish ehtimolligi. | 1 kredit(lar) |
| POST | /v1/advertisers/{id}/ai/seo-auditReklama beruvchining tashqi veb-saytini tahlil qiling va aniq SEO takomillashtirishlar bo'yicha tavsiyalar bering. | 2 kredit(lar) |
Xuddi shu toifa va biznes tavsifi quyidagi tasvir yaratuvchisini ham quvvatlaydi.
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
}Xuddi shu reklama uchun mos vizual yarating:
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
}Tayyor reklama blokini o'zingizning saytga tortib tushiring — hech qanday o'rnatish bosqichi yoki iframe talab etilmaydi. Skript izolyatsiyalangan Shadow DOM ichida bevosita sahifada render qilinadi, shuning uchun uning uslublari hech qachon sizning saytga o'tmaydi, va sizning saytingiz uslublari ham unga o'tmaydi.
<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>Oddiy holatda bu kategoriya bo'yicha to'liq ommaviy reytingni ko'rsatadi — platformadagi barcha reklama beruvchilarni, faqat siz jalb qilganlarini emas. Connect rejimi orqali yaratgan reklama beruvchilaringizning (sizning ulushingizni hosil qilayotgan) reklamalarini ko'rsatish uchun data-partner atributiga o'zingizning hamkor ID-ingizni qo'shing (uni o'z boshqaruv panelingizdagi Ishlab chiquvchilar sahifasida topishingiz mumkin):
<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>Agar reklamachilaringiz bir nechta toifalarga kirsa, data-category atributini butunlay olib tashlang — faqat data-partner bilan vidjet barcha toifalardagi reklamalaringizni bitta tarmoqda ko'rsatadi, har bir toifa uchun alohida vidjet bloki qo'yishga hojat yo'q:
<div
class="annualads-widget"
data-geo="global"
data-partner="YOUR_PARTNER_ID"
></div>
<script async src="https://adhub365.com/widget.js"></script>Mavzu ichidagi reklamangiz yonida, har biri turli reklamalarni ko'rsatadigan footer-uslubidagi blokni ham qo'shmoqchimisiz? Ikkinchi widget blokini data-layout="compact" (bitta reklama, kichik pillaga siqib qo'yilishi mumkin) va data-offset parametrini birinchi widgetingiz allaqachon nechta reklama ko'rsatayotganiga teng qilib o'rnating:
<!-- 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 | Ko'rsatish uchun toifa ID. Majburiy — agar data-partner o'rnatilmagan bo'lsa; aks holda uni kiritmaslik sherikning barcha toifalar bo'yicha reklamalarini ko'rsatadi. |
data-geo | Geografik doira: mahalliy, mintaqaviy yoki global. Standart bo'yicha global. |
data-count | Ko'rsatiladigan e'lonlar soni. Standart qiymati 4. |
data-columns | Tarmoq ustunlari soni. Standart qiymati 2. |
data-layout | grid, list yoki compact. Standart bo'yicha grid. compact bitta reklama (data-count e'tiborga olinmaydi) ko'rsatadi, uni kichik pillaga siqib qo'yish va qaytarish tugmasi bilan — bu footer uslubidagi blok bo'lib, skript uni hech qachon mustahkam joyga qo'ymaydi; konteyner divni o'zingizning sahifangizda xohlagancha joylashtirib, uslubini belgilaysiz. |
data-offset | Eng yuqori reytingli reklamalardan o'tkazib yuboriladigan son. Standart qiymati 0. Bu bir xil sahifadagi ikkinchi vidjetga (masalan, pastki qismdagi ixcham vidjet va sahifaning yuqori qismidagi tarmoqli vidjet) bir xil reklamaning ikki marta takrorlanish o'rniga boshqa reklamalarni ko'rsatishga imkon beradi — boshqa vidjet allaqachon ko'rsatayotgan reklamalar sonini o'tkazing. |
data-partner | Sizning hamkor identifikatori (uni o'z boshqaruv panelingizning Developerlar sahifasida toping). Ixtiyoriy — u bo'lmasa, vidjet o'sha kategoriya bo'yicha to'liq ommaviy reytingni, platformadagi barcha reklamachilarni ko'rsatadi. Uni qo'llaganingizda esa faqat Connect rejimi orqali olib kelgan reklamachilarning e'lonlari ko'rsatiladi — aynan ular sizning ulushingizni hosil qiladi. |
Har bir kalit bo'yicha daqiqada so'rovlar soni cheklangan. Har bir autentifikatsiyalangan javob X-RateLimit-Limit, X-RateLimit-Remaining va X-RateLimit-Reset sarlavhalarini o'z ichiga oladi; limitni oshirish 429 Too Many Requests xatosini Retry-After sarlavhasi bilan qaytaradi.
Ixtiyoriy, har bir hamkor uchun. Siz yozuv qo'shmaguningizcha, kalitlaringiz har qanday IP manzildan keladigan so'rovlarni qabul qiladi — birinchi yozuv esa o'sha hamkorning barcha kalitlarini faqat ruxsat berilgan manzillardan keladigan so'rovlarni qabul qiladigan holatga o'tkazadi.
Har bir webhook yaratilgan paytda bir marta berilgan sirli kalit yordamida HMAC-SHA256 bilan imzolanadi — yuklamaga ishonishdan oldin imzoni tekshiring. Voqealar faqat tegishli reklama beruvchiga egalik qiluvchi hamkorga yetkaziladi.
payment.succeeded | To'lov tasdiqlandi. |
payment.refunded | Qaytarib berish amalga oshiriladi. |
ad.activated | Reklama avtomatik ravishda yoki ma'mur tasdiqlagach faol bo'ladi. |
invoice.issued | Hisob-faktura chiqariladi. |
referral.payout.completed | Yo'naltirish komissiyasi to'lanadigan maqomga erishadi. |
referral.payout.failed | Provayderda referal to'lov partiyasi muvaffaqiyatsiz tugadi — daromadlar to'lanishi kerak bo'lgan hisobga qaytadi va qayta uriniladi. |
rank.changed | Reklamaning reytingi o'zgaradi — bunda boshqa reklama beruvchining to'lovi ham sabab bo'lishi mumkin. |
ad.expiring_soon | E'lon muddati tugashidan 30, 7 yoki 1 kun oldin. |
partner_ad_revenue.payout.completed | Reklama daromadlarini bo'lishish to'lovi to'langan maqomga yetadi. |
partner_ad_revenue.payout.failed | Provayderda reklama daromadlarini taqsimlash bo'yicha to'lov partiyasi muvaffaqiyatsiz tugadi — ulushlar to'lanishi kerak bo'lganlar ro'yxatiga qaytarilib, qayta uriniladi. |
Ushbu bir xil API spetsifikatsiyasidan hosil qilingan rasmiy JavaScript/TypeScript va Python SDKlari rejalashtirilgan, ammo hali e'lon qilinmagan — shu vaqtgacha HTTP APIga to'g'ridan-to'g'ri murojaat qiling.
Hali SDK yo'q — ular HTTP APIga to'g'ridan-to'g'ri murojaat qiladi va hozirda istalgan dasturlash tilida ishlaydi.
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": "...",
},
)