Annual Ads प्लेटफर्ममा सिधै निर्माण गर्नुहोस् — विज्ञापनदाता सिर्जना गर्नुहोस्, विज्ञापन प्रकाशित गर्नुहोस्, भुक्तानीहरू ट्रिगर गर्नुहोस्, र र्याङ्क ट्र्याक गर्नुहोस्, पूर्ण रूपमा API मार्फत।
पूर्ण मूल्य तालिका हेर्नुहोस्तपाईंले 70% राख्नुहुन्छ तपाईंका कनेक्ट-मोड विज्ञापनदाताहरूले आफ्ना विज्ञापनहरूका लागि तिर्ने रकम — स्वचालित रूपमा तपाईंको वालेटमा जम्मा हुन्छ। तल हेर्नुहोस् यो कसरी काम गर्छ।
प्रत्येक अनुरोधलाई Authorization हेडरमा Bearer स्कीम प्रयोग गरी गोप्य कुञ्जीद्वारा प्रमाणीकरण गरिन्छ।
POST https://api.adhub365.com/v1/partner/ads
Authorization: Bearer sk_sandbox_...
Content-Type: application/jsonAPI कुञ्जीहरू वार्षिक विज्ञापन टोलीद्वारा स्वीकृत साझेदार खाताहरूलाई जारी गरिन्छ।
साझेदार खाता सिर्जना गर्नुहोस्| POST | /v1/partner/advertisersतपाईंको कुनै एक प्रयोगकर्ताको तर्फबाट विज्ञापनदाता खाता सिर्जना गर्नुहोस् (कनेक्ट मोड)। | 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, अधिकतम ५ एमबी)। पहिलो भुक्तानी अघि आवश्यक — तलको भुक्तानी समूह हेर्नुहोस्। | 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विज्ञापनका लागि कुल दृश्य र क्लिकहरू — बितेका/बाँकी दिनहरू GET /{id} मा पहिले नै भएका activated_at/expires_at फिल्डहरूबाट आउँछन्, र र्याङ्क 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कनेक्ट मोडमा तपाईंले सिर्जना गरेका विज्ञापनदाताहरूले आफ्ना विज्ञापनहरूका लागि तिरेको रकममा तपाईंको ७०% हिस्सा, स्थिति अनुसार विभाजित। | ad-revenue:read |
| GET | /v1/partner/access-logयस कुञ्जी — विधि, पथ, आईपी, समय-छाप को पूर्ण कल इतिहास। | त्यहाँ |
| GET | /v1/rankings?category={id}&geo={scope}श्रेणी र भौगोलिक दायराका लागि पढ्न मात्र मिल्ने र्याङ्किङ। | सार्वजनिक |
| GET | /v1/tiers७ वटा कन्फिगर गरिएका मूल्य निर्धारण स्तरहरू (सीमा, अनलक गरिएका सुविधाहरू) | सार्वजनिक |
| GET | /v1/referral-programरेफरल क्यास्केड र लिडर्स पूलका लागि हाल सक्रिय आयोग प्रतिशतहरू। | सार्वजनिक |
| GET | /v1/partner-programहालको विज्ञापन राजस्व विभाजन (कनेक्ट मोड) तपाईं र वार्षिक विज्ञापनहरूबीच। | सार्वजनिक |
| GET | /v1/search?q={query}प्राकृतिक भाषा खोज — "केन्यामा फर्निचर विज्ञापनदाताहरू" जस्तो प्रश्नलाई सम्बन्धित श्रेणी र भौगोलिक दायरामा पठाउँछ, र त्यसपछि त्यो र्याङ्किङलाई वास्तविक क्रममै फर्काउँछ। | सार्वजनिक |
संबद्ध र सिफारिस विज्ञापन
advertiser_type, promotion_type, link_type, र promoted_brand POST र PATCH /v1/partner/ads मा वैकल्पिक फिल्डहरू हुन् — वार्षिक विज्ञापनहरू केवल व्यवसायहरूले आफैं विज्ञापन गर्न सीमित छैनन्। जब link_type affiliate_link वा referral_invitation_link हुन्छ, वा promotion_type affiliate_offer वा referral_opportunity हुन्छ, affiliate_terms_accepted सत्य हुनुपर्छ, नत्र अनुरोध 422 त्रुटिसहित अस्वीकृत गरिन्छ। शीर्षक ३५ अक्षर र विवरण ८० अक्षरमा सीमित छ — दुवै सर्भर-साइडमा लागू हुन्छन्, केवल ड्यासबोर्ड UI मा मात्र होइन।
प्रत्येक विज्ञापनदाता खातामा निर्मित एआई उपकरणहरूको एक सेट प्राप्त हुन्छ — विज्ञापन सामग्री र दृश्य जेनेरेटर, संवादात्मक सहायक, बजेट सल्लाहकार, र बाह्य एसईओ अडिटर — जुन वार्षिक निश्चित मूल्यको अतिरिक्त एआई क्रेडिटमार्फत भुक्तानी गरिन्छ।
| 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दिइएको रैंक कायम राख्ने सम्भावनाको वास्तविक सांख्यिकीय प्रक्षेपण — कहिल्यै पनि उत्पन्न अनुमान होइन — ३०/९०/३६५ दिनमा। | 1 क्रेडिट(हरू) |
| POST | /v1/advertisers/{id}/ai/seo-auditविज्ञापनदाताको आफ्नै बाह्य वेबसाइटको विश्लेषण गरी ठोस एसईओ सुधारहरू सुझाव दिनुहोस्। | 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 मोडमार्फत तपाईंले सिर्जना गर्नुभएका विज्ञापनदाताहरूका विज्ञापनहरू मात्र देखाउन (जसले तपाईंको हिस्सा उत्पन्न गरिरहेका छन्), आफ्नो पार्टनर ID सहित data-partner थप्नुहोस् (यो तपाईंको आफ्नै ड्यासबोर्डको Developers पृष्ठमा पाउन सकिन्छ):
<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 | देखाउनका लागि विज्ञापनहरूको संख्या। पूर्वनिर्धारित ४। |
data-columns | ग्रिड स्तम्भहरूको संख्या। पूर्वनिर्धारित मान २ हो। |
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 | विज्ञापन समाप्त हुनुभन्दा ३०, ७, वा १ दिन अघि। |
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": "...",
},
)