Überblick
Die Karte der API: jeder Endpunkt, wie eine Anfrage und ein Fehler aussehen, wie Aufrufe bezahlt werden und was Sie wissen sollten, wenn Sie von einem OpenAI- oder Anthropic-SDK kommen.
Endpunkte
Jeder Endpunkt liegt unter einer Base-URL und wird über HTTPS bedient.
https://api.shannon-ai.com | Endpunkt | Format | Wofür es dient |
|---|---|---|
POST /v1/chat/completions | OpenAI Chat Completions | Eine Konversation senden, die nächste Antwort erhalten. Mit oder ohne Streaming. |
POST /v1/messages | Anthropic Messages | Dasselbe, in den Anfrage- und Antwortformen der Anthropic-SDKs. |
POST /v1/responses | OpenAI Responses | Dasselbe, in den Responses-Formen. Der Endpunkt speichert keinen Zustand: Senden Sie die Konversation mit jeder Anfrage. |
GET /v1/models | OpenAI-Modellliste | Die Modelle mit Kontextfenster, Preisen und Funktionen auflisten. Braucht keinen Key. |
POST /v1/tokenize | Shannon API | Die Tokens eines Textes oder einer Chat-Anfrage für ein gehostetes Open-Weight-Modell zählen. Kostenlos. |
POST /v1/messages/count_tokens | Anthropic-Token-Zählung | Die Input-Tokens einer Messages-Anfrage für ein gehostetes Open-Weight-Modell zählen. Kostenlos. |
Die drei Endpunkte, die Text erzeugen, erreichen dieselben Modelle. Wählen Sie den, dessen Format Ihr Code bereits verwendet.
Grundlagen zu Anfragen
| Header | Beschreibung |
|---|---|
Authorization: Bearer <key> | Ihr API-Key. Bei jedem Endpunkt außer GET /v1/models erforderlich, sofern Sie nicht x-api-key senden. |
x-api-key: <key> | Derselbe Key in dem Header, den Anthropic-SDKs senden. Wird bei jedem Endpunkt gelesen. |
Content-Type: application/json | Bei jedem POST erforderlich. Ohne ihn lautet die Antwort 415. |
x-request-id: <your id> | Optional. Ihre eigene ID für die Anfrage; sie kommt im Antwort-Header x-request-id zurück. Ohne sie erzeugt die API eine aus 12 hexadezimalen Zeichen. |
- Der Body jedes
POSTist ein JSON-Objekt, bis zu 32 MiB. - Ein Feld, das die API nicht kennt, verursacht keinen Fehler und hat keine Wirkung. Eine für einen anderen Anbieter geschriebene Anfrage scheitert nicht an einem zusätzlichen Feld.
- Ein bekanntes Feld mit dem falschen JSON-Typ oder ein fehlendes Pflichtfeld wird mit
422beantwortet. Ein Body, der kein gültiges JSON ist, wird mit400beantwortet. modelist eine der IDs unter Modelle & Preise. Groß- und Kleinschreibung spielen keine Rolle.
Eine Antwort ist JSON oder ein Stream aus Server-Sent Events, wenn die Anfrage stream auf true setzt. Jeder Endpunkt antwortet in seinem eigenen Format. Jede Antwort hat den Header x-request-id.
Was eine Anfrage durchläuft
Eine Anfrage wird in fester Reihenfolge geprüft, bevor ein Modell läuft. Die erste Prüfung, die fehlschlägt, antwortet, sodass ein 401 noch nichts über den Body aussagt.
| Geprüft, in dieser Reihenfolge | Status bei Fehler |
|---|---|
| API-Key | 401 |
| Body: Größe, Content-Type, JSON, Feldtypen | 413 · 415 · 400 · 422 |
| Modell-ID | 400 |
| Flood-Schutz: 120 Anfragen pro Minute und Konto | 429 |
| Guthaben: Das Output-Budget der Anfrage muss hineinpassen | 429 |
Form eines Fehlers
Ein Fehler ist ein JSON-Objekt mit einem error, das type und message enthält. /v1/messages verpackt es so, wie es die Anthropic-SDKs erwarten; jeder andere Pfad verwendet die OpenAI-Form.
{
"error": {
"type": "invalid_request_error",
"message": "unknown model: gpt-4o"
}
} {
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "unknown model: gpt-4o"
}
} - Lesen Sie
typeundmessage.codeundparamsind nur bei manchen Fehlern vorhanden: Behandeln Sie sie als optional.paramist immernull. - Nachdem ein Stream begonnen hat, ist der Status bereits
200. Ein Fehler trifft dann als Fehler-Frame innerhalb des Streams ein. - Jede Fehlerantwort enthält den Header
x-request-id.
| Status | Typ | Wann |
|---|---|---|
400 | invalid_request_error | Der Body ist kein gültiges JSON, die Modell-ID ist unbekannt, oder das Modell nimmt eine Art von Input, die Sie gesendet haben, nicht an. |
401 | authentication_error | Der Key fehlt oder ist ungültig. |
404 | not_found_error | Der Pfad existiert nicht. |
405 | api_error | Der Pfad existiert, die Methode ist falsch. |
413 | invalid_request_error | Der Body ist größer als 32 MiB. |
415 | invalid_request_error | Content-Type ist nicht application/json. |
422 | invalid_request_error | Ein Feld hat den falschen JSON-Typ, oder ein Pflichtfeld fehlt. |
429 | rate_limit_error | Das Guthaben deckt die Anfrage nicht, mehr als 120 Anfragen sind in einer Minute eingetroffen, die Shannon-Coder-Aufrufe des Fensters sind aufgebraucht, oder das Modell ist ausgelastet. Die Nachricht sagt, was zutrifft. |
5xx | api_error | Status 500, 502, 503 oder 504: Die Anfrage war gültig und konnte nicht beantwortet werden. Senden Sie sie erneut. Ein 500 kann den Typ server_error tragen. |
Abrechnung und Guthaben
- Es gibt ein Guthaben pro Konto, und Chat und API teilen es: zuerst das heutige Plan-Kontingent, dann gekauftes Guthaben. Die API hat kein eigenes Kontingent.
- Eine Anfrage reserviert ihr Output-Budget (
max_tokens, Standard 4,096) und wird dann für die Tokens berechnet, die sie tatsächlich verbraucht hat, zum Preis des Modells. - Jede Antwort meldet ihre Token-Anzahlen in
usage. Die Seite Keys & Nutzung zeigt das Guthaben und was jede Anfrage gekostet hat. - Jede Anfrage wird gleich bedient. Das einzige Limit für die Anfragerate ist der Flood-Schutz: 120 Anfragen pro Minute und Konto. Parallel gesendete Anfragen warten in der Schlange.
Limits und Guthaben Modelle & Preise Keys & Nutzung
Felder, die vom Modell abhängen
Jedes Modell nimmt dieselbe Anfrage an. Einige Felder wirken nur bei manchen Modellen; die Tabelle nennt, wo. Die Seiten der Endpunkte listen jedes Feld auf.
| Feld | Beschreibung | Angewendet von |
|---|---|---|
system | Anweisungen für das Modell: eine system-Nachricht bei Chat Completions, system bei Messages, instructions bei Responses. | Gehostete Open-Weight-Modelle, shannon-1.6-*, shannon-2-*, shannon-coder-1 |
temperature | Sampling-Temperatur. | Gehostete Open-Weight-Modelle, shannon-1.6-*, shannon-coder-1 |
top_p | Nucleus-Sampling. | Gehostete Open-Weight-Modelle |
seed | Ein fester Seed für das Sampling. | Gehostete Open-Weight-Modelle |
stop | Bis zu 4 Stop-Sequenzen. | Gehostete Open-Weight-Modelle |
reasoning_effort | Wie viel das Modell nachdenkt, bevor es antwortet. reasoning.effort bei Responses, thinking bei Messages. | Gehostete Open-Weight-Modelle |
web_search | true lässt das Modell für diese Anfrage das Web durchsuchen. Ein Feld dieser API, bei Chat Completions und Messages. | Shannon-Modelle außer shannon-coder-1 |
max_tokens | Das Output-Budget. Bei jedem Modell legt es den Betrag fest, der von Ihrem Guthaben reserviert wird. | Als Limit für die Länge der Antwort: gehostete Open-Weight-Modelle, shannon-1.6-*, shannon-coder-1 |
Wenn Sie von einem OpenAI-SDK kommen
- Setzen Sie die Base-URL auf
https://api.shannon-ai.com/v1und den Key auf Ihren Shannon-Key. Aufrufe von Chat Completions und Responses funktionieren dann mit dem SDK, so wie es ist. modelmuss eine Shannon-ID sein. Ein Modellname eines anderen Anbieters, etwagpt-4o, wird mit400undunknown modelbeantwortet.- Reasoning kommt in einem eigenen Feld:
reasoning_contentnebencontent, in der Nachricht und in den Stream-Deltas. - Ein Stream trägt
usageimmer in seinem letzten Chunk, zusammen mitfinish_reason. - Ein Tool-Aufruf in einem Stream trifft als ein Chunk mit dem vollständigen
arguments-String ein. - Eine Antwort hat eine Choice.
- Pfade der OpenAI API, die nicht in der Tabelle oben stehen, etwa
/v1/embeddings, werden mit404beantwortet.
Wenn Sie von einem Anthropic-SDK kommen
- Setzen Sie die Base-URL auf
https://api.shannon-ai.com, ohne/v1, und den Key auf Ihren Shannon-Key. Das SDK sendet ihn alsx-api-key. modelmuss eine Shannon-ID sein.max_tokensist bei dieser API optional. Der Standard ist 4,096.- Eine Antwort enthält Content-Blöcke vom Typ
thinking,textundtool_use. Der erste Block ist nicht immer der Text: Wählen Sie Blöcke nachtype. stop_reasonistend_turnodertool_use. Ein Stream eines Shannon-Modells kann auch mitmax_tokensenden.anthropic-versionundanthropic-betawerden akzeptiert, sodass das SDK unverändert funktioniert. Eine Anfrage braucht sie nicht.- Fehler bei
/v1/messageshaben die Anthropic-Form:{"type": "error", "error": {…}}.
Coding-Tools, die diese Formate sprechen, werden genauso eingerichtet: Base-URL, Key und eine Shannon-ID als Modell. CLI-Coding-Tools