Overenie
Každý request nesie váš API kľúč v hlavičke. Jeden kľúč na účet funguje na každom endpointe a každom modeli, v jednej z dvoch foriem hlavičky.
Hlavička · SDK od OpenAI
Authorization: Bearer YOUR_API_KEY Hlavička · SDK od Anthropic
x-api-key: YOUR_API_KEY Prijímané hlavičky
Obe hlavičky sa čítajú na každom endpointe /v1, nech endpoint hovorí akýmkoľvek formátom. Pošlite jednu z nich.
| Hlavička | Popis |
|---|---|
Authorization: Bearer <key> | Kontroluje sa ako prvá. Napíšte Bearer s veľkým B a jednou medzerou pred kľúčom. Túto hlavičku posielajú SDK od OpenAI. |
x-api-key: <key> | Číta sa, keď request nemá hlavičku Authorization: Bearer. Túto hlavičku posielajú SDK od Anthropic. |
S SDK od OpenAI nastavte kľúč a základnú URL; SDK pošle Authorization: Bearer.
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!"}
]
}' S SDK od Anthropic nastavte kľúč a základnú URL bez /v1; SDK pošle x-api-key.
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!"}
]
}' Ktoré endpointy potrebujú kľúč
| Endpoint | Kľúč |
|---|---|
POST /v1/chat/completions | Povinný |
POST /v1/messages | Povinný |
POST /v1/responses | Povinný |
POST /v1/tokenize | Povinný |
POST /v1/messages/count_tokens | Povinný |
GET /v1/models | Nie je potrebný |
Váš kľúč
- Kľúč je
sk-nasledované 43 znakmi zA–Z,a–z,0–9,-a_: spolu 46 znakov. - Každý účet má presne jeden kľúč. Vytvorí sa pri prvom otvorení stránky Kľúče a využitie.
- Kľúč dáva plný prístup k API pre váš účet: každý endpoint, každý model a celý zostatok.
- Kľúč nemá dátum vypršania. Funguje, kým ho neobnovíte alebo nezrušíte jeho platnosť.
Obnovenie a zrušenie platnosti
Kľúč obnovíte a zrušíte jeho platnosť na stránke Kľúče a využitie. Kľúče a využitie
| Akcia | Čo sa stane |
|---|---|
| Obnoviť | Vydá sa nový kľúč a starý prestane fungovať. Nový kľúč funguje okamžite. |
| Zrušiť platnosť | Kľúč prestane fungovať a nevydá sa nový. Obnovením získate opäť funkčný kľúč. |
- Obe akcie platia okamžite: na ďalší request so starým kľúčom sa odpovie
401. Za hornú hranicu, kým sa starý kľúč odmietne všade, považujte 60 sekúnd. - Všetci klienti účtu používajú rovnaký kľúč, takže obnovenie zasiahne všetkých. Nový kľúč vložte do svojich klientov hneď po obnovení.
- Zostatok, využitie a ochrana pred zahltením patria účtu, nie kľúču. Nový kľúč pokračuje s rovnakým zostatkom a rovnakým počtom requestov za aktuálnu minútu.
Chyby
Každé zlyhanie overenia má stav 401 a typ authentication_error. Prípady rozlíši správa.
| Stav | Typ | Správa | Kedy |
|---|---|---|---|
401 | authentication_error | Missing authentication | Request nemá ani hlavičku Authorization: Bearer, ani hlavičku x-api-key, ktorá začína sk-. Takto sa odpovedá aj na bearer malými písmenami a na hodnotu Authorization bez Bearer. |
401 | authentication_error | Invalid API key | Kľúč nie je aktuálnym kľúčom nijakého účtu: je preklepnutý, jeho platnosť bola zrušená alebo ho nahradilo obnovenie. |
{
"error": {
"type": "authentication_error",
"message": "Invalid API key",
"code": "invalid_api_key",
"param": null
}
} {
"type": "error",
"error": {
"type": "authentication_error",
"message": "Invalid API key"
}
} - Na každej ceste okrem
/v1/messagesobsahuje objekterrorajcode: "invalid_api_key", aj pri chýbajúcom kľúči, aparam: null. - Kľúč sa kontroluje pred čítaním tela. Request bez platného kľúča dostane
401, aj keď je jeho telo neplatné alebo príliš veľké. - Hodnota
Authorization: Bearer, ktorá nezačínask-, sa nepovažuje za API kľúč. Dostane401so správou, že token je neplatný alebo vypršal.
Prehliadače a CORS
- API odpovedá na cross-origin requesty prehliadača iba pre pevný zoznam originov. JavaScript na stránke iného originu nemôže čítať odpovede
/v1. - Volajte API zo svojho servera a nechajte stránku komunikovať s vaším serverom. Kľúč tak zostane aj mimo zdrojového kódu stránky.
- Kód na strane servera a nástroje príkazového riadka sa to netýka: toto pravidlo uplatňujú iba prehliadače.
- Prihlásenie na shannon-ai.com neoveruje requesty
/v1. Cookies sa tam nečítajú; kľúč je jediný prístupový údaj. - Pre povolený origin môže prehliadač posielať
content-type,authorization,x-api-key,anthropic-version,anthropic-beta,openai-betaax-request-ida môže čítať hlavičku odpovedex-request-id.
Ako kľúč udržať v bezpečí
- Kľúč držte na serveri. Nedávajte ho do webových stránok, mobilných aplikácií ani verejných repozitárov: kto ho má, môže minúť celý váš zostatok.
- Kľúč načítajte z premennej prostredia alebo zo zásobníka tajomstiev namiesto jeho zápisu do kódu.
- Ak mohol kľúč uniknúť, obnovte ho v Kľúče a využitie. Starý kľúč okamžite prestane fungovať.
- Po úniku si prečítajte zoznam requestov v Kľúče a využitie. Ukazuje každý request, ktorý kľúč vykonal za posledných 30 dní.