Gå til indhold
Godkendelse

Godkendelse

Hver anmodning bærer din API-nøgle i en header. Én nøgle per konto virker på alle endpoints og alle modeller i en af to header-former.

Header · OpenAI SDK'er
Authorization: Bearer YOUR_API_KEY
Header · Anthropic SDK'er
x-api-key: YOUR_API_KEY

Accepterede headers

Begge headers læses på hvert /v1-endpoint, uanset hvilket format endpointet taler. Send en af dem.

Header Beskrivelse
Authorization: Bearer <key> Kontrolleres først. Skriv Bearer med stort B og ét mellemrum før nøglen. OpenAI SDK'er sender denne header.
x-api-key: <key> Læses, når anmodningen ikke har nogen Authorization: Bearer-header. Anthropic SDK'er sender denne header.

Med en OpenAI SDK angiver du nøglen 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)

Med en Anthropic SDK angiver du nøglen og base-URL'en uden /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"))

Hvilke endpoints der kræver en nøgle

Endpoint Nøgle
POST /v1/chat/completions Påkrævet
POST /v1/messages Påkrævet
POST /v1/responses Påkrævet
POST /v1/tokenize Påkrævet
POST /v1/messages/count_tokens Påkrævet
GET /v1/models Ikke nødvendig

Din nøgle

  • En nøgle er sk- efterfulgt af 43 tegn fra A–Z, a–z, 0–9, - og _: 46 tegn i alt.
  • Hver konto har præcis én nøgle. Den oprettes første gang, du åbner Nøgler og forbrug.
  • Nøglen giver fuld adgang til API'et for din konto: alle endpoints, alle modeller og hele saldoen.
  • En nøgle har ingen udløbsdato. Den virker, indtil du roterer eller tilbagekalder den.

Rotér og tilbagekald

Du roterer og tilbagekalder nøglen på siden Nøgler og forbrug. Nøgler og forbrug

Handling Hvad der sker
Rotér Der udstedes en ny nøgle, og den gamle holder op med at virke. Den nye nøgle virker med det samme.
Tilbagekald Nøglen holder op med at virke, og der udstedes ingen ny nøgle. Rotér for at få en fungerende nøgle igen.
  • Begge træder i kraft med det samme: den næste anmodning med den gamle nøgle besvares med 401. Regn med 60 sekunder som øvre grænse, før den gamle nøgle afvises overalt.
  • Alle kontoens klienter bruger samme nøgle, så en rotation rammer dem alle. Læg den nye nøgle ind i dine klienter lige efter, du har roteret.
  • Saldo, forbrug og flood protection hører til kontoen, ikke til nøglen. En ny nøgle fortsætter med samme saldo og samme antal anmodninger for det aktuelle minut.

Fejl

Hver godkendelsesfejl har status 401 og typen authentication_error. Beskeden skelner mellem tilfældene.

Status Type Besked Hvornår
401 authentication_error Missing authentication Anmodningen har hverken en Authorization: Bearer-header eller en x-api-key-header, der begynder med sk-. Det er også svaret på bearer med små bogstaver og på en Authorization-værdi uden Bearer.
401 authentication_error Invalid API key Nøglen er ikke en kontos nuværende nøgle: den er indtastet forkert, den blev tilbagekaldt, eller den blev erstattet ved en rotation.
{
  "error": {
    "type": "authentication_error",
    "message": "Invalid API key",
    "code": "invalid_api_key",
    "param": null
  }
}
  • På alle stier undtagen /v1/messages indeholder objektet error desuden code: "invalid_api_key", også ved manglende nøgle, og param: null.
  • Nøglen kontrolleres, før body'en læses. En anmodning uden gyldig nøgle får 401, selv når dens body er ugyldig eller for stor.
  • En Authorization: Bearer-værdi, der ikke begynder med sk-, behandles ikke som en API-nøgle. Den får 401 med en besked om, at tokenet er ugyldigt eller udløbet.

Browsere og CORS

  • API'et svarer kun på cross-origin-anmodninger fra browsere for en fast liste af origins. JavaScript på en side fra en anden origin kan ikke læse /v1-svar.
  • Kald API'et fra din server, og lad din side tale med din server. Så holdes nøglen også ude af sidens kildekode.
  • Kode på serversiden og kommandolinjeværktøjer er ikke berørt: denne regel anvendes kun af browsere.
  • Et login på shannon-ai.com godkender ikke /v1-anmodninger. Cookies læses ikke dér; nøglen er den eneste legitimation.
  • For en tilladt origin må en browser sende content-type, authorization, x-api-key, anthropic-version, anthropic-beta, openai-beta og x-request-id og må læse svarheaderen x-request-id.

Sådan holder du nøglen sikker

  • Opbevar nøglen på en server. Læg den ikke i websider, mobilapps eller offentlige repositories: den, der har den, kan bruge hele din saldo.
  • Indlæs nøglen fra en miljøvariabel eller et secret store i stedet for at skrive den ind i koden.
  • Hvis nøglen kan være lækket, så rotér den under Nøgler og forbrug. Den gamle nøgle holder op med at virke med det samme.
  • Efter et lækage skal du læse anmodningslisten under Nøgler og forbrug. Den viser alle anmodninger, nøglen har foretaget de seneste 30 dage.