API למפתחים

האזור האישי, גם דרך הקוד

שירותים, חשבוניות, פניות, ניטור ו-DNS, דרך REST API עם מפתח אישי שנוצר באזור האישי.

  • מפתח אישי שמוצג פעם אחת
  • הרשאות נפרדות לכל מפתח
  • מגבלת קצב ויומן שימוש לכל מפתח

בנינו את ה-API כי לקוחות רצו לחבר את שירותי האחסון שלהם למערכות שהם כבר עובדים איתן: סקריפט קטן שבודק סטטוס, חיבור למערכת ניהול פנימית, או סוכן AI שעוקב אחרי התשתית.

דרך ה-API אפשר לקרוא את פרטי החשבון, השירותים, החשבוניות, התשלומים, שרתי ה-VPS, חשבונות האחסון, הניטור, ה-DNS וההזמנות; לפתוח פניות תמיכה ולהגיב עליהן; ולבטל שירות. כל קריאה עוברת עם מפתח API אישי, מוגבלת בקצב ונרשמת ביומן השימוש של המפתח.

הערה לגבי שפת התיעוד

ממשק ה-API ודוגמאות הקוד כתובים באנגלית. מומלץ לשלוח את התיעוד הזה למפתחים באנגלית לנוחות עבודה מיטבית. הוספנו תמיכה בעברית לממשק המשתמש למקרה שיש צורך בכך.

מבוא

ה-API של Hostey מאורגן סביב עקרונות REST. הוא משתמש בכתובות URL צפויות מבוססות משאבים, מקבל גוף בקשה בפורמט JSON, מחזיר תגובות בפורמט JSON, ומשתמש בקודי HTTP סטנדרטיים.

גרסאות

ה-API מנוהל לפי גרסאות דרך נתיב ה-URL. הגרסה הנוכחית היא v1. כאשר יוכנסו שינויים שוברים, גרסה חדשה תשוחרר תחת נתיב חדש.

סוג התוכן

כל בקשה שכוללת גוף חייבת להשתמש ב- Content-Type: application/json. כל התגובות מוחזרות כ-JSON.

כתובת הבסיס
https://hostey.co.il/api/v1

אימות

כל בקשת API חייבת לכלול את מפתח ה-API בכותרת Authorization בשיטת Bearer.

יצירת מפתח

  1. התחברות ל- פורטל הלקוחות.
  2. ניווט אל הגדרות > מפתחות API.
  3. לחיצה על "יצירת מפתח חדש" ומתן שם תיאורי.
  4. העתקת המפתח מיד. הוא מוצג רק פעם אחת.

מפתחות API מתחילים ב- hst_ והם מוגבלים לחשבון שלכם. כברירת מחדל מפתח מעניק גישה מלאה; ניתן להגביל אותו למשאבים ספציפיים (קריאה/כתיבה) ולהגדיר תאריך תפוגה בעת היצירה.

הרשאות

מפתח בלי הרשאות מקבל גישה מלאה. כדי להגביל אותו, נותנים לו רשימת הרשאות בפורמט read:<resource> או write:<resource>. המשאבים הם:

  • account
  • services
  • invoices
  • payments
  • tickets
  • vps
  • hosting
  • monitors
  • dns
  • orders

אפשר גם כוכבית: * נותן גישה לכל דבר, read:* נותן קריאה בכל המשאבים, write:* נותן כתיבה בכל המשאבים, ו-*:<resource> נותן קריאה וכתיבה במשאב אחד.

בקשת GET צריכה הרשאת read:. כל שיטה אחרת (POST, PUT, DELETE) צריכה הרשאת write:, ולכן ביטול שירות צריך write:services ופתיחת פנייה צריכה write:tickets. כשחסרה הרשאה, התשובה היא 403 עם הקוד INSUFFICIENT_PERMISSIONS.

יש לשמור על המפתח בסוד. אין לשמור מפתחות API ב-version control או לחשוף אותם בקוד צד לקוח. יש להשתמש במשתני סביבה או במנהל סודות. אם מפתח נחשף, יש לבטל אותו מיד מהפורטל וליצור חדש.
הכותרת Authorization
Authorization: Bearer hst_your_api_key
דוגמת בקשה
curl https://hostey.co.il/api/v1/account \
  -H "Authorization: Bearer hst_your_api_key"

הגבלת קצב

ה-API מגביל ל- 100 בקשות לדקה לכל מפתח API (המגבלה נקבעת לכל מפתח, בין 1 ל-1000). יש גם תקרה של 120 בקשות לדקה לכל כתובת IP, על פני כל המפתחות, ולכן מפתח שהוגדר מעליה לא יגיע למספר שלו מכתובת אחת. בחריגה מהמגבלה של המפתח, תגובת ה-429 מגיעה עם הקוד RATE_LIMITED ועם שתי כותרות: Retry-After ו-X-RateLimit-Remaining. בחריגה מהתקרה של כתובת ה-IP, היא מגיעה עם הקוד TOO_MANY_REQUESTS ורק עם הכותרת Retry-After.

פרמטרסוגתיאור
Retry-Afterintegerכמה שניות לחכות לפני ניסיון חוזר. נשלח רק בתגובות 429.
X-RateLimit-Remainingintegerכמה בקשות נשארו בחלון הנוכחי, כאן תמיד 0. נשלח רק עם הקוד RATE_LIMITED, לא עם TOO_MANY_REQUESTS.

לשלוש פעולות כתיבה יש גם מגבלה לכל חשבון, בנוסף למגבלה של המפתח: פתיחת פנייה, תגובה לפנייה וביטול שירות. כל אחת מהן מאפשרת 5 בקשות לדקה, והבקשה הבאה מקבלת 429 עם הקוד RATE_LIMITED והכותרת Retry-After.

כאשר חורגים מהמגבלה, ה-API מחזיר 429 Too Many Requests. מומלץ ליישם backoff מעריכי באינטגרציה.

תגובת 429
{
  "error": "Rate limit exceeded",
  "code": "RATE_LIMITED"
}

עימוד

נקודות קצה של רשימות מחזירות תוצאות מעומדות. ניתן להשתמש בפרמטרים לשליטה בעימוד.

פרמטרסוגתיאור
pageintegerמספר העמוד, מתחיל ב-1. ברירת מחדל: 1.
limitintegerכמות פריטים בעמוד. ברירת מחדל: 50, מקסימום 500.

השדה total הוא מספר הפריטים בכל העמודים, והשדה totalPages הוא מספר העמודים: Math.ceil(total / limit).

תגובה מחולקת לעמודים
{
  "data": [ ... ],
  "total": 42,
  "page": 1,
  "limit": 50,
  "totalPages": 1
}

טיפול בשגיאות

ה-API משתמש בקודי HTTP סטנדרטיים. קודים בטווח 2xx מציינים הצלחה, 4xx מציינים שגיאת לקוח, ו-5xx מציינים שגיאת שרת.

קודסטטוסתיאור
200OKהבקשה הצליחה.
201Createdהמשאב נוצר בהצלחה.
400Bad Requestחסרים שדות חובה, או שהבדיקה נכשלה. המערך details מפרט את השדות הבעייתיים.
401Unauthorizedמפתח ה-API חסר או לא תקין.
403Forbiddenאין הרשאה למשאב המבוקש.
404Not Foundהמשאב לא קיים, או שאינו שייך לחשבון.
409Conflictהבקשה מתנגשת במצב של המשאב. כך עונה ביטול של שירות שמשולם בהעברה בנקאית.
429Too Many Requestsחריגה ממגבלת הקצב.
500Internal Server Errorתקלה בצד שלנו.
501Not Implementedנקודת הקצה קיימת, אבל הפעולה עדיין לא זמינה. כך עונה חידוש שירות.
502Bad Gatewayשליפת ה-PDF של החשבונית מספק התשלומים נכשלה. הבקשה עצמה הייתה תקינה.

בכל תשובת שגיאה יש הודעה (error) וקוד קבוע (code). ההודעה יכולה להשתנות והקוד לא, ולכן באינטגרציה כדאי לבדוק את הקוד.

קודי שגיאה

קודHTTPתיאור
MISSING_API_KEY401לא נשלחה כותרת Authorization: Bearer.
INVALID_API_KEY401המפתח לא מוכר, בוטל או פג תוקפו, או שהחשבון לא פעיל.
INSUFFICIENT_PERMISSIONS403למפתח אין את ההרשאה שהבקשה הזו צריכה.
NOT_FOUND404המשאב לא קיים, או שאינו שייך לחשבון.
INVALID_JSON400גוף הבקשה אינו JSON תקין.
VALIDATION_ERROR400שדה לא עבר את הבדיקה. המערך details מפרט כל שדה.
TICKET_CLOSED400נשלחה תגובה לפנייה סגורה.
INVALID_TRANSITION400אי אפשר להעביר את השירות לסטטוס המבוקש.
BANK_TRANSFER409השירות משולם בהעברה בנקאית. כדי לבטל אותו, פונים לתמיכה.
RATE_LIMITED429הגעתם למגבלה של המפתח, או למגבלה לכל חשבון על פעולת כתיבה.
TOO_MANY_REQUESTS429יותר מדי בקשות מכתובת IP אחת.
INTERNAL_ERROR500תקלה בצד שלנו.
NOT_IMPLEMENTED501הפעולה עדיין לא זמינה. כך עונה חידוש שירות.
PDF_UNAVAILABLE502לא ניתן היה לשלוף את ה-PDF של החשבונית מספק התשלומים.
תגובת שגיאה
{
  "error": "Ticket not found",
  "code": "NOT_FOUND"
}
שגיאת בדיקה (400)
{
  "error": "נתונים לא תקינים",
  "code": "VALIDATION_ERROR",
  "details": [
    { "field": "subject", "message": "Subject must be at least 3 characters" },
    { "field": "message", "message": "Message must be at least 10 characters" }
  ]
}

אימות (Auth)

התחברות, הרשמה, שחזור סיסמה ובדיקת סשן.

חשבון

שליפת פרטים על החשבון המאומת, כולל פרטי קשר וספירות מצטברות.

GET/api/v1/account

מחזיר את פרטי הפרופיל עבור החשבון המשויך למפתח ה-API, כולל ספירות שירותים פעילים ופניות פתוחות.

שדות תגובה

פרמטרסוגתיאור
idstringמזהה ייחודי של החשבון.
namestringהשם המוצג.
firstNamestring | nullשם פרטי של איש הקשר.
lastNamestring | nullשם משפחה של איש הקשר.
companyNamestring | nullשם החברה.
emailstringכתובת המייל הראשית (לחיוב).
phonestring | nullטלפון של איש הקשר.
statusstringסטטוס החשבון (ACTIVE, SUSPENDED).
createdAtstringמועד פתיחת החשבון, בפורמט ISO 8601.
activeServicesintegerמספר השירותים הפעילים.
openTicketsintegerמספר הפניות בסטטוס OPEN או IN_PROGRESS.
בקשה
curl https://hostey.co.il/api/v1/account \
  -H "Authorization: Bearer hst_your_api_key"
תגובה: 200 OK
{
  "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
  "name": "Acme Corp",
  "firstName": "Yossi",
  "lastName": "Cohen",
  "companyName": "Acme Corp Ltd",
  "email": "billing@acme.co.il",
  "phone": "050-1234567",
  "status": "ACTIVE",
  "createdAt": "2025-06-15T10:30:00.000Z",
  "activeServices": 3,
  "openTickets": 1
}

שירותים

שליפת שירותי האירוח המשויכים לחשבון. שירותים מייצגים מנויים פעילים לשרתי VPS, חבילות אירוח משותף, או תוספים.

GET/api/v1/services

מחזיר רשימת כל השירותים המשויכים לחשבון, ממוינים לפי תאריך יצירה (החדש ביותר ראשון).

שדות תגובה

פרמטרסוגתיאור
idstringמזהה ייחודי של השירות.
productNamestringשם המוצר, כפי שהוא מוצג.
productTypestringVPS, SHARED_HOSTING או ADDON.
statusstringPENDING, PROVISIONING, ACTIVE, SUSPENDED, CANCELLED, TERMINATED.
amountnumberסכום החיוב לכל מחזור (בשקלים).
billingCycleintegerמחזור החיוב בחודשים (1 = חודשי, 12 = שנתי).
nextDueDatestringמועד החיוב הבא, בפורמט ISO 8601.
בקשה
curl https://hostey.co.il/api/v1/services \
  -H "Authorization: Bearer hst_your_api_key"
תגובה: 200 OK
{
  "data": [
    {
      "id": "3f2c9a4e-8b1d-4c6f-9e2a-7d5b1c0e4a91",
      "productId": "9b2f7e1c-4d3a-4f8b-b6e2-1c5d8a7f3e60",
      "productName": "VPS Basic",
      "productType": "VPS",
      "status": "ACTIVE",
      "amount": 99.00,
      "currency": "ILS",
      "billingCycle": 1,
      "nextDueDate": "2026-04-15T00:00:00.000Z",
      "createdAt": "2025-06-15T10:30:00.000Z"
    }
  ],
  "total": 3,
  "page": 1,
  "limit": 50,
  "totalPages": 1
}
GET/api/v1/services/:id

מחזיר מידע מפורט על שירות בודד, כולל סטטוס ההקמה וההגדרות שלו.

פרמטרים בנתיב

פרמטרסוגתיאור
idחובהstringהמזהה הייחודי של השירות.
האובייקט configuration מוחזר תמיד, וכשאין בו נתונים הוא {}. בשירות VPS הוא כולל את פרטי השרת: label, provider, ovhServiceName, ipv4, ipv6, region, status, os ו-notes. שדה מופיע רק אחרי שנקבע לו ערך.
בקשה
curl https://hostey.co.il/api/v1/services/3f2c9a4e-8b1d-4c6f-9e2a-7d5b1c0e4a91 \
  -H "Authorization: Bearer hst_your_api_key"
תגובה: 200 OK
{
  "id": "3f2c9a4e-8b1d-4c6f-9e2a-7d5b1c0e4a91",
  "productId": "9b2f7e1c-4d3a-4f8b-b6e2-1c5d8a7f3e60",
  "productName": "VPS Basic",
  "productType": "VPS",
  "productDescription": "2 vCPU, 4 GB RAM, 80 GB NVMe SSD",
  "status": "ACTIVE",
  "provisioningStatus": "COMPLETED",
  "amount": 99.00,
  "currency": "ILS",
  "billingCycle": 1,
  "nextDueDate": "2026-04-15T00:00:00.000Z",
  "configuration": {
    "label": "vps-basic-42",
    "provider": "OVH",
    "ovhServiceName": "vps-12345678.vps.ovh.net",
    "ipv4": "198.51.100.42",
    "ipv6": "2001:db8::42",
    "region": "EU West (France)",
    "status": "running",
    "os": "Ubuntu 24.04 LTS",
    "notes": "Production web server"
  },
  "createdAt": "2025-06-15T10:30:00.000Z",
  "updatedAt": "2026-03-10T09:15:00.000Z"
}

פניות

יצירה וניהול פניות תמיכה. צפייה בכל הפניות, יצירת חדשות, וצפייה בפרטי פנייה עם היסטוריית הודעות מלאה.

GET/api/v1/tickets

מחזיר רשימת כל פניות התמיכה בחשבון, ממוינות לפי תאריך יצירה (החדשה ביותר ראשונה).

שדות תגובה

פרמטרסוגתיאור
idstringמזהה ייחודי של הפנייה.
numberintegerמספר הפנייה, כפי שהוא מוצג.
subjectstringנושא הפנייה.
prioritystringLOW, MEDIUM, HIGH או URGENT.
statusstringOPEN, IN_PROGRESS, WAITING, RESOLVED או CLOSED.
בקשה
curl https://hostey.co.il/api/v1/tickets \
  -H "Authorization: Bearer hst_your_api_key"
תגובה: 200 OK
{
  "data": [
    {
      "id": "5d8e2f1a-6b3c-4e7d-9a1f-2c4b6e8d0f13",
      "number": 1042,
      "subject": "Cannot SSH into VPS",
      "priority": "HIGH",
      "status": "OPEN",
      "createdAt": "2026-03-18T08:30:00.000Z",
      "updatedAt": "2026-03-18T08:30:00.000Z"
    }
  ],
  "total": 8,
  "page": 1,
  "limit": 50,
  "totalPages": 1
}
POST/api/v1/tickets

יוצר פניית תמיכה חדשה. ההודעה הראשונית נכללת בגוף הבקשה. הפנייה נוצרת עם סטטוס OPEN.

גוף הבקשה

פרמטרסוגתיאור
subjectחובהstringנושא הפנייה, 3 עד 200 תווים.
messageחובהstringתוכן ההודעה הראשונה, 10 עד 10,000 תווים.
prioritystringLOW, MEDIUM, HIGH או URGENT. ברירת מחדל: MEDIUM.
בקשה
curl -X POST https://hostey.co.il/api/v1/tickets \
  -H "Authorization: Bearer hst_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "subject": "Cannot SSH into VPS",
    "message": "I am unable to connect to my VPS via SSH since this morning.",
    "priority": "HIGH"
  }'
תגובה: 201 Created
{
  "id": "e4a7c2b9-1f3d-4a6e-8c5b-7d9f0a2e4c68",
  "number": 1043,
  "subject": "Cannot SSH into VPS",
  "priority": "HIGH",
  "status": "OPEN",
  "createdAt": "2026-03-21T10:00:00.000Z"
}
GET/api/v1/tickets/:id

מחזיר את הפרטים המלאים של פנייה, כולל כל ההודעות הציבוריות. הערות פנימיות של הצוות לא נכללות בתגובה.

פרמטרים בנתיב

פרמטרסוגתיאור
idחובהstringהמזהה הייחודי של הפנייה.

שדות הודעה

פרמטרסוגתיאור
messagestringתוכן ההודעה.
authorstringשם כותב ההודעה ("System" בהודעה שהמערכת יצרה).
authorRolestringCLIENT, PARTNER, ADMIN או SYSTEM.
בקשה
curl https://hostey.co.il/api/v1/tickets/5d8e2f1a-6b3c-4e7d-9a1f-2c4b6e8d0f13 \
  -H "Authorization: Bearer hst_your_api_key"
תגובה: 200 OK
{
  "id": "5d8e2f1a-6b3c-4e7d-9a1f-2c4b6e8d0f13",
  "number": 1042,
  "subject": "Cannot SSH into VPS",
  "priority": "HIGH",
  "status": "OPEN",
  "resolution": null,
  "createdAt": "2026-03-18T08:30:00.000Z",
  "updatedAt": "2026-03-19T16:00:00.000Z",
  "messages": [
    {
      "id": "0f6b3d9e-2a4c-4b8e-9d1f-3e5a7c9b1d24",
      "message": "I am unable to connect to my VPS via SSH.",
      "author": "Yossi Cohen",
      "authorRole": "CLIENT",
      "createdAt": "2026-03-18T08:30:00.000Z"
    },
    {
      "id": "1a7c4e0f-3b5d-4c9f-8e2a-4f6b8d0c2e35",
      "message": "We identified a firewall rule blocking port 22.",
      "author": "Support Team",
      "authorRole": "ADMIN",
      "createdAt": "2026-03-19T16:00:00.000Z"
    }
  ]
}

חשבוניות

שליפת חשבוניות מס / קבלה המשויכות לחשבון, כולל פריטים וסטטוס תשלום.

GET/api/v1/invoices

מחזיר רשימת כל החשבוניות בחשבון, ממוינות לפי תאריך יצירה (החדשה ביותר ראשונה).

פרמטרים בשורת הכתובת

פרמטרסוגתיאור
pageintegerמספר עמוד (ברירת מחדל: 1).
limitintegerפריטים לעמוד (ברירת מחדל: 50).
statusstringסינון לפי סטטוס (DRAFT / ISSUED / PAID / VOID / OVERDUE).

שדות תגובה

פרמטרסוגתיאור
idstringמזהה ייחודי של החשבונית.
invoiceNumberstringמספר החשבונית.
statusstringDRAFT, ISSUED, PAID, VOID, OVERDUE.
subtotalnumberהסכום לפני מע"מ (בשקלים).
taxAmountnumberסכום המע"מ (בשקלים).
totalnumberהסכום הכולל (בשקלים).
issueDatestringתאריך ההפקה, בפורמט ISO 8601.
dueDatestringתאריך היעד לתשלום, בפורמט ISO 8601.
בקשה
curl https://hostey.co.il/api/v1/invoices \
  -H "Authorization: Bearer hst_your_api_key"
תגובה: 200 OK
{
  "data": [
    {
      "id": "6c1e8a3f-5d7b-4e2c-a9f4-8b0d2e4a6c57",
      "invoiceNumber": "2026-0042",
      "status": "PAID",
      "subtotal": 99.00,
      "taxAmount": 17.82,
      "total": 116.82,
      "currency": "ILS",
      "issueDate": "2026-03-15T10:00:00.000Z",
      "dueDate": "2026-04-01T00:00:00.000Z",
      "createdAt": "2026-03-15T10:00:00.000Z"
    }
  ],
  "total": 12,
  "page": 1,
  "limit": 50,
  "totalPages": 1
}
GET/api/v1/invoices/:id

מחזיר מידע מפורט על חשבונית בודדת, כולל כל הפריטים.

פרמטרים בנתיב

פרמטרסוגתיאור
idחובהstringהמזהה הייחודי של החשבונית.
בקשה
curl https://hostey.co.il/api/v1/invoices/6c1e8a3f-5d7b-4e2c-a9f4-8b0d2e4a6c57 \
  -H "Authorization: Bearer hst_your_api_key"
תגובה: 200 OK
{
  "id": "6c1e8a3f-5d7b-4e2c-a9f4-8b0d2e4a6c57",
  "invoiceNumber": "2026-0042",
  "status": "PAID",
  "subtotal": 99.00,
  "taxRate": 18,
  "taxAmount": 17.82,
  "total": 116.82,
  "currency": "ILS",
  "issueDate": "2026-03-15T10:00:00.000Z",
  "dueDate": "2026-04-01T00:00:00.000Z",
  "items": [
    {
      "id": "8e3a0c5b-7f9d-4a4e-b1c6-0d2f4a6e8b79",
      "description": "VPS Basic - Monthly",
      "quantity": 1,
      "unitPrice": 99.00,
      "lineTotal": 99.00
    }
  ],
  "createdAt": "2026-03-15T10:00:00.000Z",
  "updatedAt": "2026-03-28T14:22:00.000Z"
}

תשלומים

צפייה בהיסטוריית התשלומים של החשבון.

GET/api/v1/payments

מחזיר רשימת כל התשלומים המשויכים לחשבון, ממוינים לפי תאריך (החדש ביותר ראשון).

שדות תגובה

פרמטרסוגתיאור
idstringמזהה ייחודי של התשלום.
amountnumberסכום התשלום (בשקלים).
methodstringאמצעי התשלום (למשל TRANZILA, CREDIT_CARD, BANK_TRANSFER).
statusstringSUCCEEDED או REFUNDED. ניסיונות חיוב שנדחו לא מופיעים.
cardLast4string4 הספרות האחרונות של הכרטיס (אם רלוונטי).
invoiceIdstringמזהה החשבונית המשויכת.
invoiceNumberstringמספר החשבונית המשויכת.
paidAtstringמועד התשלום בפורמט ISO 8601 (null אם לא שולם).
createdAtstringמועד היצירה, בפורמט ISO 8601.
בקשה
curl https://hostey.co.il/api/v1/payments \
  -H "Authorization: Bearer hst_your_api_key"
תגובה: 200 OK
{
  "data": [
    {
      "id": "4a9f6b2d-8e0c-4d5a-b3e7-9c1f3a5d7e8b",
      "status": "SUCCEEDED",
      "amount": 116.82,
      "method": "TRANZILA",
      "cardLast4": "4242",
      "invoiceId": "6c1e8a3f-5d7b-4e2c-a9f4-8b0d2e4a6c57",
      "invoiceNumber": "2026-0042",
      "paidAt": "2026-03-28T14:22:00.000Z",
      "createdAt": "2026-03-28T14:22:00.000Z"
    }
  ],
  "total": 24,
  "page": 1,
  "limit": 50,
  "totalPages": 1
}

VPS

צפייה בשרתי ה-VPS של החשבון: פרטי השרת, כתובות IP, אזור, מערכת הפעלה וסטטוס. נקודות הקצה האלה לקריאה בלבד.

GET/api/v1/vps

מחזיר רשימת כל שרתי ה-VPS המשויכים לחשבון.

שדות תגובה

פרמטרסוגתיאור
idstringמזהה ייחודי של שרת ה-VPS.
labelstringשם השרת.
providerstringספק התשתית (למשל OVH).
ipv4stringכתובת ה-IPv4 הראשית.
ipv6stringכתובת IPv6 (אם הוקצתה).
regionstringאזור מרכז הנתונים.
osstringמערכת ההפעלה.
statusstringrunning, stopped או unknown.
בקשה
curl https://hostey.co.il/api/v1/vps \
  -H "Authorization: Bearer hst_your_api_key"
תגובה: 200 OK
{
  "data": [
    {
      "id": "3f2c9a4e-8b1d-4c6f-9e2a-7d5b1c0e4a91",
      "label": "vps-basic-42",
      "provider": "OVH",
      "ipv4": "198.51.100.42",
      "ipv6": "2001:db8::42",
      "region": "EU West (France)",
      "status": "running",
      "os": "Ubuntu 24.04 LTS",
      "createdAt": "2025-06-15T10:30:00.000Z",
      "updatedAt": "2026-03-20T12:00:00.000Z"
    }
  ],
  "total": 1,
  "page": 1,
  "limit": 50,
  "totalPages": 1
}
GET/api/v1/vps/:id

מחזיר מידע מפורט על שרת VPS בודד: כתובות IP, אזור, מערכת הפעלה, סטטוס והערות.

פרמטרים בנתיב

פרמטרסוגתיאור
idחובהstringהמזהה הייחודי של שרת ה-VPS.
בקשה
curl https://hostey.co.il/api/v1/vps/3f2c9a4e-8b1d-4c6f-9e2a-7d5b1c0e4a91 \
  -H "Authorization: Bearer hst_your_api_key"
תגובה: 200 OK
{
  "id": "3f2c9a4e-8b1d-4c6f-9e2a-7d5b1c0e4a91",
  "label": "vps-basic-42",
  "provider": "OVH",
  "ovhServiceName": "vps-12345678.vps.ovh.net",
  "ipv4": "198.51.100.42",
  "ipv6": "2001:db8::42",
  "region": "EU West (France)",
  "status": "running",
  "os": "Ubuntu 24.04 LTS",
  "notes": "Production web server",
  "createdAt": "2025-06-15T10:30:00.000Z",
  "updatedAt": "2026-03-20T12:00:00.000Z"
}

ניטור

צפייה במוניטורים של זמינות ותוצאות בדיקות עבור השירותים.

GET/api/v1/monitors

מחזיר רשימת כל מוניטורי הזמינות המוגדרים בחשבון.

שדות תגובה

פרמטרסוגתיאור
idstringמזהה ייחודי של המוניטור.
namestringהשם המוצג של המוניטור.
typestringHTTP, HTTPS, PORT, DNS או PING.
targetstringהכתובת, שם השרת או ה-IP שמנוטרים.
statusstringUP, DOWN, DEGRADED, PAUSED או PENDING.
uptimePercentnumberאחוז הזמינות (30 הימים האחרונים).
lastCheckAtstringמועד הבדיקה האחרונה, בפורמט ISO 8601.
lastResponseTimeintegerזמן התגובה בבדיקה האחרונה (מילישניות).
בקשה
curl https://hostey.co.il/api/v1/monitors \
  -H "Authorization: Bearer hst_your_api_key"
תגובה: 200 OK
{
  "data": [
    {
      "id": "c7d2e9f4-0a1b-4c3d-8e5f-6a7b8c9d0e1f",
      "name": "Production Website",
      "type": "HTTPS",
      "target": "https://example.co.il",
      "port": null,
      "interval": 60,
      "status": "UP",
      "isActive": true,
      "lastCheckAt": "2026-03-21T12:00:00.000Z",
      "lastResponseTime": 245,
      "lastStatusCode": 200,
      "uptimePercent": 99.98,
      "createdAt": "2025-12-01T08:00:00.000Z"
    }
  ],
  "total": 2,
  "page": 1,
  "limit": 50,
  "totalPages": 1
}
GET/api/v1/monitors/:id

מחזיר מידע מפורט על מוניטור, כולל תוצאות בדיקות אחרונות.

פרמטרים בנתיב

פרמטרסוגתיאור
idחובהstringהמזהה הייחודי של המוניטור.

שדות תגובה

פרמטרסוגתיאור
statusstringUP, DOWN, DEGRADED, PAUSED או PENDING.
recentChecksarray50 הבדיקות האחרונות, מהחדשה לישנה. הסטטוס של כל בדיקה באותיות קטנות: up, down או degraded.
recentIncidentsarray10 התקלות האחרונות: { id, startedAt, resolvedAt, duration, cause }.
בקשה
curl https://hostey.co.il/api/v1/monitors/c7d2e9f4-0a1b-4c3d-8e5f-6a7b8c9d0e1f \
  -H "Authorization: Bearer hst_your_api_key"
תגובה: 200 OK
{
  "id": "c7d2e9f4-0a1b-4c3d-8e5f-6a7b8c9d0e1f",
  "name": "Production Website",
  "type": "HTTPS",
  "target": "https://example.co.il",
  "port": null,
  "interval": 60,
  "timeout": 30,
  "expectedStatus": 200,
  "status": "UP",
  "isActive": true,
  "lastCheckAt": "2026-03-21T12:00:00.000Z",
  "lastResponseTime": 245,
  "lastStatusCode": 200,
  "lastError": null,
  "uptimePercent": 99.98,
  "currentStreak": 1440,
  "createdAt": "2025-12-01T08:00:00.000Z",
  "recentChecks": [
    {
      "id": "d8e3f0a5-1b2c-4d4e-9f6a-7b8c9d0e1f2a",
      "status": "up",
      "responseTime": 230,
      "statusCode": 200,
      "error": null,
      "checkedAt": "2026-03-21T12:00:00.000Z"
    }
  ],
  "recentIncidents": []
}

DNS

שליפת תצורת אזור ה-DNS עבור דומיינים המשויכים לחשבונות האירוח.

GET/api/v1/dns/:domain

מחזיר את תצורת אזור ה-DNS ב-Cloudflare המקושרת לדומיין המבוקש.

פרמטרים בנתיב

פרמטרסוגתיאור
domainחובהstringשם הדומיין.

שדות תגובה

פרמטרסוגתיאור
domainstringהדומיין המבוקש.
hostingAccountIdstringמזהה חשבון האחסון שהדומיין שייך לו.
primaryDomainstringהדומיין הראשי של חשבון האחסון.
dnsConfigsarrayהגדרות אזור ה-DNS ב-Cloudflare: { id, domain, zoneId }.
בקשה
curl https://hostey.co.il/api/v1/dns/example.co.il \
  -H "Authorization: Bearer hst_your_api_key"
תגובה: 200 OK
{
  "domain": "example.co.il",
  "hostingAccountId": "f1e2d3c4-b5a6-4978-8a9b-0c1d2e3f4a5b",
  "primaryDomain": "example.co.il",
  "dnsConfigs": [
    {
      "id": "a2b3c4d5-e6f7-4819-9a0b-1c2d3e4f5a6b",
      "domain": "example.co.il",
      "zoneId": "0123456789abcdef0123456789abcdef"
    }
  ]
}

פעולות שירות

POST/api/v1/services/:id/cancel

בקשת ביטול שירות. השירות יסומן לביטול בסוף תקופת החיוב הנוכחית.

פרמטרים בנתיב

פרמטרסוגתיאור
idחובהstringהמזהה הייחודי של השירות.

גוף הבקשה

פרמטרסוגתיאור
reasonstringסיבת הביטול (אופציונלי).
בקשה
curl -X POST https://hostey.co.il/api/v1/services/3f2c9a4e-8b1d-4c6f-9e2a-7d5b1c0e4a91/cancel \
  -H "Authorization: Bearer hst_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "reason": "Migrating to a different plan"
  }'
תגובה: 200 OK
{
  "success": true,
  "serviceId": "3f2c9a4e-8b1d-4c6f-9e2a-7d5b1c0e4a91",
  "orderId": "b3c4d5e6-f7a8-4b9c-8d0e-2f3a4b5c6d7e",
  "status": "ACTIVE",
  "terminatedAt": "2026-04-15T00:00:00.000Z",
  "message": "Service scheduled for cancellation at end of billing period."
}
POST/api/v1/services/:id/renew

חידוש ידני דרך ה-API עדיין אינו זמין: נקודת הקצה מחזירה כרגע 501. החידוש מתבצע אוטומטית בתאריך החיוב, או ידנית דרך אזור הלקוח.

פרמטרים בנתיב

פרמטרסוגתיאור
idחובהstringהמזהה הייחודי של השירות.
בקשה
curl -X POST https://hostey.co.il/api/v1/services/3f2c9a4e-8b1d-4c6f-9e2a-7d5b1c0e4a91/renew \
  -H "Authorization: Bearer hst_your_api_key"
תגובה: 501 Not Implemented
{
  "error": "Manual renewal via API is not yet available...",
  "code": "NOT_IMPLEMENTED"
}

הודעות בפנייה

GET/api/v1/tickets/:id/messages

מחזיר את כל ההודעות הציבוריות בפנייה, ממוינות לפי תאריך יצירה.

פרמטרים בנתיב

פרמטרסוגתיאור
idחובהstringהמזהה הייחודי של הפנייה.

שדות תגובה

פרמטרסוגתיאור
idstringמזהה ייחודי של ההודעה.
messagestringתוכן ההודעה.
authorstringשם כותב ההודעה ("System" בהודעה שהמערכת יצרה).
authorRolestringCLIENT, PARTNER, ADMIN או SYSTEM.
createdAtstringחותמת זמן בפורמט ISO 8601.
בקשה
curl https://hostey.co.il/api/v1/tickets/5d8e2f1a-6b3c-4e7d-9a1f-2c4b6e8d0f13/messages \
  -H "Authorization: Bearer hst_your_api_key"
תגובה: 200 OK
{
  "data": [
    {
      "id": "0f6b3d9e-2a4c-4b8e-9d1f-3e5a7c9b1d24",
      "message": "I am unable to connect to my VPS via SSH.",
      "author": "Yossi Cohen",
      "authorRole": "CLIENT",
      "createdAt": "2026-03-18T08:30:00.000Z"
    },
    {
      "id": "1a7c4e0f-3b5d-4c9f-8e2a-4f6b8d0c2e35",
      "message": "We identified a firewall rule blocking port 22.",
      "author": "Support Team",
      "authorRole": "ADMIN",
      "createdAt": "2026-03-19T16:00:00.000Z"
    }
  ]
}
POST/api/v1/tickets/:id/messages

הוספת הודעה חדשה לפנייה קיימת. פנייה בסטטוס RESOLVED או WAITING תיפתח מחדש ל-OPEN. לא ניתן להוסיף הודעה לפנייה סגורה (CLOSED), והתשובה היא 400.

פרמטרים בנתיב

פרמטרסוגתיאור
idחובהstringהמזהה הייחודי של הפנייה.

גוף הבקשה

פרמטרסוגתיאור
messageחובהstringתוכן ההודעה, 1 עד 10,000 תווים.
בקשה
curl -X POST https://hostey.co.il/api/v1/tickets/5d8e2f1a-6b3c-4e7d-9a1f-2c4b6e8d0f13/messages \
  -H "Authorization: Bearer hst_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "message": "Thank you, the issue is resolved now."
  }'
תגובה: 201 Created
{
  "id": "2b8d5f1a-4c6e-4dab-9f3b-5a7c9e1d3f46",
  "message": "Thank you, the issue is resolved now.",
  "createdAt": "2026-03-21T10:30:00.000Z"
}

API ציבורי (Public API v1)

ממשק API חיצוני ללקוחות עם אימות באמצעות מפתח API. מאפשר גישה לשירותים, פניות וחשבון.

דוגמאות קוד

דוגמאות מוכנות להעתקה בשפות פופולריות. יש להחליף את hst_your_api_key במפתח האמיתי.

cURL

רשימת כל השירותים
curl -s \
  -H "Authorization: Bearer hst_your_api_key" \
  https://hostey.co.il/api/v1/services
פרטי החשבון
curl -s \
  -H "Authorization: Bearer hst_your_api_key" \
  https://hostey.co.il/api/v1/account
פתיחת פניית תמיכה
curl -s -X POST \
  -H "Authorization: Bearer hst_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "subject": "Disk space alert on VPS",
    "message": "My VPS is showing 95% disk usage.",
    "priority": "HIGH"
  }' \
  https://hostey.co.il/api/v1/tickets
שירות אחד לפי מזהה
curl -s \
  -H "Authorization: Bearer hst_your_api_key" \
  https://hostey.co.il/api/v1/services/3f2c9a4e-8b1d-4c6f-9e2a-7d5b1c0e4a91

JavaScript / Node.js

hostey-client.js
const API_KEY = process.env.HOSTEY_API_KEY;
const BASE = "https://hostey.co.il/api/v1";

async function hostey(path, options = {}) {
  const res = await fetch(`${BASE}${path}`, {
    ...options,
    headers: {
      "Authorization": `Bearer ${API_KEY}`,
      "Content-Type": "application/json",
      ...options.headers,
    },
  });

  if (!res.ok) {
    const body = await res.json().catch(() => ({}));
    throw new Error(body.error || `HTTP ${res.status}`);
  }

  return res.json();
}

// List all services
const services = await hostey("/services");
console.log(`You have ${services.data.length} services`);

// Get account info
const account = await hostey("/account");
console.log(`Account: ${account.name}`);

// Create a ticket
const ticket = await hostey("/tickets", {
  method: "POST",
  body: JSON.stringify({
    subject: "API integration test",
    message: "This ticket was created via the Hostey API.",
    priority: "LOW",
  }),
});
console.log(`Ticket #${ticket.number} created`);

Python

hostey_client.py
import os
import requests

API_KEY = os.environ["HOSTEY_API_KEY"]
BASE = "https://hostey.co.il/api/v1"

session = requests.Session()
session.headers.update({
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json",
})


def hostey_get(path):
    r = session.get(f"{BASE}{path}")
    r.raise_for_status()
    return r.json()


def hostey_post(path, data):
    r = session.post(f"{BASE}{path}", json=data)
    r.raise_for_status()
    return r.json()


# List all services
services = hostey_get("/services")
for svc in services["data"]:
    print(f"{svc['productName']} - {svc['status']}")

# Get account info
account = hostey_get("/account")
print(f"Account: {account['name']}")

# Create a ticket
ticket = hostey_post("/tickets", {
    "subject": "Disk space alert",
    "message": "My VPS is showing 95% disk usage.",
    "priority": "HIGH",
})
print(f"Created ticket #{ticket['number']}")

ספריות ו-SDK

עדיין אין SDK רשמי.

אפשר לעבוד מכל שפה עם HTTP רגיל: שולחים JSON, מקבלים JSON, ומעבירים את המפתח בכותרת Authorization. דוגמאות הקוד שלמעלה עובדות כמו שהן.

יומן שינויים

v1.1אוקטובר 2026

קבצים מצורפים וקודי שגיאה

  • המשאבים: חשבון, שירותים (כולל ביטול), פניות (עם הודעות וקבצים מצורפים), חשבוניות (עם ה-PDF), תשלומים, VPS, אחסון, ניטור, DNS והזמנות
  • חדש: הורדת קובץ מצורף לפנייה עם מפתח ה-API, מה-url שברשימת הקבצים
  • חדש: קוד קבוע בכל שגיאה, וטבלה של כל הקודים
  • נושא פנייה עד 200 תווים והודעה עד 10,000; פתיחה, תגובה וביטול מוגבלים ל-5 בדקה לכל חשבון
  • גוף בקשה שאינו JSON מקבל 400 עם הקוד INVALID_JSON במקום 500
v1.0מרץ 2026

גרסה ראשונה

  • נקודת קצה חשבון: שליפת פרופיל וספירות מצטברות
  • נקודות קצה שירותים: רשימת כל השירותים ושליפת פרטים לפי ID
  • נקודות קצה פניות: רשימה, יצירה וצפייה בפניות עם הודעות
  • אימות באמצעות מפתח API עם Bearer tokens
  • הגבלת קצב ל-100 בקשות לדקה

להרשמה ל- הבלוג של Hostey לקבלת עדכונים על שינויים חדשים ב-API.

צריכים עזרה עם האינטגרציה? יצירת קשר עם צוות התמיכה או פתיחת פנייה דרך פורטל הלקוחות.