Birbaşa Annual Ads platformasında işləyin — reklam verənləri yaradın, reklamları dərc edin, ödənişləri işə salın və sıralamayı tamamilə API vasitəsilə izləyin.
Tam qiymət cədvəlini görünSən 70%-i saxlayırsan Connect-rejimindəki reklam verənlərinizin reklamlarına ödədikləri məbləğ — avtomatik olaraq cüzdanınıza köçürülür. Aşağıda bunun necə işlədiyini görün.
Hər bir tələb Authorization başlığındakı gizli açarla Bearer sxemi istifadə edilərək autentifikasiya olunur.
POST https://api.adhub365.com/v1/partner/ads
Authorization: Bearer sk_sandbox_...
Content-Type: application/jsonAPI açarları İllik Reklamlar komandası tərəfindən təsdiqlənmiş tərəfdaş hesablarına verilir.
Tərəfdaş hesabı yaradın| POST | /v1/partner/advertisersİstifadəçilərinizdən birinin adından reklam verən hesab yaradın (Connect rejimi). | advertisers:write |
| GET | /v1/partner/advertisers/{id}Bu tərəfdaş tərəfindən yaradılan reklamçı hesabını axtarın. | advertisers:read |
| POST | /v1/partner/adsReklam yaradın. O, ilkin olaraq layihə statusunda olur. İsteğe bağlı advertiser_type, promotion_type, link_type və promoted_brand sahələri tərəfdaş, tövsiyə, yaradıcı və ya fərdi reklamı təsvir edir — aşağıdakı qeydi baxın. | ads:write |
| GET | /v1/partner/ads/{id}Reklamı axtar. | ads:read |
| PATCH | /v1/partner/ads/{id}Redaksiya məzmunu — başlıq, təsvir, keçid, reklam verən tipi, promosyon tipi, keçid tipi və təşviq olunan brend — yenilənsin. Kateqoriya, coğrafiya və sıralama mühərriki tərəfindən oxunan hər hansı məlumat burada heç vaxt dəyişdirilə bilməz. | ads:write |
| POST | /v1/partner/ads/{id}/imageReklam şəklini birbaşa yükləyin (JPEG/PNG/WebP, maksimum 5 MB). İlk ödənişdən əvvəl tələb olunur — aşağıdakı ödənişlər qrupuna baxın. | ads:write |
| POST | /v1/partner/ads/{id}/image-urlReklamın şəklini fayl yükləmək əvəzinə URL-dən təyin edin — server onu özü yükləyir və yenidən hostinq edir. Eyni tələb: ilk ödənişdən əvvəl lazımdır. | ads:write |
| GET | /v1/partner/ads/{id}/rankReklam üçün cari reytinq, kateqoriya və coğrafi əhatə | ads:read |
| GET | /v1/partner/ads/{id}/statsReklamın ümumi baxışları və klikləri — keçən/qalan günlər activated_at/expires_at sahələrindən (GET /{id} üzərində) götürülür, sıralama isə GET /{id}/rank vasitəsilə əldə edilir. | ads:read |
| POST | /v1/partner/paymentsİlkin alış və ya balans artırma üçün kriptovalyuta ödənişinə başlayın. 422 xətası ilə ilkin ödəniş uğursuz olur, əgər reklamda artıq şəkil yoxdursa — yuxarıdakı uploadAdImage/setAdImageUrl-ə baxın. | payments:write |
| GET | /v1/partner/payments/{id}Ödənişin statusunu yoxlayın. | payments:read |
| POST | /v1/partner/referralsReferal link yaradın. | referrals:write |
| GET | /v1/partner/referrals/{code}/earningsStatuslara görə bölünmüş ümumi yönləndirmə gəlirləri. | referrals:read |
| GET | /v1/partner/ad-revenue/earningsConnect rejimində yaratdığınız reklam verənlərin reklamlarına ödədikləri məbləğin sizin 70% payınız, statuslara görə bölünüb. | ad-revenue:read |
| GET | /v1/partner/access-logBu açar üçün tam zəng tarixçəsi — metod, yol, IP ünvanı, vaxt damğası. | Orada |
| GET | /v1/rankings?category={id}&geo={scope}Kateqoriya və coğrafi əhatə üçün yalnız oxunur reytinq. | İctimai |
| GET | /v1/tiersKonfiqurasiya edilmiş 7 qiymət səviyyəsi (hədd, açılan üstünlüklər). | İctimai |
| GET | /v1/referral-programReferal kaskadı və Liderlər hovuzu üçün hazırda aktiv olan komissiya faizləri. | İctimai |
| GET | /v1/partner-programHazırkı reklam gəliri bölgüsü (Connect rejimi) sizinlə İllik Reklamlar arasında. | İctimai |
| GET | /v1/search?q={query}Təbii dil axtarışı — "Keniyada mebel reklamçıları" kimi sorğunu uyğun kateqoriya və coğrafi sahəyə yönləndirir, sonra həmin sıralamayı tam real ardıcıllığında qaytarır. | İctimai |
Tərəfdaş və tövsiyə reklamı
advertiser_type, promotion_type, link_type və promoted_brand POST və PATCH /v1/partner/ads üçün ixtiyari sahələrdir — İllik reklamlar yalnız özlərini reklam edən müəssisələrlə məhdudlaşmır. link_type affiliate_link və ya referral_invitation_link olduqda, və ya promotion_type affiliate_offer və ya referral_opportunity olduqda, affiliate_terms_accepted true olmalıdır, əks halda tələb 422 xətası ilə rədd edilir. title 35 simvola, description isə 80 simvola qədər məhdudlaşdırılıb — hər ikisi yalnız idarəetmə panelinin UI-də deyil, server tərəfində tətbiq olunur.
Hər reklam verən hesabı ilkin illik ödənişdən əlavə olaraq AI kreditləri ilə ödənilən daxili AI alətlər dəstini əldə edir — reklam məzmunu və vizual generator, söhbət köməkçisi, büdcə məsləhətçisi və xarici SEO auditoru.
| POST | /v1/advertisers/{id}/ai/assistantAsk Annual Ads — üzən söhbət köməkçisi, yalnız məlumat verici, hesab məlumatları üzrə yalnız oxunur. | İctimai |
| POST | /v1/advertisers/{id}/ai/creative-studioQısa biznes təsvirindən reklam başlığı, təsviri və açar sözləri yaradın. | 2 kredit(lər) |
| POST | /v1/advertisers/{id}/ai/creative-studio/imageEyni biznes təsvirindən elan üçün əlavə etməyə hazır, hostinqdə yerləşdirilmiş siyahı vizualı (PNG) yaradın. | 8 kredit(lər) |
| POST | /v1/advertisers/{id}/ai/budget-advisorHəqiqi statistik proqnoz — heç vaxt generativ təxmin deyil — müəyyən bir sıranı 30/90/365 gündə saxlamaq ehtimalı. | 1 kredit(lər) |
| POST | /v1/advertisers/{id}/ai/seo-auditReklam verənin öz xarici veb-saytını təhlil edin və konkret SEO təkmilləşdirmələr təklif edin. | 2 kredit(lər) |
Eyni kateqoriya və biznes təsviri aşağıdakı görüntü generatorunu da işə salır.
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
}Eyni reklam üçün uyğun vizual yaradın:
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
}Hazır reklam vahidini saytınıza yerləşdirin — heç bir qurma addımı, heç bir iframe yoxdur. Skript izolyasiya olunmuş Shadow DOM daxilində birbaşa səhifədə render olunur, buna görə onun stilləri heç vaxt saytınıza keçmir, saytınızın stilləri isə ora keçmir.
<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>Standart olaraq bu, kateqoriya üçün tam ictimai reytinqi göstərir — yalnız sizin gətirdiyiniz reklamçılar deyil, platformadakı bütün reklamçıları. Connect rejimi vasitəsilə yaratdığınız (sizin payınızı formalaşdıran) reklamçıların reklamlarını yalnız göstərmək üçün data-partner atributunu tərəfdaş ID-nizlə əlavə edin (onu öz idarə panelinizin Tərtibatçılar səhifəsində tapa bilərsiniz):
<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>Əgər reklam verənləriniz bir neçə kateqoriyaya aiddirsə, data-category atributunu tamamilə buraxın — yalnız data-partner ilə vidjet bütün kateqoriyalar üzrə reklamlarınızın hər birini tək bir şəbəkədə göstərir, hər kateqoriya üçün ayrıca vidjet bloku tələb etmədən:
<div
class="annualads-widget"
data-geo="global"
data-partner="YOUR_PARTNER_ID"
></div>
<script async src="https://adhub365.com/widget.js"></script>Məzmun içindəki vahidlə yanaşı, fərqli reklamlar göstərən başlıq tərzi bir vahid istəyirsiniz? data-layout="compact" (tək reklam, kiçik pillə şəklində qatlanabilən) və data-offset dəyərini ilk widgetinizin artıq göstərdiyi reklam sayına görə təyin edən ikinci widget bloku əlavə edin:
<!-- 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 | Göstəriləcək kateqoriya ID-si. Zəruridir — data-partner təyin olunmadıqda; əks halda onu göstərməmək həmin tərəfdaşın bütün kateqoriyalar üzrə reklamlarını göstərir. |
data-geo | Coğrafi əhatə: yerli, regional və ya qlobal. Standart olaraq qlobal seçilir. |
data-count | Göstəriləcək reklamların sayı. Standart olaraq 4-dür. |
data-columns | Şəbəkə sütunlarının sayı. Standart olaraq 2-dir. |
data-layout | grid, list və ya compact. Standart olaraq grid seçilir. compact tək bir reklam göstərir (data-count nəzərə alınmır) və onu kiçik pillə formuna qatlayıb geri qaytarmaq üçün düymə ilə — bir altbilgi tərzində vahid, skript tərəfindən heç vaxt sabit yerləşdirilmir, konteyner div-i səhifənizdə istədiyiniz kimi yerləşdirib tərtib edirsiniz. |
data-offset | Ən yüksək reytinqli reklamlardan keçmək üçün say. Standart dəyəri 0-dır. Eyni səhifədəki ikinci vidjetə (məsələn, altbilikdəki kompakt vidjet və səhifənin yuxarısındakı şəbəkəvidjet) eyni reklamı iki dəfə təkrarlamaq əvəzinə fərqli reklamlar göstərməyə imkan verir — digər vidjetin artıq göstərdiyi reklamların sayını ötürün. |
data-partner | Partnyor ID-niz (onu öz idarə panelinizin Tərtibatçılar səhifəsində tapın). Seçməli — ID olmadan vidjet həmin kateqoriya üzrə tam ictimai reytinqi, yəni platformadakı hər bir reklam verəni göstərir. ID ilə isə yalnız Connect rejimi vasitəsilə gətirdiyiniz, yəni faktiki olaraq sizin payınızı yaradan reklam verənlərin reklamları göstərilir. |
Hər açar üçün dəqiqə başına sorğular məhdudlaşdırılır. Hər autentifikasiya olunmuş cavab X-RateLimit-Limit, X-RateLimit-Remaining və X-RateLimit-Reset başlıqlarını daşıyır; limitdən artıq sorğu isə Retry-After başlığı ilə 429 Too Many Requests səhvini qaytarır.
Hər tərəfdaş üçün seçməli. Giriş əlavə edənə qədər açarlarınıza istənilən IP-dən sorğu qəbul edilir — ilk giriş həmin tərəfdaşın bütün açarlarını yalnız icazə verilən siyahıya keçirir.
Hər bir webhook, yaradılma zamanı bir dəfə verilən gizli açar istifadə edilərək HMAC-SHA256 ilə imzalanır — yükü etibar etməzdən əvvəl imzoyu təsdiqləyin. Hadisələr yalnız müvafiq reklam verəni sahibi olan tərəfdaşa çatdırılır.
payment.succeeded | Ödəniş təsdiqlənib. |
payment.refunded | Pul geri ödənilir. |
ad.activated | Reklam aktivləşir, avtomatik olaraq və ya admin icmalından sonra. |
invoice.issued | Faktura verilir. |
referral.payout.completed | Referal komissiyası ödənilən statusa çatır. |
referral.payout.failed | Provayderdə referal ödəniş partiyası uğursuz olur — gəlirlər yenidən ödənilməli vəziyyətə qayıdır və yenidən cəhd edilir. |
rank.changed | Reklamın sırası dəyişir — o cümlədən başqa bir reklam verənin ödənişi buna səbəb olduqda. |
ad.expiring_soon | Reklamın müddəti bitməsinə 30, 7 və ya 1 gün qalmış. |
partner_ad_revenue.payout.completed | Reklam gəlirinin bölüşdürülməsi ödənilmiş statusa çatır. |
partner_ad_revenue.payout.failed | Provayderdə reklam gəliri bölüşdürmə ödəniş partiyası uğursuz olur — paylar yenidən ödənilməli vəziyyətə qayıdır və yenidən cəhd edilir. |
Rəsmi JavaScript/TypeScript və Python SDK-ları bu eyni API spesifikasiyasından yaradılıb, planlaşdırılıb, lakin hələ dərc edilməyib — o vaxta qədər HTTP API-yə birbaşa müraciət edin.
Hələ SDK yoxdur — bunlar HTTP API-yə birbaşa müraciət edir və bu gün istənilən dildə işləyir.
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": "...",
},
)