შექმენით პირდაპირ Annual Ads-ის პლატფორმაზე — შექმენით რეკლამის განმთავსებლები, გამოაქვეყნეთ რეკლამები, დაამუშავეთ გადახდები და თვალი ადევნეთ რეიტინგს, სრულად API-ის მეშვეობით.
სრული ფასების ცხრილის ნახვათქვენ ინარჩუნებთ 70%-ს თქვენი Connect-რეჟიმის რეკლამის დამკვეთები რეკლამაში იხდიან — თანხა ავტომატურად გადმოირიცხება თქვენს საფულეში. იხილეთ ქვემოთ, როგორ მუშაობს ეს.
ყველა მოთხოვნა ავთენტიფიცირდება საიდუმლო გასაღებით ავტორიზაციის სათაურში, Bearer სქემის გამოყენებით.
POST https://api.adhub365.com/v1/partner/ads
Authorization: Bearer sk_sandbox_...
Content-Type: application/jsonAPI გასაღებები დამტკიცებულ პარტნიორულ ანგარიშებს ეთმობა ყოველწლიური რეკლამების გუნდის მიერ.
შექმენით პარტნიორის ანგარიში| POST | /v1/partner/advertisersშექმენით რეკლამის განმთავსებლის ანგარიში თქვენი ერთ-ერთი მომხმარებლის სახელით (Connect რეჟიმი). | 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 მბ). პირველი გადახდის წინ აუცილებელია — იხილეთ ქვემოთ გადახდების ჯგუფი. | 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%-იანი წილი იმ თანხიდან, რასაც Connect რეჟიმში შექმნილმა რეკლამის დამკვეთებმა თავიანთი რეკლამებისთვის გადაიხადეს, სტატუსების მიხედვით დაყოფილი. | ad-revenue:read |
| GET | /v1/partner/access-logამ გასაღების ზარების სრული ისტორია — მეთოდი, პათი, IP, დროის ნიშნული. | იქ |
| GET | /v1/rankings?category={id}&geo={scope}მხოლოდ წაკითხვის რეჟიმის რეიტინგი კატეგორიისა და გეოგრაფიული არეალისთვის. | საჯარო |
| GET | /v1/tiersკონფიგურირებული ფასების 7 დონე (მაჩვენებელი, გახსნილი უპირატესობები). | საჯარო |
| GET | /v1/referral-programრეფერალური კასკადისა და ლიდერების ჯგუფისთვის ამჟამად მოქმედი საკომისიოს პროცენტები. | საჯარო |
| GET | /v1/partner-programრეკლამიდან მიღებული შემოსავლის ამჟამინდელი განაწილება (Connect რეჟიმი) თქვენსა და Annual Ads-ს შორის. | საჯარო |
| 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-ით — ორივე შეზღუდვა სერვერის მხარეს მოქმედებს და არა მხოლოდ მართვის პანელის ინტერფეისში.
ყველა რეკლამის განმთავსებლის ანგარიშს აქვს ჩაშენებული ხელოვნური ინტელექტის ინსტრუმენტების ნაკრები — რეკლამის შინაარსისა და ვიზუალის გენერატორი, საუბრების ასისტენტი, ბიუჯეტის მრჩეველი და გარე 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რეალური სტატისტიკური პროექცია — და არა გენერაციული ვარაუდი — კონკრეტული რანგის შენარჩუნების ალბათობისა 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 თქვენი პარტნიორის ID-ით (იპოვეთ ის თქვენი საკუთარი დაფის დეველოპერების გვერდზე):
<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 | საკატეგორიო ID-ის ჩვენება. სავალდებულოა — თუ data-partner არ არის მითითებული, ამ შემთხვევაში მისი გამოტოვება ყველა კატეგორიაში პარტნიორის რეკლამების ჩვენებას უზრუნველყოფს. |
data-geo | გეოგრაფიული მასშტაბი: ადგილობრივი, რეგიონული ან გლობალური. ნაგულისხმევად გლობალურია. |
data-count | სარეკლამო განცხადებების რაოდენობა. ნაგულისხმევი მნიშვნელობაა 4. |
data-columns | სარაზგასწორების სვეტების რაოდენობა. ნაგულისხმევი მნიშვნელობაა 2. |
data-layout | სარეკლამო ბლოკი, სია ან კომპაქტური. ნაგულისხმევად დაყენებულია "სარეკლამო ბლოკი". კომპაქტური აჩვენებს ერთ რეკლამას (data-count უგულებელყოფილია) ღილაკით, რომლითაც მისი შეკუმშვა პატარა ბლოკად და შემდეგ აღდგენაა შესაძლებელი — ფუტერის სტილის ერთეული, რომელიც სკრიპტის მიერ ფიქსირებულად არასდროს პოზიციონირდება. თქვენ თავად ათავსებთ და აფორმებთ კონტეინერის div-ს საკუთარ გვერდზე სურვილისამებრ. |
data-offset | საუკეთესო რეიტინგის მქონე რეკლამების გამოტოვების რაოდენობა. ნაგულისხმევი მნიშვნელობაა 0. საშუალებას აძლევს ერთსა და იმავე გვერდზე არსებულ მეორე ვიჯეტს (მაგ., ფუტერში არსებულ კომპაქტურს და გვერდზე უფრო მაღლა განთავსებულ ბადისებრს), რომ აჩვენოს განსხვავებული რეკლამები იმავე რეკლამის ორჯერ გამეორების ნაცვლად — მიუთითეთ იმ რეკლამების რაოდენობა, რომლებსაც მეორე ვიჯეტი უკვე აჩვენებს. |
data-partner | თქვენი პარტნიორის ID (იპოვეთ ის თქვენი დაფის დეველოპერების გვერდზე). არასავალდებულოა — მის გარეშე ვიჯეტი აჩვენებს სრულ საჯარო რეიტინგს ამ კატეგორიისთვის, პლატფორმაზე არსებულ ყველა რეკლამის დამკვეთს. მისი გამოყენებით კი — მხოლოდ იმ რეკლამის დამკვეთების რეკლამებს, რომლებიც თქვენ Connect რეჟიმით მოიზიდეთ, ანუ ისინი, რომლებიც რეალურად გენერირებენ თქვენს წილს. |
მოთხოვნები შეზღუდულია გასაღების მიხედვით, წუთში. ყველა ავთენტიფიცირებული პასუხი შეიცავს X-RateLimit-Limit, X-RateLimit-Remaining და X-RateLimit-Reset ჰედერებს; ლიმიტის გადაჭარბების შემთხვევაში ბრუნდება 429 Too Many Requests კოდი და Retry-After ჰედერი.
არასავალდებულოა, პარტნიორის მიხედვით. სანამ ჩანაწერს არ დაამატებთ, თქვენი გასაღებები ნებისმიერი IP-დან მოთხოვნებს იღებენ — პირველი ჩანაწერი ამ პარტნიორის ყველა გასაღებს მხოლოდ დაშვებულთა სიაში მყოფთათვის გახდის ხელმისაწვდომს.
ყველა ვებჰუკი ხელმოწერილია HMAC-SHA256-ით, შექმნის მომენტში ერთჯერადად გაცემული საიდუმლო გასაღების გამოყენებით — ტვირთის (payload) სანდოდ მიჩნევის წინ შეამოწმეთ ხელმოწერა. მოვლენები მიეწოდება მხოლოდ იმ პარტნიორს, რომელიც შესაბამისი რეკლამის დამკვეთის მფლობელია.
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 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": "...",
},
)