Annual Ads प्लॅटफॉर्मवर थेट तयार करा — जाहिरातदार तयार करा, जाहिराती प्रकाशित करा, पेमेंट्स सुरू करा आणि रँक ट्रॅक करा, पूर्णपणे API द्वारे.
पूर्ण किंमत तक्ता पहातुम्ही 70% ठेवता तुमचे Connect-mode जाहिरातदार त्यांच्या जाहिरातींसाठी जे पैसे देतात ते आपोआप तुमच्या वॉलेटमध्ये जमा होतात. खाली ते कसे कार्य करते ते पहा.
प्रत्येक विनंती 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जाहिरातीसाठी एकूण दृश्ये आणि क्लिक — गेलेल्या/उरलेल्या दिवसांची माहिती 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कनेक्ट मोडमध्ये तुम्ही तयार केलेल्या जाहिरातदारांनी त्यांच्या जाहिरातींसाठी भरलेल्या रकमेतील तुमचा 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 मधील ऐच्छिक फील्ड आहेत — वार्षिक जाहिराती फक्त व्यवसायांपुरती मर्यादित नाहीत. जेव्हा link_type हा affiliate_link किंवा referral_invitation_link असतो, किंवा promotion_type हा affiliate_offer किंवा referral_opportunity असतो, तेव्हा affiliate_terms_accepted हे true असणे आवश्यक आहे, अन्यथा विनंती 422 त्रुटीसह नाकारली जाते. title ची मर्यादा 35 अक्षरांपुरती आणि description ची मर्यादा 80 अक्षरांपुरती आहे — दोन्ही सर्व्हर-साइडवर अंमलात आणले जातात, फक्त डॅशबोर्ड UI मध्ये नाही.
प्रत्येक जाहिरातदार खात्याला अंगभूत AI साधनांचा संच मिळतो — जाहिरात सामग्री व दृश्य जनरेटर, संवादात्मक सहाय्यक, बजेट सल्लागार आणि बाह्य SEO ऑडिटर — ज्यासाठी वार्षिक निश्चित शुल्काच्या वर AI क्रेडिट्सद्वारे पैसे दिले जातात.
| 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>डिफॉल्टनुसार हे श्रेणीसाठीची संपूर्ण सार्वजनिक क्रमवारी दाखवते — प्लॅटफॉर्मवरील प्रत्येक जाहिरातदार, फक्त तुम्ही आणलेल्या जाहिरातदारांपुरते मर्यादित नाही. Connect मोडद्वारे तुम्ही तयार केलेल्या जाहिरातदारांच्या जाहिराती (ज्या तुमचा वाटा निर्माण करतात) फक्त दाखवण्यासाठी, तुमच्या पार्टनर आयडीसह 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 | प्रदर्शित करण्यासाठी जाहिरातींची संख्या. डीफॉल्ट 4 आहे. |
data-columns | ग्रिड स्तंभांची संख्या. डीफॉल्ट 2 आहे. |
data-layout | ग्रिड, लिस्ट किंवा कॉम्पॅक्ट. डीफॉल्ट ग्रिड आहे. कॉम्पॅक्ट एकच जाहिरात दाखवते (डेटा-काउंट दुर्लक्षित केला जातो) आणि ती लहान 'पिल' मध्ये संकुचित करण्यासाठी व नंतर परत आणण्यासाठी एक बटण असते — हा एक फुटर-शैलीचा युनिट आहे, जो स्क्रिप्टद्वारे कधीही निश्चितपणे स्थित केला जात नाही; तुम्ही तुमच्या स्वतःच्या पृष्ठावर कंटेनर 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 SDKs नियोजित आहेत, परंतु अद्याप प्रकाशित झालेली नाहीत — तोपर्यंत 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": "...",
},
)