תיעוד
התחלה

איך זה עובד

Markdown

מה קורה לבקשה בין התוכנה שלכם למודל.

המדריך המלא

אתם שולחים בקשה ל-Ailoot API כפי שהייתם שולחים אותה ישירות ל-OpenAI, ל-Anthropic או ל-Google. Ailoot בודק את המפתח והיתרה, מעביר את הבקשה למודל, מחזיר תשובה באותו פורמט ומחייב לפי השימוש בפועל.

01בקשההלקוח שלכם שולח בקשה ל-api.ailoot.ai עם מפתח sk-…
02בדיקה ורזרבההמפתח, המגבלות והיתרה. סכום נשמר כרזרבה עד לקבלת התשובה.
03מודלהמודל עונה, והתשובה מוחזרת בפורמט שלכם.
04חיובחיוב יחיד לפי הטוקנים בפועל; יתרת הרזרבה משתחררת.

מפתח אחד — שלושה פורמטים

הפורמט נקבע לפי נתיב הבקשה ולא לפי המודל. אפשר לקרוא לאותו מודל Claude דרך OpenAI Chat, OpenAI Responses או Anthropic Messages — התשובה תגיע בפורמט של הנתיב שאליו פניתם.

פורמטנתיבמי משתמש בו
OpenAI Chat Completions/v1/chat/completionsOpenAI SDK, רוב הצ'אטים והעורכים, n8n, LangChain
OpenAI Responses/v1/responsesCodex CLI, OpenAI Agents SDK, גרסאות חדשות של SDK
Anthropic Messages/v1/messagesClaude Code, Anthropic SDK, Zed, Cline
Gemini/v1beta/models/{model}:generateContentGemini CLI, Google GenAI SDK

כספים: רזרבה וחיוב יחיד

  • לפני שליחת בקשת טקסט חדשה, Ailoot שומר כרזרבה את אומדן עלות הקלט והתשובה הטיפוסית, תוך התחשבות במגבלה (max_tokens) ובתנאי המודל המסוים. אם הרזרבה חורגת מהיתרה הפנויה או ממגבלת המפתח, אפשר להקטין את המגבלה שנשלחת רק במודל ובמתודה שמקיימים אותה בפועל, ולא מתחת ל-256 טוקנים ולא מתחת למינימום הפלט שנקבע. עבור תמונות, וידאו ושמע בפלט נשמרת כרזרבה מלוא עלות התוצאה.
  • לאחר התשובה — חיוב יחיד לפי השימוש בפועל. הרזרבה שלא נוצלה משתחררת ליתרה מיד.
  • אם התשובה יקרה מהרזרבה, ההפרש נלקח מהיתרה הפנויה. היתרה לעולם אינה הופכת לשלילית.
  • אם אין די כסף אפילו לרזרבה המינימלית, הבקשה אינה נשלחת: מתקבלת שגיאה ברורה 402 ולא מחויב דבר.
  • שגיאה שלא התקבלה אחריה תוצאה אינה מחויבת.

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

שגיאות עם Request ID

כל תשובה מקבלת מזהה בקשה: בכותרת X-Request-ID ובהודעת השגיאה. השגיאות מגיעות ב-JSON של הפורמט שאליו פניתם, ולכן ערכות SDK מזהות אותן נכון. אם משהו השתבש, שלחו Request ID ל- תמיכה — כך נוכל למצוא את הבקשה בתוך דקה.

401 Unauthorized
{
  "code": "API_KEY_REQUIRED",
  "error": {
    "code": "invalid_api_key",
    "message": "No API key was sent with the request. Nothing was charged. Please check that the full key is sent in the Authorization header as \"Bearer <key>\". Request ID: 3b28d3de-5b02-4d07-9f3c-4b9a7d0e68d6.",
    "param": null,
    "reason": "invalid_api_key",
    "request_id": "3b28d3de-5b02-4d07-9f3c-4b9a7d0e68d6",
    "type": "invalid_request_error"
  },
  "message": "No API key was sent with the request. Nothing was charged. …"
}

זרמים וזמני המתנה

תשובות בזרם (stream: true) מגיעות כ-Server-Sent Events. Ailoot מחזיר את תשובת הטקסט בתשלום לאחר חישוב העלות. לכן עם stream: true הפורמט נשאר זרם (SSE), אך הטקסט מגיע כבלוק אחד כשהמודל מסיים, ולא מילה אחר מילה. אם הכנת התשובה נמשכת יותר מכ-15 שניות, בזרמים של Chat Completions, Responses ו-Messages מגיעות תחילה שורות השירות : ping (בערך פעם ב-10 שניות), ולאחר מכן השורה : ailoot-charged-usd … עם סכום החיוב והנתונים עצמם. ערכות SDK מדלגות על שורות כאלה.

פורמט Gemini אינו כולל שורות שירות: התשובה :streamGenerateContent מגיעה בשלמותה לאחר החישוב. למודלי הסקה הגדירו זמן המתנה ללקוח עם מרווח מספיק: כמה דקות הן זמן רגיל.

כותרות התשובה

X-Request-ID מגיע בכל תשובה. Ailoot מוסיף את יתר הכותרות לתשובות טקסט שחויבו:

כותרתמה היא מכילה
X-Request-IDמזהה הבקשה — התמיכה מבקשת אותו
X-Ailoot-Charged-USDהסכום שחויב עבור הבקשה הזאת, בדולרים
X-Ailoot-Output-Tokensמספר טוקני התשובה שחויבו
X-Ailoot-Max-Tokens-Cappedמגבלת התשובה שאליה היא הוקטנה כי היתרה לא הספיקה לרזרבה המלאה
X-Ailoot-Notice-Code, X-Ailoot-Noticeהסבר אם התשובה נעצרה במגבלת האורך

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

מטמון פרומפטים

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

נשארו שאלות? שלחו Request ID ותיאור — נעזור לברר.פנייה לתמיכה