Avtentikacija
Vsak zahtevek nosi vaš API ključ v glavi. En ključ na račun deluje na vsakem endpointu in z vsakim modelom, v eni od dveh oblik glave.
Glava · SDK-ji OpenAI
Authorization: Bearer YOUR_API_KEY Glava · SDK-ji Anthropic
x-api-key: YOUR_API_KEY Sprejete glave
Obe glavi se prebereta na vsakem endpointu /v1, ne glede na format, ki ga endpoint govori. Pošljite eno od njiju.
| Glava | Opis |
|---|---|
Authorization: Bearer <key> | Preveri se prva. Napišite Bearer z veliko začetnico B in enim presledkom pred ključem. To glavo pošiljajo SDK-ji OpenAI. |
x-api-key: <key> | Prebere se, kadar zahtevek nima glave Authorization: Bearer. To glavo pošiljajo SDK-ji Anthropic. |
Pri SDK-ju OpenAI nastavite ključ in osnovni URL; SDK pošlje 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!"}
]
}' Pri SDK-ju Anthropic nastavite ključ in osnovni URL brez /v1; SDK pošlje 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!"}
]
}' Kateri endpointi potrebujejo ključ
| Končni točka (Endpoint) | Ključ |
|---|---|
POST /v1/chat/completions | Obvezen |
POST /v1/messages | Obvezen |
POST /v1/responses | Obvezen |
POST /v1/tokenize | Obvezen |
POST /v1/messages/count_tokens | Obvezen |
GET /v1/models | Ni potreben |
Vaš ključ
- Ključ je
sk-, ki mu sledi 43 znakov izA–Z,a–z,0–9,-in_: skupaj 46 znakov. - Vsak račun ima natanko en ključ. Ustvari se, ko prvič odprete Ključi in poraba.
- Ključ daje poln dostop do API-ja za vaš račun: vsak endpoint, vsak model in celotno stanje.
- Ključ nima datuma poteka. Deluje, dokler ga ne zamenjate ali prekličete.
Menjava in preklic
Ključ zamenjate in prekličete na strani Ključi in poraba. Ključi in poraba
| Dejanje | Kaj se zgodi |
|---|---|
| Menjava | Izda se nov ključ, stari ključ preneha delovati. Novi ključ deluje takoj. |
| Preklic | Ključ preneha delovati in nov ključ se ne izda. Zamenjajte ga, da spet dobite delujoč ključ. |
- Oboje velja takoj: na naslednji zahtevek s starim ključem se odgovori s
401. Štejte 60 sekund kot zgornjo mejo, preden je stari ključ povsod zavrnjen. - Vsi odjemalci računa uporabljajo isti ključ, zato menjava doseže vse. Nov ključ vnesite v svoje odjemalce takoj po menjavi.
- Stanje, poraba in zaščita pred poplavo zahtevkov pripadajo računu, ne ključu. Nov ključ nadaljuje z istim stanjem in istim številom zahtevkov za trenutno minuto.
Napake
Vsaka napaka overitve ima status 401 in tip authentication_error. Sporočilo loči primere.
| Stanje | Vrsta | Sporočilo | Kdaj |
|---|---|---|---|
401 | authentication_error | Missing authentication | Zahtevek nima ne glave Authorization: Bearer ne glave x-api-key, ki se začne z sk-. To je tudi odgovor na bearer z malimi črkami in na vrednost Authorization brez Bearer. |
401 | authentication_error | Invalid API key | Ključ ni trenutni ključ nobenega računa: je napačno vpisan, preklican ali pa ga je nadomestila menjava. |
{
"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 vseh poteh razen
/v1/messagesobjekterrorvsebuje tudicode: "invalid_api_key", tudi pri manjkajočem ključu, terparam: null. - Ključ se preveri, preden se prebere telo. Zahtevek brez veljavnega ključa dobi
401, tudi če je njegovo telo neveljavno ali preveliko. - Vrednost
Authorization: Bearer, ki se ne začne zsk-, se ne obravnava kot API ključ. Dobi401s sporočilom, da je token neveljaven ali potekel.
Brskalniki in CORS
- API odgovarja na medizvorne zahtevke brskalnika samo za določen seznam izvorov. JavaScript na strani z drugega izvora ne more brati odgovorov
/v1. - API kličite s svojega strežnika, stran pa naj se pogovarja z vašim strežnikom. Tako ključ ostane tudi zunaj izvorne kode strani.
- Koda na strežniku in orodja ukazne vrstice niso prizadeta: to pravilo uveljavljajo samo brskalniki.
- Prijava na shannon-ai.com ne overi zahtevkov
/v1. Piškotki se tam ne berejo; ključ je edino poverilo. - Za dovoljen izvor lahko brskalnik pošlje
content-type,authorization,x-api-key,anthropic-version,anthropic-beta,openai-betainx-request-idter lahko prebere glavo odgovorax-request-id.
Varovanje ključa
- Ključ hranite na strežniku. Ne vstavljajte ga v spletne strani, mobilne aplikacije ali javna skladišča: kdor ga ima, lahko porabi vse vaše stanje.
- Ključ naložite iz spremenljivke okolja ali shrambe skrivnosti, namesto da ga zapišete v kodo.
- Če je ključ morda ušel, ga zamenjajte v Ključi in poraba. Stari ključ preneha delovati takoj.
- Po uhajanju preberite seznam zahtevkov v Ključi in poraba. Prikazuje vsak zahtevek, ki ga je ključ naredil v zadnjih 30 dneh.