Autentikacija
Svaki zahtjev nosi vaš API ključ u zaglavlju. Jedan ključ po računu radi na svakom endpointu i svakom modelu, u jednom od dva oblika zaglavlja.
Zaglavlje · OpenAI SDK-ovi
Authorization: Bearer YOUR_API_KEY Zaglavlje · Anthropic SDK-ovi
x-api-key: YOUR_API_KEY Prihvaćena zaglavlja
Oba zaglavlja čitaju se na svakom /v1 endpointu, bez obzira na to koji format endpoint govori. Pošaljite jedno od njih.
| Zaglavlje | Opis |
|---|---|
Authorization: Bearer <key> | Provjerava se prvo. Bearer napišite velikim početnim slovom B i s jednim razmakom prije ključa. OpenAI SDK-ovi šalju ovo zaglavlje. |
x-api-key: <key> | Čita se kada zahtjev nema zaglavlje Authorization: Bearer. Anthropic SDK-ovi šalju ovo zaglavlje. |
S OpenAI SDK-om postavite ključ i osnovni URL; SDK šalje 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 Anthropic SDK-om postavite ključ i osnovni URL bez /v1; SDK šalje 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!"}
]
}' Koji endpointi trebaju ključ
| Endpoint | Ključ |
|---|---|
POST /v1/chat/completions | Obavezan |
POST /v1/messages | Obavezan |
POST /v1/responses | Obavezan |
POST /v1/tokenize | Obavezan |
POST /v1/messages/count_tokens | Obavezan |
GET /v1/models | Nije potreban |
Vaš ključ
- Ključ je
sk-iza kojeg slijedi 43 znaka iz skupaA–Z,a–z,0–9,-i_: ukupno 46 znakova. - Svaki račun ima točno jedan ključ. Izrađuje se prvi put kada otvorite Ključevi i upotreba.
- Ključ daje potpun pristup API-ju za vaš račun: svaki endpoint, svaki model i cijelo stanje.
- Ključ nema datum isteka. Radi dok ga ne rotirate ili opozovete.
Rotacija i opoziv
Ključ rotirate i opozivate na stranici Ključevi i upotreba. Ključevi i upotreba
| Radnja | Što se događa |
|---|---|
| Rotacija | Izdaje se novi ključ, a stari prestaje raditi. Novi ključ radi odmah. |
| Opoziv | Ključ prestaje raditi i ne izdaje se novi. Rotirajte da biste ponovno dobili ključ koji radi. |
- Oboje djeluje odmah: sljedeći zahtjev sa starim ključem odgovara se s
401. Smatrajte 60 sekundi gornjom granicom prije nego što se stari ključ odbije posvuda. - Svi klijenti računa koriste isti ključ, pa rotacija utječe na sve njih. Novi ključ unesite u svoje klijente odmah nakon rotacije.
- Stanje, upotreba i flood protection pripadaju računu, a ne ključu. Novi ključ nastavlja s istim stanjem i istim brojem zahtjeva za tekuću minutu.
Greške
Svaka greška autentikacije ima status 401 i tip authentication_error. Poruka razlikuje slučajeve.
| Status | Tip | Poruka | Kada |
|---|---|---|---|
401 | authentication_error | Missing authentication | Zahtjev nema ni zaglavlje Authorization: Bearer ni zaglavlje x-api-key koje počinje s sk-. To je također odgovor na bearer malim slovima i na vrijednost Authorization bez Bearer. |
401 | authentication_error | Invalid API key | Ključ nije trenutačni ključ nijednog računa: pogrešno je utipkan, opozvan je ili ga je zamijenila rotacija. |
{
"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 svakoj putanji osim
/v1/messagesobjekterrorsadrži icode: "invalid_api_key", također za ključ koji nedostaje, iparam: null. - Ključ se provjerava prije čitanja tijela. Zahtjev bez valjanog ključa dobiva
401čak i kada je njegovo tijelo nevaljano ili preveliko. - Vrijednost
Authorization: Bearerkoja ne počinje ssk-ne tretira se kao API ključ. Dobiva401uz poruku da je token nevaljan ili istekao.
Preglednici i CORS
- API odgovara na cross-origin zahtjeve preglednika samo za fiksni popis podrijetla. JavaScript na stranici drugog podrijetla ne može čitati
/v1odgovore. - Pozivajte API sa svog servera i neka vaša stranica komunicira s vašim serverom. Time se ključ drži i izvan izvornog koda stranice.
- Kod na strani servera i alati naredbenog retka nisu zahvaćeni: ovo pravilo primjenjuju samo preglednici.
- Prijava na shannon-ai.com ne autentificira
/v1zahtjeve. Kolačići se ondje ne čitaju; ključ je jedina vjerodajnica. - Za dopušteno podrijetlo preglednik može slati
content-type,authorization,x-api-key,anthropic-version,anthropic-beta,openai-betaix-request-id, te može čitati zaglavlje odgovorax-request-id.
Čuvanje ključa na sigurnom
- Ključ držite na serveru. Ne stavljajte ga u web stranice, mobilne aplikacije ni javne repozitorije: tko ga ima, može potrošiti vaše cijelo stanje.
- Učitajte ključ iz varijable okruženja ili spremišta tajni umjesto da ga upisujete u kod.
- Ako je ključ možda procurio, rotirajte ga na Ključevi i upotreba. Stari ključ odmah prestaje raditi.
- Nakon curenja pročitajte popis zahtjeva na Ključevi i upotreba. Prikazuje svaki zahtjev koji je ključ izvršio u posljednjih 30 dana.