Zum Inhalt springen
Überblick

Ü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.

Base-URL
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 POST ist 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 422 beantwortet. Ein Body, der kein gültiges JSON ist, wird mit 400 beantwortet.
  • model ist 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.

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"
  }
}
  • Lesen Sie type und message. code und param sind nur bei manchen Fehlern vorhanden: Behandeln Sie sie als optional. param ist immer null.
  • 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.

Fehlerbehandlung

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

Chat Completions

Wenn Sie von einem OpenAI-SDK kommen

  • Setzen Sie die Base-URL auf https://api.shannon-ai.com/v1 und den Key auf Ihren Shannon-Key. Aufrufe von Chat Completions und Responses funktionieren dann mit dem SDK, so wie es ist.
  • model muss eine Shannon-ID sein. Ein Modellname eines anderen Anbieters, etwa gpt-4o, wird mit 400 und unknown model beantwortet.
  • Reasoning kommt in einem eigenen Feld: reasoning_content neben content, in der Nachricht und in den Stream-Deltas.
  • Ein Stream trägt usage immer in seinem letzten Chunk, zusammen mit finish_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 mit 404 beantwortet.

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 als x-api-key.
  • model muss eine Shannon-ID sein.
  • max_tokens ist bei dieser API optional. Der Standard ist 4,096.
  • Eine Antwort enthält Content-Blöcke vom Typ thinking, text und tool_use. Der erste Block ist nicht immer der Text: Wählen Sie Blöcke nach type.
  • stop_reason ist end_turn oder tool_use. Ein Stream eines Shannon-Modells kann auch mit max_tokens enden.
  • anthropic-version und anthropic-beta werden akzeptiert, sodass das SDK unverändert funktioniert. Eine Anfrage braucht sie nicht.
  • Fehler bei /v1/messages haben 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