Gå til indhold
Overblik

Overblik

Kortet over API'et: hvert endpoint, hvordan en anmodning og en fejl ser ud, hvordan kald betales, og hvad du skal vide, når du kommer fra et OpenAI- eller Anthropic-SDK.

Endpoints

Hvert endpoint ligger under én base-URL og leveres over HTTPS.

Base-URL
https://api.shannon-ai.com
Endpoint Format Hvad det bruges til
POST /v1/chat/completions OpenAI Chat Completions Send en samtale, og få det næste svar. Med eller uden streaming.
POST /v1/messages Anthropic Messages Det samme, i anmodnings- og svarformerne fra Anthropic-SDK'er.
POST /v1/responses OpenAI Responses Det samme, i Responses-formerne. Endpointet gemmer ingen tilstand: send samtalen med hver anmodning.
GET /v1/models OpenAI-modelliste List modellerne med kontekstvindue, priser og funktioner. Kræver ingen nøgle.
POST /v1/tokenize Shannon API Tæl tokens i en tekst eller i en chatanmodning til en hostet open-weight-model. Gratis.
POST /v1/messages/count_tokens Anthropic-tokentælling Tæl input-tokens i en Messages-anmodning til en hostet open-weight-model. Gratis.

De tre endpoints, der producerer tekst, når de samme modeller. Vælg det, hvis format din kode allerede bruger.

Grundlæggende om anmodninger

Header Beskrivelse
Authorization: Bearer <key> Din API-nøgle. Påkrævet på hvert endpoint undtagen GET /v1/models, medmindre du sender x-api-key.
x-api-key: <key> Den samme nøgle i den header, Anthropic-SDK'er sender. Læses på hvert endpoint.
Content-Type: application/json Påkrævet på hver POST. Uden den er svaret 415.
x-request-id: <your id> Valgfri. Dit eget id for anmodningen; det kommer tilbage i svarheaderen x-request-id. Uden den opretter API'et et på 12 hexadecimale tegn.
  • Body'en i hver POST er ét JSON-objekt på op til 32 MiB.
  • Et felt, API'et ikke kender, giver ingen fejl og har ingen virkning. En anmodning skrevet til en anden udbyder fejler ikke på grund af et ekstra felt.
  • Et kendt felt med den forkerte JSON-type eller et manglende påkrævet felt besvares med 422. En body, der ikke er gyldig JSON, besvares med 400.
  • model er et af id'erne under Modeller og priser. Store og små bogstaver er ligegyldige.

Et svar er JSON eller en stream af server-sent events, når anmodningen sætter stream til true. Hvert endpoint svarer i sit eget format. Hvert svar har headeren x-request-id.

Hvad en anmodning skal igennem

En anmodning kontrolleres i en fast rækkefølge, før en model kører. Den første kontrol, der fejler, svarer, så en 401 fortæller endnu intet om body'en.

Fejlens form

En fejl er et JSON-objekt med en error, der indeholder type og message. /v1/messages pakker den ind, som Anthropic-SDK'er forventer; alle andre stier bruger OpenAI-formen.

{
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: gpt-4o"
  }
}
  • Læs type og message. code og param findes kun på nogle fejl: behandl dem som valgfri. param er altid null.
  • Når en stream er startet, er statussen allerede 200. En fejl ankommer da som en fejlramme inde i streamen.
  • Hvert fejlsvar indeholder headeren x-request-id.
Status Type Hvornår
400 invalid_request_error Body'en er ikke gyldig JSON, model-id'et er ukendt, eller modellen tager ikke en slags input, du sendte.
401 authentication_error Nøglen mangler eller er ugyldig.
404 not_found_error Stien findes ikke.
405 api_error Stien findes, men metoden er forkert.
413 invalid_request_error Body'en er større end 32 MiB.
415 invalid_request_error Content-Type er ikke application/json.
422 invalid_request_error Et felt har den forkerte JSON-type, eller et påkrævet felt mangler.
429 rate_limit_error Saldoen dækker ikke anmodningen, mere end 120 anmodninger ankom på et minut, vinduets Shannon Coder-kald er brugt op, eller modellen er optaget. Beskeden siger hvilket.
5xx api_error Status 500, 502, 503 eller 504: anmodningen var gyldig og kunne ikke besvares. Send den igen. En 500 kan have typen server_error.

Fejlhåndtering

Fakturering og balance

  • Der er én saldo per konto, og chat og API deler den: først dagens plan-kvote, derefter købt kredit. API'et har ingen egen kvote.
  • En anmodning reserverer sit outputbudget (max_tokens, standard 4,096) og afregnes derefter for de tokens, den reelt brugte, til modellens pris.
  • Hvert svar rapporterer sine token-tællinger i usage. Siden Nøgler og forbrug viser saldoen og hvad hver anmodning kostede.
  • Hver anmodning betjenes lige. Den eneste grænse for anmodningshastighed er flood protection: 120 anmodninger per minut per konto. Anmodninger sendt parallelt venter i kø.

Grænser og saldo Modeller og priser Nøgler og forbrug

Felter, der afhænger af modellen

Alle modeller tager den samme anmodning. Nogle få felter har kun virkning på visse modeller; tabellen nævner hvilke. Endpoint-siderne opregner hvert felt.

Felt Beskrivelse Anvendes af
system Instruktioner til modellen: en system-besked på Chat Completions, system på Messages, instructions på Responses. Hostede open-weight-modeller, shannon-1.6-*, shannon-2-*, shannon-coder-1
temperature Samplingtemperatur. Hostede open-weight-modeller, shannon-1.6-*, shannon-coder-1
top_p Nucleus-sampling. Hostede open-weight-modeller
seed Et fast seed til sampling. Hostede open-weight-modeller
stop Op til 4 stopsekvenser. Hostede open-weight-modeller
reasoning_effort Hvor meget modellen ræsonnerer, før den svarer. reasoning.effort på Responses, thinking på Messages. Hostede open-weight-modeller
web_search true lader modellen søge på nettet til denne anmodning. Et felt i dette API, på Chat Completions og Messages. Shannon-modeller undtagen shannon-coder-1
max_tokens Outputbudgettet. På alle modeller fastsætter det det beløb, der reserveres fra din saldo. Som grænse for svarets længde: hostede open-weight-modeller, shannon-1.6-*, shannon-coder-1

Chat Completions

Hvis du kommer fra et OpenAI-SDK

  • Sæt base-URL'en til https://api.shannon-ai.com/v1 og nøglen til din Shannon-nøgle. Kald til Chat Completions og Responses virker så med SDK'et, som det er.
  • model skal være et Shannon-id. Et modelnavn fra en anden udbyder, f.eks. gpt-4o, besvares med 400 og unknown model.
  • Ræsonnement kommer i et felt for sig: reasoning_content ved siden af content, i beskeden og i stream-deltaerne.
  • En stream har altid usage i sit sidste chunk sammen med finish_reason.
  • Et værktøjskald i en stream ankommer som ét chunk med den komplette arguments-streng.
  • Et svar har ét valg.
  • Stier i OpenAI API'et, der ikke står i tabellen ovenfor, f.eks. /v1/embeddings, besvares med 404.

Hvis du kommer fra et Anthropic-SDK

  • Sæt base-URL'en til https://api.shannon-ai.com, uden /v1, og nøglen til din Shannon-nøgle. SDK'et sender den som x-api-key.
  • model skal være et Shannon-id.
  • max_tokens er valgfri i dette API. Standardværdien er 4,096.
  • Et svar indeholder indholdsblokke af typen thinking, text og tool_use. Den første blok er ikke altid teksten: vælg blokke efter type.
  • stop_reason er end_turn eller tool_use. En stream fra en Shannon-model kan også slutte med max_tokens.
  • anthropic-version og anthropic-beta accepteres, så SDK'et virker uændret. En anmodning behøver dem ikke.
  • Fejl på /v1/messages har Anthropic-formen: {"type": "error", "error": {…}}.

Kodeværktøjer, der taler disse formater, sættes op på samme måde: base-URL, nøgle og et Shannon-id som model. CLI-kodeværktøjer