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, সর্বোচ্চ ৫ এমবি)। প্রথম পেমেন্টের আগে এটি প্রয়োজন — নিচের পেমেন্ট গ্রুপ দেখুন। | 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-এ ঐচ্ছিক ক্ষেত্র — Annual Ads শুধুমাত্র নিজেদের বিজ্ঞাপনকারী ব্যবসায়ীদের মধ্যে সীমাবদ্ধ নয়। যখন link_type affiliate_link বা referral_invitation_link হয়, অথবা promotion_type affiliate_offer বা referral_opportunity হয়, তখন affiliate_terms_accepted অবশ্যই true হতে হবে, নাহলে অনুরোধটি 422 কোডে প্রত্যাখ্যাত হবে। শিরোনাম সর্বোচ্চ ৩৫ অক্ষরে এবং বর্ণনা সর্বোচ্চ ৮০ অক্ষরে সীমাবদ্ধ — উভয়ই সার্ভার-সাইডে প্রয়োগ করা হয়, শুধুমাত্র ড্যাশবোর্ড UI-তে নয়।
প্রতি বিজ্ঞাপনদাতার অ্যাকাউন্টে অন্তর্নির্মিত এআই টুলসের একটি সেট থাকে — একটি বিজ্ঞাপন বিষয়বস্তু ও ভিজ্যুয়াল জেনারেটর, একটি কথোপকথন সহকারী, একটি বাজেট উপদেষ্টা এবং একটি বাহ্যিক SEO অডিটর — যা ফ্ল্যাট বার্ষিক মূল্যের উপরে এআই ক্রেডিট দিয়ে পরিশোধ করা হয়।
| 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বিজ্ঞাপনদাতার নিজস্ব বাহ্যিক ওয়েবসাইট বিশ্লেষণ করুন এবং বাস্তবসম্মত 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
}আপনার সাইটে একটি রেডিমেড বিজ্ঞাপন ইউনিট ড্রপ করুন — কোনো বিল্ড ধাপ নেই, কোনো আইফ্রেম নেই। স্ক্রিপ্টটি একটি বিচ্ছিন্ন শ্যাডো 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 | দেখানোর বিজ্ঞাপনের সংখ্যা। ডিফল্ট ৪। |
data-columns | গ্রিডের কলামের সংখ্যা। ডিফল্ট ২। |
data-layout | গ্রিড, তালিকা বা কম্প্যাক্ট। ডিফল্টভাবে গ্রিড। কম্প্যাক্ট একটি একক বিজ্ঞাপন দেখায় (data-count উপেক্ষিত) একটি বোতামসহ, যা এটিকে ছোট একটি পিল-এ সংকুচিত করে এবং পরে ফিরিয়ে আনে — একটি ফুটার-স্টাইল ইউনিট, যা স্ক্রিপ্ট নিজে কখনই স্থায়ীভাবে অবস্থান নির্ধারণ করে না; আপনি আপনার পেজে container div-টিকে ইচ্ছামতো স্থাপন ও স্টাইল করতে পারেন। |
data-offset | শীর্ষ-র্যাঙ্ককৃত বিজ্ঞাপনের সংখ্যা যা স্কিপ করা হবে। ডিফল্ট মান 0। একই পৃষ্ঠায় থাকা দ্বিতীয় উইজেটটিকে (যেমন ফুটারে একটি কম্প্যাক্ট উইজেট এবং পৃষ্ঠার উপরে একটি গ্রিড উইজেট) একই বিজ্ঞাপন দুবার দেখানোর পরিবর্তে ভিন্ন বিজ্ঞাপন দেখাতে দেয় — অন্য উইজেটটি ইতিমধ্যেই কতগুলো বিজ্ঞাপন দেখাচ্ছে তা পাস করুন। |
data-partner | আপনার পার্টনার আইডি (এটি আপনার নিজস্ব ড্যাশবোর্ডের ডেভেলপার্স পৃষ্ঠায় পাবেন)। ঐচ্ছিক — এটি ছাড়া উইজেটটি সেই ক্যাটাগরির সম্পূর্ণ পাবলিক র্যাঙ্কিং দেখাবে, প্ল্যাটফর্মের প্রতিটি বিজ্ঞাপনদাতাকে। এটি ব্যবহার করলে শুধুমাত্র Connect মোডের মাধ্যমে আপনি যে বিজ্ঞাপনদাতাদের এনেছেন — যারা প্রকৃতপক্ষে আপনার শেয়ার তৈরি করে — তাদের বিজ্ঞাপনই দেখাবে। |
প্রতি কী-র জন্য প্রতি মিনিটে অনুরোধ সীমাবদ্ধ। প্রতিটি প্রমাণীকৃত প্রতিক্রিয়ায় X-RateLimit-Limit, X-RateLimit-Remaining এবং X-RateLimit-Reset হেডার থাকে; সীমা অতিক্রম করলে Retry-After হেডারসহ 429 Too Many Requests ফেরত দেওয়া হয়।
প্রতি অংশীদারের জন্য ঐচ্ছিক। আপনি একটি এন্ট্রি যোগ না করা পর্যন্ত, আপনার কী-গুলো যেকোনো আইপি থেকে অনুরোধ গ্রহণ করে — প্রথম এন্ট্রি সেই অংশীদারের সব কী-কে শুধুমাত্র এলাওলিস্ট-ভিত্তিক করে তোলে।
প্রতিটি ওয়েবহুক 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": "...",
},
)