Hitelesítés
Minden kérés egy fejlécben viszi az API-kulcsodat. Fiókonként egy kulcs működik minden végponton és minden modellen, kétféle fejlécformában.
Fejléc · OpenAI SDK-k
Authorization: Bearer YOUR_API_KEY Fejléc · Anthropic SDK-k
x-api-key: YOUR_API_KEY Elfogadott fejlécek
Mindkét fejlécet olvassa minden /v1 végpont, bármelyik formátumot beszéli is. Az egyiket küldd.
| Fejléc | Leírás |
|---|---|
Authorization: Bearer <key> | Ezt ellenőrzi először. A Bearer szót nagy B-vel és egy szóközzel írd a kulcs elé. Az OpenAI SDK-k ezt a fejlécet küldik. |
x-api-key: <key> | Akkor olvassa a rendszer, ha a kérésben nincs Authorization: Bearer fejléc. Az Anthropic SDK-k ezt a fejlécet küldik. |
OpenAI SDK-val add meg a kulcsot és az alap URL-t; az SDK az Authorization: Bearer fejlécet küldi.
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.shannon-ai.com/v1"
)
response = client.chat.completions.create(
model="shannon-3",
messages=[
{"role": "user", "content": "Hello, Shannon!"}
]
)
print(response.choices[0].message.content) import OpenAI from 'openai';
const client = new OpenAI({
apiKey: 'YOUR_API_KEY',
baseURL: 'https://api.shannon-ai.com/v1'
});
const response = await client.chat.completions.create({
model: 'shannon-3',
messages: [
{ role: 'user', content: 'Hello, Shannon!' }
]
});
console.log(response.choices[0].message.content); curl -X POST "https://api.shannon-ai.com/v1/chat/completions" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "shannon-3",
"messages": [
{"role": "user", "content": "Hello, Shannon!"}
]
}' Anthropic SDK-val add meg a kulcsot és az alap URL-t /v1 nélkül; az SDK az x-api-key fejlécet küldi.
import anthropic
client = anthropic.Anthropic(
api_key="YOUR_API_KEY",
base_url="https://api.shannon-ai.com"
)
message = client.messages.create(
model="shannon-3",
max_tokens=1024,
messages=[
{"role": "user", "content": "Hello, Shannon!"}
]
)
print("".join(block.text for block in message.content if block.type == "text")) import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic({
apiKey: 'YOUR_API_KEY',
baseURL: 'https://api.shannon-ai.com'
});
const message = await client.messages.create({
model: 'shannon-3',
max_tokens: 1024,
messages: [
{ role: 'user', content: 'Hello, Shannon!' }
]
});
console.log(message.content.filter((block) => block.type === 'text').map((block) => block.text).join('')); curl -X POST "https://api.shannon-ai.com/v1/messages" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "shannon-3",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Hello, Shannon!"}
]
}' Mely végpontokhoz kell kulcs
| Végpont | Kulcs |
|---|---|
POST /v1/chat/completions | Kötelező |
POST /v1/messages | Kötelező |
POST /v1/responses | Kötelező |
POST /v1/tokenize | Kötelező |
POST /v1/messages/count_tokens | Kötelező |
GET /v1/models | Nem kell |
A kulcsod
- A kulcs az
sk-előtag, majd 43 karakter azA–Z,a–z,0–9,-és_készletből: összesen 46 karakter. - Minden fiókhoz pontosan egy kulcs tartozik. Akkor jön létre, amikor először megnyitod a Keys & usage oldalt.
- A kulcs teljes hozzáférést ad a fiókod API-jához: minden végponthoz, minden modellhez és a teljes egyenleghez.
- A kulcsnak nincs lejárati ideje. Addig működik, amíg le nem cseréled vagy vissza nem vonod.
Csere és visszavonás
A kulcsot a Keys & usage oldalon cseréled le és vonod vissza. Keys & usage
| Művelet | Mi történik |
|---|---|
| Csere | Új kulcs készül, a régi nem működik tovább. Az új kulcs azonnal működik. |
| Visszavonás | A kulcs nem működik tovább, és nem kapsz újat. Cserélj, hogy újra működő kulcsod legyen. |
- Mindkettő azonnal életbe lép: a régi kulccsal küldött következő kérésre
401a válasz. Számolj 60 másodperc felső korláttal, mire a régi kulcsot mindenütt elutasítják. - A fiók minden kliense ugyanazt a kulcsot használja, ezért a csere mindegyiket érinti. A csere után azonnal told be az új kulcsot a klienseidbe.
- Az egyenleg, a használat és a flood protection a fiókhoz tartozik, nem a kulcshoz. Az új kulcs ugyanazzal az egyenleggel és az aktuális perc ugyanazon kérésszámával folytatja.
Hibák
Minden hitelesítési hiba státusza 401, típusa authentication_error. Az üzenet különbözteti meg az eseteket.
| Státusz | Típus | Üzenet | Mikor |
|---|---|---|---|
401 | authentication_error | Missing authentication | A kérésben nincs sem Authorization: Bearer fejléc, sem sk- előtaggal kezdődő x-api-key fejléc. Ez a válasz a kisbetűs bearer és a Bearer nélküli Authorization értékre is. |
401 | authentication_error | Invalid API key | A kulcs nem egy fiók jelenlegi kulcsa: elírták, vissza lett vonva, vagy csere váltotta le. |
{
"error": {
"type": "authentication_error",
"message": "Invalid API key",
"code": "invalid_api_key",
"param": null
}
} {
"type": "error",
"error": {
"type": "authentication_error",
"message": "Invalid API key"
}
} - A
/v1/messageskivételével minden útvonalon azerrorobjektum tartalmazza még acode: "invalid_api_key"mezőt is, hiányzó kulcs esetén is, valamint aparam: nullmezőt. - A kulcsot a rendszer a törzs beolvasása előtt ellenőrzi. Érvényes kulcs nélküli kérés akkor is
401-et kap, ha a törzse érvénytelen vagy túl nagy. - Az
sk-előtaggal nem kezdődőAuthorization: Bearerértéket a rendszer nem kezeli API-kulcsként.401-et kap, azzal az üzenettel, hogy a token érvénytelen vagy lejárt.
Böngészők és CORS
- Az API csak rögzített originlistára válaszol a cross-origin böngészőkérésekre. Egy másik origin oldalán futó JavaScript nem olvashatja a
/v1válaszokat. - Az API-t a szerveredről hívd, és az oldalad a szerveroddal beszéljen. Így a kulcs a forráskódban sem jelenik meg.
- A szerveroldali kódot és a parancssori eszközöket ez nem érinti: ezt a szabályt csak a böngészők alkalmazzák.
- A shannon-ai.com-on történt bejelentkezés nem hitelesíti a
/v1kéréseket. A cookie-kat ott nem olvassa a rendszer; a kulcs az egyetlen hitelesítő adat. - Engedélyezett origin esetén a böngésző küldhet
content-type,authorization,x-api-key,anthropic-version,anthropic-beta,openai-betaésx-request-idfejlécet, és olvashatja azx-request-idválaszfejlécet.
A kulcs biztonságban tartása
- Tartsd a kulcsot szerveren. Ne tedd weboldalra, mobilalkalmazásba vagy nyilvános repositoryba: aki birtokolja, elkölthet a teljes egyenlegedből.
- A kulcsot környezeti változóból vagy titokkezelőből töltsd be, ne írd a kódba.
- Ha a kulcs kiszivároghatott, cseréld le a Keys & usage oldalon. A régi kulcs azonnal megszűnik működni.
- Kiszivárgás után nézd meg a kérések listáját a Keys & usage oldalon. Megmutatja a kulcs minden kérését az elmúlt 30 napból.