Authentifizierung
Jede Anfrage trägt Ihren API-Key in einem Header. Ein Key pro Konto funktioniert bei jedem Endpunkt und jedem Modell, in einer von zwei Header-Formen.
Authorization: Bearer YOUR_API_KEY x-api-key: YOUR_API_KEY Akzeptierte Header
Beide Header werden bei jedem /v1-Endpunkt gelesen, unabhängig vom Format, das der Endpunkt spricht. Senden Sie einen davon.
| Header | Beschreibung |
|---|---|
Authorization: Bearer <key> | Wird zuerst geprüft. Schreiben Sie Bearer mit großem B und einem Leerzeichen vor dem Key. OpenAI-SDKs senden diesen Header. |
x-api-key: <key> | Wird gelesen, wenn die Anfrage keinen Header Authorization: Bearer hat. Anthropic-SDKs senden diesen Header. |
Setzen Sie bei einem OpenAI-SDK den Key und die Base-URL; das SDK sendet 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!"}
]
}' Setzen Sie bei einem Anthropic-SDK den Key und die Base-URL ohne /v1; das SDK sendet 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!"}
]
}' Welche Endpunkte einen Key brauchen
| Endpunkt | Key |
|---|---|
POST /v1/chat/completions | Erforderlich |
POST /v1/messages | Erforderlich |
POST /v1/responses | Erforderlich |
POST /v1/tokenize | Erforderlich |
POST /v1/messages/count_tokens | Erforderlich |
GET /v1/models | Nicht nötig |
Ihr Key
- Ein Key ist
sk-gefolgt von 43 Zeichen ausA–Z,a–z,0–9,-und_: insgesamt 46 Zeichen. - Jedes Konto hat genau einen Key. Er wird erstellt, wenn Sie zum ersten Mal Keys & Nutzung öffnen.
- Der Key gibt Ihrem Konto vollen Zugriff auf die API: jeden Endpunkt, jedes Modell und das gesamte Guthaben.
- Ein Key hat kein Ablaufdatum. Er funktioniert, bis Sie ihn rotieren oder widerrufen.
Rotieren und widerrufen
Sie rotieren und widerrufen den Key auf der Seite Keys & Nutzung. Keys & Nutzung
| Aktion | Was passiert |
|---|---|
| Rotieren | Ein neuer Key wird ausgestellt und der alte funktioniert nicht mehr. Der neue Key funktioniert sofort. |
| Widerrufen | Der Key funktioniert nicht mehr und es wird kein neuer Key ausgestellt. Rotieren Sie, um wieder einen funktionierenden Key zu erhalten. |
- Beides wirkt sofort: Die nächste Anfrage mit dem alten Key wird mit
401beantwortet. Rechnen Sie mit höchstens 60 Sekunden, bis der alte Key überall abgelehnt wird. - Alle Clients des Kontos verwenden denselben Key, daher erreicht eine Rotation alle. Tragen Sie den neuen Key direkt nach dem Rotieren in Ihre Clients ein.
- Guthaben, Nutzung und Flood-Schutz gehören zum Konto, nicht zum Key. Ein neuer Key macht mit demselben Guthaben und demselben Anfragezähler für die aktuelle Minute weiter.
Fehler
Jeder Authentifizierungsfehler hat den Status 401 und den Typ authentication_error. Die Nachricht unterscheidet die Fälle.
| Status | Typ | Nachricht | Wann |
|---|---|---|---|
401 | authentication_error | Missing authentication | Die Anfrage hat weder einen Header Authorization: Bearer noch einen Header x-api-key, der mit sk- beginnt. Dies ist auch die Antwort auf bearer in Kleinbuchstaben und auf einen Authorization-Wert ohne Bearer. |
401 | authentication_error | Invalid API key | Der Key ist nicht der aktuelle Key eines Kontos: Er ist falsch getippt, wurde widerrufen oder durch eine Rotation ersetzt. |
{
"error": {
"type": "authentication_error",
"message": "Invalid API key",
"code": "invalid_api_key",
"param": null
}
} {
"type": "error",
"error": {
"type": "authentication_error",
"message": "Invalid API key"
}
} - Bei jedem Pfad außer
/v1/messagesenthält das Objekterrorzusätzlichcode: "invalid_api_key", auch bei einem fehlenden Key, sowieparam: null. - Der Key wird geprüft, bevor der Body gelesen wird. Eine Anfrage ohne gültigen Key erhält
401, auch wenn ihr Body ungültig oder zu groß ist. - Ein Wert von
Authorization: Bearer, der nicht mitsk-beginnt, wird nicht als API-Key behandelt. Er erhält401mit einer Nachricht, dass das Token ungültig oder abgelaufen ist.
Browser und CORS
- Die API beantwortet Cross-Origin-Anfragen von Browsern nur für eine feste Liste von Origins. JavaScript auf einer Seite eines anderen Origins kann
/v1-Antworten nicht lesen. - Rufen Sie die API von Ihrem Server aus auf und lassen Sie Ihre Seite mit Ihrem Server sprechen. So bleibt der Key auch aus dem Quelltext der Seite heraus.
- Serverseitiger Code und Kommandozeilen-Tools sind nicht betroffen: Diese Regel wird nur von Browsern durchgesetzt.
- Eine Anmeldung auf shannon-ai.com authentifiziert keine
/v1-Anfragen. Cookies werden dort nicht gelesen; der Key ist die einzige Zugangsberechtigung. - Für einen erlaubten Origin darf ein Browser
content-type,authorization,x-api-key,anthropic-version,anthropic-beta,openai-betaundx-request-idsenden und den Antwort-Headerx-request-idlesen.
Den Key sicher aufbewahren
- Bewahren Sie den Key auf einem Server auf. Legen Sie ihn nicht in Webseiten, mobilen Apps oder öffentlichen Repositories ab: Wer ihn hat, kann Ihr gesamtes Guthaben ausgeben.
- Laden Sie den Key aus einer Umgebungsvariable oder einem Secret Store, statt ihn in den Code zu schreiben.
- Wenn der Key möglicherweise geleakt wurde, rotieren Sie ihn unter Keys & Nutzung. Der alte Key funktioniert sofort nicht mehr.
- Lesen Sie nach einem Leck die Anfrageliste unter Keys & Nutzung. Sie zeigt jede Anfrage, die der Key in den letzten 30 Tagen gestellt hat.