# אימות

> מפתח ה-API נשלח כ-Bearer token או בכותרת x-api-key. מפתחות שייכים לארגון ויכולים לכלול תקציבים ומגבלות מודלים.


כל בקשה צריכה מפתח API. אפשר לשלוח אותו באחת משתי כותרות:

| כותרת | פורמט |
|---|---|
| `Authorization` | `Bearer nh_live_...` |
| `x-api-key` | `nh_live_...` (מה שה-SDK של Anthropic שולח) |

```bash test
curl https://api.notholy.com/v1/models -H "x-api-key: $NOTHOLY_API_KEY"
```

## מפתחות

מפתחות נוצרים בקונסולה, בעמוד **מפתחות API**. כל מפתח שייך לארגון ולסביבת עבודה. הסוד מוצג פעם אחת ונשמר רק כ-hash.

אפשר להגדיר למפתח:

- תקציב כולל ותקציב יומי בדולרים. כשמה שנשאר מהתקציב לא מכסה בקשה, מגבלת הפלט שלה מצטמצמת בהתאם, ומתחת ל-16 טוקנים הבקשה מקבלת `402 key_budget_exceeded`.
- רשימת מודלים מותרים. בקשה למודל אחר מקבלת `403 key_not_allowed`.
- תאריך תפוגה.
- רשימת כתובות IP או טווחי CIDR מורשים. כתובות אחרות מקבלות `403 key_not_allowed`.

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

## מפתחות בקוד

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

> [!WARNING]
> אין לשים מפתח בקוד צד לקוח. את ה-API קוראים מהשרת או מהטרמינל, והמפתחות נשמרים במשתני סביבה או במאגר סודות.

```python test
import os
from openai import OpenAI

client = OpenAI(base_url="https://api.notholy.com/v1", api_key=os.environ["NOTHOLY_API_KEY"])

print([m.id for m in client.models.list()])
```

## שגיאות

| סטטוס | קוד | משמעות |
|---|---|---|
| 401 | `invalid_api_key` | מפתח חסר, שגוי, מבוטל או שפג תוקפו |
| 403 | `key_not_allowed` | המפתח לא מורשה להשתמש במודל הזה, או שאי אפשר להשתמש בו מכתובת ה-IP הזו |
| 403 | `account_suspended` | הארגון מושעה. יש לפנות לתמיכה |
| 403 | `consent_required` | ההסכמה לעיבוד במדינות שותפות נדחתה או נמשכה בחשבון שיצר את המפתח. אפשר לאשר אותה בקונסולה |

## הבא

- [מודלים](/he/getting-started/models)
- [ארגונים ותפקידים](/he/account/organizations)
