Hoppa till innehållet
Autentisering

Autentisering

Varje begäran bär din API-nyckel i en header. En nyckel per konto fungerar på varje endpoint och varje modell, i någon av två headerformer.

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

Accepterade headers

Båda headrarna läses på varje /v1-endpoint, oavsett vilket format endpointen talar. Skicka en av dem.

Header Beskrivning
Authorization: Bearer <key> Kontrolleras först. Skriv Bearer med stort B och ett mellanslag före nyckeln. OpenAI SDK:er skickar den här headern.
x-api-key: <key> Läses när begäran saknar Authorization: Bearer-header. Anthropic SDK:er skickar den här headern.

Med en OpenAI SDK anger du nyckeln och bas-URL:en; SDK:n skickar 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 anger du nyckeln och bas-URL:en utan /v1; SDK:n skickar 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"))

Vilka endpoints som kräver en nyckel

Endpoint Nyckel
POST /v1/chat/completions Krävs
POST /v1/messages Krävs
POST /v1/responses Krävs
POST /v1/tokenize Krävs
POST /v1/messages/count_tokens Krävs
GET /v1/models Behövs inte

Din nyckel

  • En nyckel är sk- följt av 43 tecken från A–Z, a–z, 0–9, - och _: 46 tecken totalt.
  • Varje konto har exakt en nyckel. Den skapas första gången du öppnar Nycklar och användning.
  • Nyckeln ger full åtkomst till API:et för ditt konto: varje endpoint, varje modell och hela balansen.
  • En nyckel har inget utgångsdatum. Den fungerar tills du roterar eller återkallar den.

Rotera och återkalla

Du roterar och återkallar nyckeln på sidan Nycklar och användning. Nycklar och användning

Åtgärd Vad som händer
Rotera En ny nyckel utfärdas och den gamla nyckeln slutar fungera. Den nya nyckeln fungerar direkt.
Återkalla Nyckeln slutar fungera och ingen ny nyckel utfärdas. Rotera för att få en fungerande nyckel igen.
  • Båda träder i kraft direkt: nästa begäran med den gamla nyckeln besvaras med 401. Räkna med 60 sekunder som övre gräns innan den gamla nyckeln nekas överallt.
  • Alla klienter för kontot använder samma nyckel, så en rotation når dem alla. Lägg in den nya nyckeln i dina klienter direkt efter att du har roterat.
  • Balans, användning och flood protection hör till kontot, inte till nyckeln. En ny nyckel fortsätter med samma balans och samma antal begäranden för den aktuella minuten.

Fel

Varje autentiseringsfel har status 401 och typen authentication_error. Meddelandet skiljer fallen åt.

Status Typ Meddelande När
401 authentication_error Missing authentication Begäran har varken en Authorization: Bearer-header eller en x-api-key-header som börjar med sk-. Det är också svaret på bearer med små bokstäver och på ett Authorization-värde utan Bearer.
401 authentication_error Invalid API key Nyckeln är inte kontots nuvarande nyckel: den är felskriven, återkallad eller ersatt genom en rotation.
{
  "error": {
    "type": "authentication_error",
    "message": "Invalid API key",
    "code": "invalid_api_key",
    "param": null
  }
}
  • På varje sökväg utom /v1/messages innehåller error-objektet också code: "invalid_api_key", även för en saknad nyckel, och param: null.
  • Nyckeln kontrolleras innan kroppen läses. En begäran utan giltig nyckel får 401 även när dess kropp är ogiltig eller för stor.
  • Ett Authorization: Bearer-värde som inte börjar med sk- behandlas inte som en API-nyckel. Det får 401 med ett meddelande om att token är ogiltig eller har gått ut.

Webbläsare och CORS

  • API:et svarar på cross-origin-begäranden från webbläsare endast för en fast lista med origins. JavaScript på en sida från ett annat origin kan inte läsa /v1-svar.
  • Anropa API:et från din server och låt din sida prata med din server. Då hålls nyckeln också utanför sidans källkod.
  • Kod på serversidan och kommandoradsverktyg påverkas inte: den här regeln tillämpas bara av webbläsare.
  • En inloggning på shannon-ai.com autentiserar inte /v1-begäranden. Cookies läses inte där; nyckeln är den enda inloggningsuppgiften.
  • För ett tillåtet origin får en webbläsare skicka content-type, authorization, x-api-key, anthropic-version, anthropic-beta, openai-beta och x-request-id, och får läsa svarsheadern x-request-id.

Så skyddar du nyckeln

  • Förvara nyckeln på en server. Lägg den inte på webbsidor, i mobilappar eller i offentliga repon: den som har den kan förbruka hela din balans.
  • Läs in nyckeln från en miljövariabel eller ett hemlighetsförråd i stället för att skriva in den i koden.
  • Om nyckeln kan ha läckt, rotera den under Nycklar och användning. Den gamla nyckeln slutar fungera direkt.
  • Efter ett läckage: läs begäranlistan under Nycklar och användning. Den visar varje begäran som nyckeln har gjort under de senaste 30 dagarna.