Annual Ads

İnkişaf etdirici sənədləri

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ün

Sə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.

Əsas URL

https://api.adhub365.com
OpenAPI 3

Təsdiq

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/json

Sandbox və istehsalat

Sandbox və istehsal açarları bir-birindən tamamilə izolyasiya olunub — sandbox açarı heç vaxt istehsal açarı tərəfindən yaradılan məlumatı oxuya və ya yaza bilməz, əksinə də keçərlidir.

Mənzilər

Hər bir açar yalnız ona verildiyi səlahiyyətlərlə məhdudlaşır — açar onu yaratmış tərəf hesabından daha çox giriş əldə edə bilməz.

API açarları İllik Reklamlar komandası tərəfindən təsdiqlənmiş tərəfdaş hesablarına verilir.

Tərəfdaş hesabı yaradın

Reklam gəlirlərinin paylaşılması

Əgər API açarlarınız öz istifadəçiləriniz üçün reklamçı hesabları yaradırsa (Connect rejimi — yuxarıdakı Təsdiqləmə bölməsinə baxın), o reklamçıların reklamlarına ödədikləri məbləğin bir hissəsini qazanırsınız. Aşağıdakı bölüşdürmə eyni endpoint-dən canlı oxunur, heç vaxt sərt kodlaşdırılmayıb və bu səhifənin daha aşağısındakı referal komissiyasından tamamilə ayrıdır.

GET https://api.adhub365.com/v1/partner-program
{
  "partner_share_percentage": 0.7,
  "platform_share_percentage": 0.3
}

70%

Sənə aiddir

Konfiqurasiya etdiyiniz ödəmə cüzdanınıza avtomatik olaraq ödənilir — vəsait çıxarmaq üçün müraciət etməyə ehtiyac yoxdur.

30%

İllik reklamlara keçir

Reklamlarınızın yayımlandığı moderatorluq, hostinq və reytinq infrastrukturunu əhatə edir.

Bu necə işləyir

  1. Connect-rejimindəki reklam verənlərinizdən biri inteqrasiyanız vasitəsilə reklam üçün ödəniş edir.
  2. Reklam nəzərdən keçirilir və təsdiqlənir — avtomatik olaraq və ya moderatorlar komandamız tərəfindən.
  3. Payınız avtomatik olaraq cüzdanınıza ödəniş üçün növbəyə qoyulub, bu, aşağıdakı istinad proqramındakı mexanizmlə eynidir.
Reklam faktiki olaraq təsdiqlənmədən əvvəl heç bir pay ayrılmır — əgər moderator onu rədd edərsə, həmin ödənişə görə heç bir öhdəlik yaranmır. Artıq aktiv olan reklam üçün əlavə ödəniş belə bir risk daşımır və dərhal bölüşdürülür.

Ödəniş şərtləri

  • Tərəfdaş hesabınızda kriptovalyuta ödəniş cüzdanı konfiqurasiya edilib.
  • Sizin tərəfdən KYC tələb olunmur — tərəfdaş hesabınız yaradılarkən artıq yoxlanılıb.

Məsələn: yığılmış səhm paylarını oxumaq

GET https://api.adhub365.com/v1/partner/ad-revenue/earnings
Authorization: Bearer sk_sandbox_...
{
  "shares": [
    {
      "id": "share_1a2b...",
      "payment_id": "pay_9f2a...",
      "ad_id": "ad_7c31...",
      "partner_amount_usd": 140.0,
      "platform_amount_usd": 60.0,
      "status": "paid",
      "payable_after": "2026-08-03T00:00:00Z",
      "paid_at": "2026-08-05T10:12:00Z"
    }
  ],
  "total_payable_pending_usd": 0.0,
  "total_payable_usd": 0.0,
  "total_processing_usd": 0.0,
  "total_paid_usd": 140.0
}

Son nöqtələr

Hesablar

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

Reklamlar

POST/v1/partner/ads

Reklam 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}/image

Reklam şə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-url

Reklamı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}/rank

Reklam üçün cari reytinq, kateqoriya və coğrafi əhatə

ads:read
GET/v1/partner/ads/{id}/stats

Reklamı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

Ödənişlər

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

Yönləndirmələr

POST/v1/partner/referrals

Referal link yaradın.

referrals:write
GET/v1/partner/referrals/{code}/earnings

Statuslara görə bölünmüş ümumi yönləndirmə gəlirləri.

referrals:read

Reklam gəlirlərinin paylaşılması

GET/v1/partner/ad-revenue/earnings

Connect 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

Giriş jurnalı

GET/v1/partner/access-log

Bu açar üçün tam zəng tarixçəsi — metod, yol, IP ünvanı, vaxt damğası.

Orada

İctimai son nöqtələr

GET/v1/rankings?category={id}&geo={scope}

Kateqoriya və coğrafi əhatə üçün yalnız oxunur reytinq.

İctimai
GET/v1/tiers

Konfiqurasiya edilmiş 7 qiymət səviyyəsi (hədd, açılan üstünlüklər).

İctimai
GET/v1/referral-program

Referal kaskadı və Liderlər hovuzu üçün hazırda aktiv olan komissiya faizləri.

İctimai
GET/v1/partner-program

Hazı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.

Əqli Mülkiyyət Alətləri

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.

Bunlar reklam verənin öz idarəetmə panelinə girişi (sessiya giriş tokeni) vasitəsilə işləyir, tərəfdaş API açarı ilə deyil — üçüncü tərəf inteqrasiyası reklam verənin adından onlara zəng edə bilməz.
POST/v1/advertisers/{id}/ai/assistant

Ask 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-studio

Qı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/image

Eyni 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-advisor

Hə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-audit

Reklam 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)

Məsələn — reklam məzmunu yaradın

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
}

Vidjet

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.

Onu səhifənizə əlavə edin

<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>

Xüsusiyyətlər

data-categoryGö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-geoCoğrafi əhatə: yerli, regional və ya qlobal. Standart olaraq qlobal seçilir.
data-countGö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-layoutgrid, 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-partnerPartnyor 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.

Gəlir bölgüsü

Tərəfdaşın yönləndirmə komissiyasının onlara necə çatdığı — faiz dərəcəsi, ödəniş mexanizmi və əvvəlcədən şərtlər.

GET https://api.adhub365.com/v1/referral-program
{
  "levels": [
    {
      "level": 1,
      "percentage": 0.1
    }
  ],
  "leaders_pool_percentage_of_gmv": 0.05,
  "founding_advertiser_pool_percentage_of_gmv": 0.05,
  "payout_verification_window_hours": 48,
  "min_payout_usd": 1
}

Sabit say deyil

Komissiya faizi bizim tərəfdə konfiqurasiya olunur və dəyişə bilər — dəyəri sərt kodlaşdırmaq əvəzinə həmişə bu endpoint-dən canlı oxuyun.

Tam avtomatik

Çəkilmə son nöqtəsi yoxdur. Cədvəlləşdirilmiş iş ödəniləcək gəlirləri hesablayır, onları hər reklamçı üzrə toplu halda emal edir və aşağıdakı bütün şərtlər yerinə yetirildikdən sonra avtomatik ödəniş edir.

Ödəniş şərtləri

  • Reklam verənin ödənilməli ümumi gəlirləri minimum ödəmə məbləğinə çatır.
  • Onların hesabında kriptovalyuta ödəniş cüzdanı konfiqurasiya edilib.
  • Onların KYC statusu təsdiqlənib.

Məsələn: yığılan gəlirləri oxumaq

GET https://api.adhub365.com/v1/partner/referrals/{code}/earnings
Authorization: Bearer sk_sandbox_...
{
  "code": "ann-2f8c",
  "earnings": [
    {
      "id": "earn_1a2b...",
      "payment_id": "pay_9f2a...",
      "amount_usd": 30.0,
      "status": "paid",
      "payable_after": "2026-08-01T00:00:00Z",
      "paid_at": "2026-08-03T14:22:00Z"
    }
  ],
  "total_payable_pending_usd": 0.0,
  "total_payable_usd": 0.0,
  "total_processing_usd": 0.0,
  "total_paid_usd": 30.0
}

Qiymət səviyyələri (canlı)

Bu endpoint-dan canlı oxuyun — bu dəyərləri heç vaxt kodda birbaşa yazmayın, onlar bizim tərəfdə dəyişə bilər. Pulsuz məbləğ sahəsi əvəzinə öz istifadəçiləriniz üçün səviyyə seçicisi yaradın: göstərilən hər bir qiymət ödəniş yaradılarkən göndərilməli dəqiq məbləğdir və burada göstərilən açılmış üstünlüklər istifadəçilərə həmin qiymətin onlara nə qazandırdığını dəqiq izah edir, beləliklə onlar rəqəm təxmin etmək əvəzinə başa düşdükləri qiyməti seçirlər.

SəviyyəQiymətAçır
Bronze$50.00

Basic visibility

Silver$300.00

Clickable link unlocked

Kliklənə bilən keçid
Gold$500.00

Animation unlocked

Kliklənə bilən keçidAnimasiya
Platinum$1,000.00

Enhanced exposure

Kliklənə bilən keçidAnimasiya
Diamond$2,500.00

Premium placement

Kliklənə bilən keçidAnimasiya
Elite$5,000.00

Top-tier visibility

Kliklənə bilən keçidAnimasiya
Legendary$10,000.00

Maximum visibility & branding

Kliklənə bilən keçidAnimasiya

Sürət məhdudiyyətləri

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.

IP icazə verilən siyahı

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.

Veb-hooklar

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.refundedPul geri ödənilir.
ad.activatedReklam aktivləşir, avtomatik olaraq və ya admin icmalından sonra.
invoice.issuedFaktura verilir.
referral.payout.completedReferal komissiyası ödənilən statusa çatır.
referral.payout.failedProvayderdə 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.changedReklamı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_soonReklamın müddəti bitməsinə 30, 7 və ya 1 gün qalmış.
partner_ad_revenue.payout.completedReklam gəlirinin bölüşdürülməsi ödənilmiş statusa çatır.
partner_ad_revenue.payout.failedProvayderdə 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.

Proqram təminatının inkişafı üçün komplektlər

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.

Sürətli başlanğıc

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": "...",
    },
)