Hoppa till innehållet
Översikt

Översikt

Kartan över API:et: varje endpoint, hur en begäran och ett fel ser ut, hur anrop betalas och vad du bör veta när du kommer från en OpenAI- eller Anthropic-SDK.

Endpoints

Varje endpoint ligger under en bas-URL och serveras över HTTPS.

Bas-URL
https://api.shannon-ai.com
Endpoint Format Vad det används till
POST /v1/chat/completions OpenAI Chat Completions Skicka en konversation, få nästa svar. Med eller utan streaming.
POST /v1/messages Anthropic Messages Samma sak, i begäran- och svarsformerna för Anthropic-SDK:er.
POST /v1/responses OpenAI Responses Samma sak, i Responses-formerna. Endpointen sparar inget tillstånd: skicka konversationen med varje begäran.
GET /v1/models OpenAI-modelllista Lista modellerna med kontextfönster, priser och funktioner. Kräver ingen nyckel.
POST /v1/tokenize Shannon API Räkna tokens i en text eller i en chattbegäran för en hostad open-weight-modell. Gratis.
POST /v1/messages/count_tokens Anthropic tokenräkning Räkna inputtokens i en Messages-begäran för en hostad open-weight-modell. Gratis.

De tre endpoints som producerar text når samma modeller. Välj den vars format din kod redan använder.

Grunderna för begäranden

Header Beskrivning
Authorization: Bearer <key> Din API-nyckel. Krävs på varje endpoint utom GET /v1/models, såvida du inte skickar x-api-key.
x-api-key: <key> Samma nyckel i den header som Anthropic-SDK:er skickar. Läses på varje endpoint.
Content-Type: application/json Krävs på varje POST. Utan den blir svaret 415.
x-request-id: <your id> Valfri. Ditt eget id för begäran; det kommer tillbaka i svarsheadern x-request-id. Utan den skapar API:et ett på 12 hexadecimala tecken.
  • Bodyn i varje POST är ett JSON-objekt, upp till 32 MiB.
  • Ett fält som API:et inte känner till ger inget fel och har ingen effekt. En begäran skriven för en annan leverantör misslyckas inte på grund av ett extra fält.
  • Ett känt fält med fel JSON-typ, eller ett saknat obligatoriskt fält, besvaras med 422. En body som inte är giltig JSON besvaras med 400.
  • model är ett av id:na på Modeller och priser. Versaler och gemener spelar ingen roll.

Ett svar är JSON, eller en ström av server-sent events när begäran sätter stream till true. Varje endpoint svarar i sitt eget format. Varje svar har headern x-request-id.

Vad en begäran går igenom

En begäran kontrolleras i en fast ordning innan en modell körs. Den första kontrollen som misslyckas svarar, så en 401 säger ännu inget om bodyn.

Felens form

Ett fel är ett JSON-objekt med ett error som innehåller type och message. /v1/messages omsluter det på det sätt som Anthropic-SDK:er förväntar sig; varje annan sökväg använder OpenAI-formen.

{
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: gpt-4o"
  }
}
  • Läs type och message. code och param finns bara på vissa fel: behandla dem som valfria. param är alltid null.
  • När en ström har startat är statusen redan 200. Ett fel kommer då som en felframe inne i strömmen.
  • Varje felsvar innehåller headern x-request-id.
Status Typ När
400 invalid_request_error Bodyn är inte giltig JSON, modell-id:t är okänt, eller modellen tar inte en sorts input som du skickade.
401 authentication_error Nyckeln saknas eller är inte giltig.
404 not_found_error Sökvägen finns inte.
405 api_error Sökvägen finns, men metoden är fel.
413 invalid_request_error Bodyn är större än 32 MiB.
415 invalid_request_error Content-Type är inte application/json.
422 invalid_request_error Ett fält har fel JSON-typ eller ett obligatoriskt fält saknas.
429 rate_limit_error Balansen täcker inte begäran, fler än 120 begäranden kom in på en minut, fönstrets Shannon Coder-anrop är förbrukade, eller modellen är upptagen. Meddelandet anger vilket.
5xx api_error Status 500, 502, 503 eller 504: begäran var giltig och kunde inte besvaras. Skicka den igen. Ett 500 kan ha typen server_error.

Felhantering

Fakturering och balans

  • Det finns en balans per konto, och chatten och API:et delar den: först dagens plankvot, sedan inköpt kredit. API:et har ingen egen kvot.
  • En begäran reserverar sin outputbudget (max_tokens, standard 4,096) och debiteras sedan för de tokens den faktiskt använde, till modellens pris.
  • Varje svar rapporterar sina tokenräkningar i usage. Sidan Nycklar och användning visar balansen och vad varje begäran kostade.
  • Varje begäran betjänas lika. Den enda gränsen för begäranfrekvens är flood protection: 120 begäranden per minut och konto. Begäranden som skickas parallellt väntar i kö.

Gränser och balans Modeller och priser Nycklar och användning

Fält som beror på modellen

Varje modell tar samma begäran. Några fält får effekt bara på vissa modeller; tabellen anger var. Endpointsidorna listar varje fält.

Fält Beskrivning Tillämpas av
system Instruktioner till modellen: ett system-meddelande på Chat Completions, system på Messages, instructions på Responses. Hostade open-weight-modeller, shannon-1.6-*, shannon-2-*, shannon-coder-1
temperature Samplingtemperatur. Hostade open-weight-modeller, shannon-1.6-*, shannon-coder-1
top_p Nucleus sampling. Hostade open-weight-modeller
seed Ett fast seed för sampling. Hostade open-weight-modeller
stop Upp till 4 stoppsekvenser. Hostade open-weight-modeller
reasoning_effort Hur mycket modellen resonerar innan den svarar. reasoning.effort på Responses, thinking på Messages. Hostade open-weight-modeller
web_search true låter modellen söka på webben för den här begäran. Ett fält i det här API:et, på Chat Completions och Messages. Shannon-modeller utom shannon-coder-1
max_tokens Outputbudgeten. På varje modell bestämmer den det belopp som reserveras från din balans. Som gräns för svarets längd: hostade open-weight-modeller, shannon-1.6-*, shannon-coder-1

Chat Completions

Om du kommer från en OpenAI-SDK

  • Sätt bas-URL:en till https://api.shannon-ai.com/v1 och nyckeln till din Shannon-nyckel. Anrop till Chat Completions och Responses fungerar då med SDK:n som den är.
  • model måste vara ett Shannon-id. Ett modellnamn från en annan leverantör, till exempel gpt-4o, besvaras med 400 och unknown model.
  • Resonemanget kommer i ett eget fält: reasoning_content bredvid content, i meddelandet och i strömmens deltan.
  • En ström bär alltid usage i sin sista chunk, tillsammans med finish_reason.
  • Ett verktygsanrop i en ström kommer som en enda chunk med hela arguments-strängen.
  • Ett svar har ett choice.
  • Sökvägar i OpenAI-API:et som inte finns i tabellen ovan, till exempel /v1/embeddings, besvaras med 404.

Om du kommer från en Anthropic-SDK

  • Sätt bas-URL:en till https://api.shannon-ai.com, utan /v1, och nyckeln till din Shannon-nyckel. SDK:n skickar den som x-api-key.
  • model måste vara ett Shannon-id.
  • max_tokens är valfritt i det här API:et. Standardvärdet är 4,096.
  • Ett svar innehåller innehållsblock av typen thinking, text och tool_use. Det första blocket är inte alltid texten: välj block efter type.
  • stop_reason är end_turn eller tool_use. En ström från en Shannon-modell kan också sluta med max_tokens.
  • anthropic-version och anthropic-beta accepteras, så SDK:n fungerar oförändrad. En begäran behöver dem inte.
  • Fel på /v1/messages har Anthropic-formen: {"type": "error", "error": {…}}.

Kodningsverktyg som talar dessa format ställs in på samma sätt: bas-URL, nyckel och ett Shannon-id som modell. CLI-verktyg för kodning