براہِ راست Annual Ads پلیٹ فارم پر بنائیں — اشتہار دہندگان بنائیں، اشتہارات شائع کریں، ادائیگیاں شروع کریں، اور درجہ بندی ٹریک کریں، مکمل طور پر API کے ذریعے۔
مکمل قیمتوں کا جدول دیکھیںآپ 70% رکھتے ہیں۔ آپ کے کنیکٹ موڈ کے اشتہار دینے والے اپنی اشتہارات کے لیے جو رقم ادا کرتے ہیں — وہ خود بخود آپ کے پرس میں جمع ہو جاتی ہے۔ نیچے دیکھیں یہ کیسے کام کرتا ہے۔
ہر درخواست کو Authorization ہیڈر میں بیئرر اسکیم کے ذریعے ایک خفیہ کلید کے ساتھ مستند کیا جاتا ہے۔
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، زیادہ سے زیادہ 5MB)۔ پہلی ادائیگی سے پہلے ضروری ہے — نیچے ادائیگیوں کے گروپ کو دیکھیں۔ | 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ایک اشتہار کے کل ویوز اور کلکس — گزرے ہوئے/باقی دن activate_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/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 پر اختیاری فیلڈز ہیں — Annual Ads صرف اُن کاروباروں تک محدود نہیں ہے جو خود اشتہار دے رہے ہوں۔ جب link_type affiliate_link یا referral_invitation_link ہو، یا promotion_type affiliate_offer یا referral_opportunity ہو، تو affiliate_terms_accepted کو true ہونا چاہیے ورنہ درخواست 422 کے ساتھ مسترد کر دی جائے گی۔ عنوان کی حد 35 حروف اور تفصیل کی حد 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مُشہِر کی اپنی بیرونی ویب سائٹ کا تجزیہ کریں اور ٹھوس SEO بہتری کی تجاویز دیں۔ | 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 شامل کریں (اپنے ڈیش بورڈ کے ڈیولپرز صفحے پر اسے تلاش کریں):
<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 | گرڈ، لسٹ، یا کمپیکٹ۔ ڈیفالٹ گرڈ ہے۔ کمپیکٹ ایک واحد اشتہار دکھاتا ہے (data-count کو نظر انداز کیا جاتا ہے) جس میں ایک بٹن ہوتا ہے جس سے اسے ایک چھوٹے پِل میں سکیڑا اور واپس لایا جا سکتا ہے — ایک فوٹر طرز کا یونٹ، جسے خود اسکرپٹ کبھی بھی فکسڈ پوزیشن میں نہیں رکھتا، آپ کنٹینر div کو اپنی مرضی کے مطابق اپنی صفحے پر رکھتے اور اسٹائل کرتے ہیں۔ |
data-offset | اعلیٰ درجہ کے اشتہارات کو اسکپ کرنے کی تعداد۔ ڈیفالٹ 0 ہے۔ یہ ایک ہی صفحے پر دوسرے ویجیٹ (مثلاً فوٹر میں ایک کمپیکٹ ویجیٹ اور اوپر ایک گرڈ ویجیٹ) کو ایک ہی اشتہار کو دو بار دہرانے کے بجائے مختلف اشتہارات دکھانے دیتا ہے — دوسرے ویجیٹ میں پہلے ہی دکھائے جا رہے اشتہارات کی تعداد دیں۔ |
data-partner | آپ کی پارٹنر آئی ڈی (اپنے ڈیش بورڈ کے ڈیولپرز صفحے پر تلاش کریں)۔ اختیاری — اس کے بغیر، ویجٹ اس زمرے کے لیے مکمل عوامی درجہ بندی دکھاتا ہے، یعنی پلیٹ فارم پر موجود ہر اشتہار دہندہ۔ اس کے ساتھ، صرف وہ اشتہارات دکھائے جائیں گے جو آپ نے کنیکٹ موڈ کے ذریعے لائے ہیں — یعنی وہ اشتہارات جو حقیقتاً آپ کا حصہ پیدا کرتے ہیں۔ |
فی کی اور فی منٹ درخواستوں کی حد مقرر ہے۔ ہر تصدیق شدہ جواب میں X-RateLimit-Limit، X-RateLimit-Remaining، اور X-RateLimit-Reset ہیڈرز شامل ہوتے ہیں؛ حد سے تجاوز کرنے پر 429 Too Many Requests کی حیثیت سے جواب دیا جاتا ہے جس میں Retry-After ہیڈر ہوتا ہے۔
اختیاری، ہر پارٹنر کے لیے. جب تک آپ کوئی اندراج شامل نہیں کرتے، آپ کی چابیاں کسی بھی IP سے درخواستیں قبول کرتی ہیں — پہلا اندراج اس پارٹنر کی تمام چابیاں صرف اجازت نامے والی فہرست تک محدود کر دیتا ہے۔
ہر ویب ہُک کو ایک مرتبہ تخلیق کے وقت جاری کردہ خفیہ کلید کے ذریعے 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 | ایک اشتہاری آمدنی کے حصے کی ادائیگی کا بیچ فراہم کنندہ پر ناکام ہو جاتا ہے — حصص دوبارہ واجب الادا میں واپس آ جاتے ہیں اور دوبارہ کوشش کی جاتی ہے۔ |
اسے اسی 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": "...",
},
)