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.
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
POSTer é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 med400. modeler 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.
| Kontrolleres, i denne rækkefølge | Status ved fejl |
|---|---|
| API-nøgle | 401 |
| Body: størrelse, indholdstype, JSON, felttyper | 413 · 415 · 400 · 422 |
| Model-id | 400 |
| Flood protection: 120 anmodninger per minut per konto | 429 |
| Saldo: anmodningens outputbudget skal kunne rummes | 429 |
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"
}
} {
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "unknown model: gpt-4o"
}
} - Læs
typeogmessage.codeogparamfindes kun på nogle fejl: behandl dem som valgfri.paramer altidnull. - 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. |
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 |
Hvis du kommer fra et OpenAI-SDK
- Sæt base-URL'en til
https://api.shannon-ai.com/v1og nøglen til din Shannon-nøgle. Kald til Chat Completions og Responses virker så med SDK'et, som det er. modelskal være et Shannon-id. Et modelnavn fra en anden udbyder, f.eks.gpt-4o, besvares med400ogunknown model.- Ræsonnement kommer i et felt for sig:
reasoning_contentved siden afcontent, i beskeden og i stream-deltaerne. - En stream har altid
usagei sit sidste chunk sammen medfinish_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 med404.
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 somx-api-key. modelskal være et Shannon-id.max_tokenser valgfri i dette API. Standardværdien er 4,096.- Et svar indeholder indholdsblokke af typen
thinking,textogtool_use. Den første blok er ikke altid teksten: vælg blokke eftertype. stop_reasonerend_turnellertool_use. En stream fra en Shannon-model kan også slutte medmax_tokens.anthropic-versionoganthropic-betaaccepteres, så SDK'et virker uændret. En anmodning behøver dem ikke.- Fejl på
/v1/messageshar 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