Autentisering
Hver forespørsel har API-nøkkelen din i en header. Én nøkkel per konto fungerer på alle endepunkter og alle modeller, i en av to header-former.
Header · OpenAI-SDK-er
Authorization: Bearer YOUR_API_KEY Header · Anthropic-SDK-er
x-api-key: YOUR_API_KEY Godtatte headere
Begge headerne leses på hvert /v1-endepunkt, uansett hvilket format endepunktet snakker. Send én av dem.
| Header | Beskrivelse |
|---|---|
Authorization: Bearer <key> | Sjekkes først. Skriv Bearer med stor B og ett mellomrom før nøkkelen. OpenAI-SDK-er sender denne headeren. |
x-api-key: <key> | Leses når forespørselen ikke har noen Authorization: Bearer-header. Anthropic-SDK-er sender denne headeren. |
Med en OpenAI-SDK setter du nøkkelen og base-URL-en; SDK-en sender 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!"}
]
}' Med en Anthropic-SDK setter du nøkkelen og base-URL-en uten /v1; SDK-en sender 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!"}
]
}' Hvilke endepunkter som trenger nøkkel
| Endepunkt | Nøkkel |
|---|---|
POST /v1/chat/completions | Påkrevd |
POST /v1/messages | Påkrevd |
POST /v1/responses | Påkrevd |
POST /v1/tokenize | Påkrevd |
POST /v1/messages/count_tokens | Påkrevd |
GET /v1/models | Ikke nødvendig |
Nøkkelen din
- En nøkkel er
sk-etterfulgt av 43 tegn fraA–Z,a–z,0–9,-og_: 46 tegn til sammen. - Hver konto har nøyaktig én nøkkel. Den opprettes første gang du åpner Nøkler og bruk.
- Nøkkelen gir full tilgang til API-et for kontoen din: alle endepunkter, alle modeller og hele saldoen.
- En nøkkel har ingen utløpsdato. Den fungerer til du roterer eller tilbakekaller den.
Roter og tilbakekall
Du roterer og tilbakekaller nøkkelen på siden Nøkler og bruk. Nøkler og bruk
| Handling | Hva som skjer |
|---|---|
| Roter | En ny nøkkel utstedes, og den gamle nøkkelen slutter å fungere. Den nye nøkkelen fungerer med en gang. |
| Tilbakekall | Nøkkelen slutter å fungere, og ingen ny nøkkel utstedes. Roter for å få en fungerende nøkkel igjen. |
- Begge trer i kraft med en gang: den neste forespørselen med den gamle nøkkelen besvares med
401. Regn 60 sekunder som øvre grense før den gamle nøkkelen nektes overalt. - Alle klienter på kontoen bruker samme nøkkel, så en rotasjon treffer dem alle. Legg den nye nøkkelen inn i klientene dine rett etter at du har rotert.
- Saldo, bruk og flood protection hører til kontoen, ikke til nøkkelen. En ny nøkkel fortsetter med samme saldo og samme forespørselsteller for det gjeldende minuttet.
Feil
Hver autentiseringsfeil har status 401 og typen authentication_error. Meldingen skiller tilfellene fra hverandre.
| Status | Type | Melding | Når |
|---|---|---|---|
401 | authentication_error | Missing authentication | Forespørselen har verken en Authorization: Bearer-header eller en x-api-key-header som begynner med sk-. Dette er også svaret på bearer med små bokstaver og på en Authorization-verdi uten Bearer. |
401 | authentication_error | Invalid API key | Nøkkelen er ikke den gjeldende nøkkelen til en konto: den er skrevet feil, den ble tilbakekalt, eller den ble erstattet ved en rotasjon. |
{
"error": {
"type": "authentication_error",
"message": "Invalid API key",
"code": "invalid_api_key",
"param": null
}
} {
"type": "error",
"error": {
"type": "authentication_error",
"message": "Invalid API key"
}
} - På alle stier unntatt
/v1/messagesinneholdererror-objektet ogsåcode: "invalid_api_key", også ved manglende nøkkel, ogparam: null. - Nøkkelen sjekkes før kroppen leses. En forespørsel uten gyldig nøkkel får
401selv om kroppen er ugyldig eller for stor. - En
Authorization: Bearer-verdi som ikke begynner medsk-, behandles ikke som en API-nøkkel. Den får401med en melding om at tokenet er ugyldig eller utløpt.
Nettlesere og CORS
- API-et svarer på cross-origin-forespørsler fra nettlesere bare for en fast liste med origins. JavaScript på en side fra en annen origin kan ikke lese
/v1-svar. - Kall API-et fra serveren din og la siden din snakke med serveren din. Det holder også nøkkelen ute av sidekilden.
- Kode på serversiden og kommandolinjeverktøy påvirkes ikke: denne regelen håndheves bare av nettlesere.
- En innlogging på shannon-ai.com autentiserer ikke
/v1-forespørsler. Cookies leses ikke der; nøkkelen er den eneste legitimasjonen. - For en tillatt origin kan en nettleser sende
content-type,authorization,x-api-key,anthropic-version,anthropic-beta,openai-betaogx-request-id, og kan lese svar-headerenx-request-id.
Slik holder du nøkkelen trygg
- Hold nøkkelen på en server. Ikke legg den i nettsider, mobilapper eller offentlige repoer: den som har den, kan bruke hele saldoen din.
- Last nøkkelen fra en miljøvariabel eller et hemmelighetslager i stedet for å skrive den inn i koden.
- Hvis nøkkelen kan ha lekket, roter den under Nøkler og bruk. Den gamle nøkkelen slutter å fungere med en gang.
- Etter en lekkasje: les forespørselslisten under Nøkler og bruk. Den viser alle forespørsler nøkkelen har gjort de siste 30 dagene.