בנו ישירות על גבי פלטפורמת Annual Ads — צרו מפרסמים, פרסמו מודעות, יזמו תשלומים ועקבו אחר הדירוג, והכל באמצעות ה-API.
ראו את טבלת המחירים המלאהאתה שומר 70% מהסכום שמשלמים המפרסמים במצב 'Connect' עבור הפרסומות שלהם — הסכום מועבר אוטומטית לארנק שלך. ראה כיצד זה עובד בהמשך.
כל בקשה מאומתת באמצעות מפתח סודי בכותרת ה-Authorization, תוך שימוש בשיטת ה-Bearer.
POST https://api.adhub365.com/v1/partner/ads
Authorization: Bearer sk_sandbox_...
Content-Type: application/jsonמפתחות API מוענקים לחשבונות שותפים מאושרים על ידי צוות Annual Ads.
הקימו חשבון שותף| 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%, מהסכום ששילמו המפרסמים שיצרת במצב 'Connect' עבור המודעות שלהם, לפי סטטוס. | ad-revenue:read |
| GET | /v1/partner/access-logהיסטוריית השיחות המלאה עבור מפתח זה — שיטה, נתיב, כתובת IP, חותמת זמן. | שם |
| GET | /v1/rankings?category={id}&geo={scope}דירוג לקריאה בלבד עבור קטגוריה והיקף גיאוגרפי. | ציבורי |
| GET | /v1/tiers7 רמות התמחור שהוגדרו (סף, הטבות ללא הגבלה). | ציבורי |
| 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. אורך ה-title מוגבל ל-35 תווים ואורך ה-description ל-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 עם מזהה השותף שלך (תוכל למצוא אותו בדף 'מפתחים' בלוח המחוונים שלך):
<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 | מזהה השותף שלך (תוכל למצוא אותו בדף "מפתחים" בלוח המחוונים שלך). אופציונלי — ללא מזהה זה, הווידג'ט מציג את הדירוג הציבורי המלא לאותה קטגוריה, הכולל את כל המפרסמים בפלטפורמה. עם מזהה זה, יוצגו רק מודעות של מפרסמים שהבאת באמצעות מצב 'Connect' — אלה שמניבים בפועל את חלקך. |
יש מגבלה על מספר הבקשות לכל מפתח, בכל דקה. כל תגובה מאומתת כוללת את הכותרות 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 או יום אחד לפני שתוקף המודעה יפוג. |
partner_ad_revenue.payout.completed | תשלום חלוקת הרווחים מפרסומות הגיע למעמד "שולם". |
partner_ad_revenue.payout.failed | אצווה של תשלומים בגין חלוקת הכנסות מפרסום נכשלה אצל הספק — הסכומים חוזרים לרשימת התשלומים הממתינים ונעשה ניסיון חוזר. |
מתוכננים SDK-ים רשמיים ל-JavaScript/TypeScript ול-Python, שנוצרו על בסיס אותה מפרט API, אך הם טרם פורסמו — עד אז, יש לפנות ישירות ל-API ה-HTTP.
עדיין אין SDK — אלה פונים ישירות ל-API של HTTP ופועלים כבר היום בכל שפת תכנות.
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": "...",
},
)