Ověření
Každý požadavek nese váš API klíč v hlavičce. Jeden klíč na účet funguje na každém endpointu a každém modelu, ve dvou možných tvarech hlavičky.
Hlavička · OpenAI SDK
Authorization: Bearer YOUR_API_KEY Hlavička · Anthropic SDK
x-api-key: YOUR_API_KEY Přijímané hlavičky
Obě hlavičky se čtou na každém endpointu /v1, ať endpoint mluví kterýmkoli formátem. Pošlete jednu z nich.
| Hlavička | Popis |
|---|---|
Authorization: Bearer <key> | Kontroluje se jako první. Napište Bearer s velkým B a jednou mezerou před klíčem. Tuto hlavičku posílají OpenAI SDK. |
x-api-key: <key> | Čte se, když požadavek nemá hlavičku Authorization: Bearer. Tuto hlavičku posílají Anthropic SDK. |
U OpenAI SDK nastavte klíč 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!"}
]
}' U Anthropic SDK nastavte klíč 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!"}
]
}' Které endpointy potřebují klíč
| Endpoint | Klíč |
|---|---|
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 | Není třeba |
Váš klíč
- Klíč je
sk-následované 43 znaky zA–Z,a–z,0–9,-a_: celkem 46 znaků. - Každý účet má právě jeden klíč. Vytvoří se při prvním otevření stránky Klíče a využití.
- Klíč dává plný přístup k API za váš účet: ke každému endpointu, každému modelu a celému zůstatku.
- Klíč nemá datum vypršení. Funguje, dokud jej nerotujete nebo nezrušíte jeho platnost.
Rotace a zrušení platnosti
Klíč rotujete a rušíte jeho platnost na stránce Klíče a využití. Klíče a využití
| Akce | Co se stane |
|---|---|
| Rotovat | Vydá se nový klíč a starý přestane fungovat. Nový klíč funguje okamžitě. |
| Zrušit platnost | Klíč přestane fungovat a žádný nový se nevydá. Pro opětovné získání funkčního klíče proveďte rotaci. |
- Obojí se projeví okamžitě: na další požadavek se starým klíčem se odpoví
401. Za horní hranici, než bude starý klíč odmítán všude, považujte 60 sekund. - Všichni klienti účtu používají stejný klíč, takže rotace se dotkne všech. Nový klíč vložte do svých klientů hned po rotaci.
- Zůstatek, využití a ochrana proti zahlcení patří účtu, ne klíči. Nový klíč pokračuje se stejným zůstatkem a stejným počtem požadavků za aktuální minutu.
Chyby
Každé selhání ověření má stav 401 a typ authentication_error. Případy od sebe odliší zpráva.
| Stav | Typ | Zpráva | Kdy |
|---|---|---|---|
401 | authentication_error | Missing authentication | Požadavek nemá hlavičku Authorization: Bearer ani hlavičku x-api-key, která začíná na sk-. Stejná je i odpověď na bearer malými písmeny a na hodnotu Authorization bez Bearer. |
401 | authentication_error | Invalid API key | Klíč není aktuálním klíčem žádného účtu: je chybně napsaný, byla zrušena jeho platnost, nebo byl nahrazen rotací. |
{
"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ždé cestě kromě
/v1/messagesobsahuje objekterrortakécode: "invalid_api_key", i při chybějícím klíči, aparam: null. - Klíč se ověřuje dříve, než se přečte tělo. Požadavek bez platného klíče dostane
401, i když je jeho tělo neplatné nebo příliš velké. - Hodnota
Authorization: Bearer, která nezačíná nask-, se nepovažuje za API klíč. Dostane401se zprávou, že token je neplatný nebo vypršel.
Prohlížeče a CORS
- API odpovídá na cross-origin požadavky z prohlížeče pouze pro pevný seznam originů. JavaScript na stránce jiného originu nemůže číst odpovědi
/v1. - Volejte API ze svého serveru a nechte svou stránku komunikovat s vaším serverem. Klíč se tím také nedostane do zdrojového kódu stránky.
- Kód na straně serveru a nástroje příkazové řádky se to netýká: toto pravidlo uplatňují pouze prohlížeče.
- Přihlášení na shannon-ai.com neověřuje požadavky na
/v1. Cookies se tam nečtou; klíč je jediné ověřovací údaje. - Pro povolený origin smí prohlížeč posílat
content-type,authorization,x-api-key,anthropic-version,anthropic-beta,openai-betaax-request-ida smí číst hlavičku odpovědix-request-id.
Jak klíč udržet v bezpečí
- Klíč uchovávejte na serveru. Nevkládejte jej do webových stránek, mobilních aplikací ani veřejných repozitářů: kdo jej má, může utratit celý váš zůstatek.
- Načítejte klíč z proměnné prostředí nebo úložiště tajemství místo toho, abyste jej psali do kódu.
- Pokud klíč mohl uniknout, rotujte jej na stránce Klíče a využití. Starý klíč přestane fungovat okamžitě.
- Po úniku si prohlédněte seznam požadavků na stránce Klíče a využití. Ukazuje každý požadavek, který klíč provedl za posledních 30 dní.