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, अधिकतम 5 MB)। पहली भुगतान से पहले आवश्यक — नीचे भुगतान समूह देखें। | 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एक विज्ञापन के कुल व्यूज़ और क्लिक — बीते/बाकी दिन activated_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कनेक्ट मोड में आपके द्वारा बनाए गए विज्ञापनदाताओं ने अपने विज्ञापनों के लिए जो भुगतान किया, उसमें से आपका 70% हिस्सा, स्थिति के अनुसार विभाजित। | ad-revenue:read |
| GET | /v1/partner/access-logइस कुंजी के लिए पूर्ण कॉल इतिहास — मेथड, पथ, आईपी, टाइमस्टैम्प। | वहाँ |
| GET | /v1/rankings?category={id}&geo={scope}श्रेणी और भौगोलिक दायरे के लिए केवल-पठन रैंकिंग। | सार्वजनिक |
| GET | /v1/tiers7 कॉन्फ़िगर किए गए मूल्य निर्धारण स्तर (सीमा, अनलॉक्ड लाभ) | सार्वजनिक |
| 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 पर वैकल्पिक फ़ील्ड हैं — Annual Ads केवल उन व्यवसायों तक सीमित नहीं है जो स्वयं विज्ञापन दे रहे हैं। जब link_type affiliate_link या referral_invitation_link होता है, या promotion_type affiliate_offer या referral_opportunity होता है, तो affiliate_terms_accepted का मान true होना चाहिए, अन्यथा अनुरोध 422 त्रुटि के साथ अस्वीकार कर दिया जाता है। शीर्षक 35 वर्णों तक और विवरण 80 वर्णों तक सीमित है — दोनों का प्रवर्तन केवल डैशबोर्ड यूआई में ही नहीं, बल्कि सर्वर-साइड पर भी किया जाता है।
हर विज्ञापनदाता खाते को अंतर्निहित एआई टूल्स का एक सेट मिलता है — एक विज्ञापन सामग्री और दृश्य जनरेटर, एक संवादात्मक सहायक, एक बजट सलाहकार, और एक बाहरी एसईओ ऑडिटर — जो फ्लैट वार्षिक मूल्य के ऊपर एआई क्रेडिट्स से भुगतान किए जाते हैं।
| 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विज्ञापनदाता की अपनी बाहरी वेबसाइट का विश्लेषण करें और ठोस एसईओ सुधार सुझाएँ। | 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>डिफ़ॉल्ट रूप से यह श्रेणी के लिए पूरी सार्वजनिक रैंकिंग दिखाता है — प्लेटफ़ॉर्म पर हर विज्ञापनदाता, न कि केवल वे जिन्हें आपने लाया है। केवल उन विज्ञापनदाताओं के विज्ञापन दिखाने के लिए जिन्हें आपने कनेक्ट मोड के माध्यम से बनाया है (जो आपका हिस्सा उत्पन्न कर रहे हैं), 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 | ग्रिड, सूची, या कॉम्पैक्ट। डिफ़ॉल्ट रूप से ग्रिड होता है। कॉम्पैक्ट एक विज्ञापन दिखाता है (डेटा-काउंट को अनदेखा किया जाता है) जिसमें एक बटन होता है जिससे इसे एक छोटे पिल में संकुचित किया जा सकता है और वापस लाया जा सकता है — एक फ़ुटर-शैली की यूनिट, जिसे स्क्रिप्ट स्वयं कभी भी फिक्स्ड पोजीशन में नहीं रखती, आप कंटेनर div को अपनी पसंद के अनुसार अपने पेज पर रख सकते हैं और स्टाइल कर सकते हैं। |
data-offset | छोड़ने के लिए शीर्ष-रैंक विज्ञापनों की संख्या। डिफ़ॉल्ट मान 0 है। यह एक ही पृष्ठ पर दूसरे विजेट (उदाहरण के लिए फुटर में एक कॉम्पैक्ट विजेट और ऊपर एक ग्रिड विजेट) को एक ही विज्ञापन दो बार दोहराने के बजाय अलग विज्ञापन दिखाने देता है — दूसरे विजेट द्वारा पहले से दिखाए जा रहे विज्ञापनों की संख्या प्रदान करें। |
data-partner | आपकी पार्टनर आईडी (इसे अपने डैशबोर्ड के डेवलपर्स पेज पर खोजें)। वैकल्पिक — इसके बिना, विजेट उस श्रेणी के लिए प्लेटफ़ॉर्म पर मौजूद हर विज्ञापनदाता की पूरी सार्वजनिक रैंकिंग दिखाता है। इसके साथ, केवल वे विज्ञापन दिखेंगे जिन्हें आपने कनेक्ट मोड के माध्यम से लाया है — वही विज्ञापन जो वास्तव में आपका हिस्सा उत्पन्न करते हैं। |
प्रत्येक कुंजी के लिए प्रति मिनट अनुरोधों की संख्या सीमित है। प्रत्येक प्रमाणीकृत प्रतिक्रिया में X-RateLimit-Limit, X-RateLimit-Remaining और X-RateLimit-Reset हेडर होते हैं; सीमा पार करने पर Retry-After हेडर के साथ 429 Too Many Requests लौटाया जाता है।
वैकल्पिक, प्रति साझेदार। जब तक आप कोई प्रविष्टि नहीं जोड़ते, आपकी कुंजियाँ किसी भी IP से अनुरोध स्वीकार करती हैं — पहली प्रविष्टि उस साझेदार की सभी कुंजियों को केवल अनुमोदित सूचियों (allowlist-only) में बदल देती है।
प्रत्येक वेबहुक को एक बार जारी किए गए गुप्त कुंजी का उपयोग करके 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 | प्रदाता पर विज्ञापन राजस्व हिस्सेदारी भुगतान बैच विफल हो जाता है — शेयर देय में वापस आ जाते हैं और पुनः प्रयास किए जाते हैं। |
आधिकारिक जावास्क्रिप्ट/टाइपस्क्रिप्ट और पाइथन एसडीके, जो इसी एपीआई विनिर्देश से उत्पन्न हुए हैं, की योजना बनाई गई है लेकिन अभी तक प्रकाशित नहीं किए गए हैं — तब तक सीधे HTTP एपीआई को कॉल करें।
अभी तक कोई 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": "...",
},
)