Ö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.
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 med400. 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.
| Kontrolleras, i denna ordning | Status vid fel |
|---|---|
| API-nyckel | 401 |
| Body: storlek, innehållstyp, JSON, fälttyper | 413 · 415 · 400 · 422 |
| Modell-id | 400 |
| Flood protection: 120 begäranden per minut och konto | 429 |
| Balans: begärans outputbudget måste rymmas | 429 |
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"
}
} {
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "unknown model: gpt-4o"
}
} - Läs
typeochmessage.codeochparamfinns bara på vissa fel: behandla dem som valfria.paramär alltidnull. - 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. |
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 |
Om du kommer från en OpenAI-SDK
- Sätt bas-URL:en till
https://api.shannon-ai.com/v1och nyckeln till din Shannon-nyckel. Anrop till Chat Completions och Responses fungerar då med SDK:n som den är. modelmåste vara ett Shannon-id. Ett modellnamn från en annan leverantör, till exempelgpt-4o, besvaras med400ochunknown model.- Resonemanget kommer i ett eget fält:
reasoning_contentbredvidcontent, i meddelandet och i strömmens deltan. - En ström bär alltid
usagei sin sista chunk, tillsammans medfinish_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 med404.
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 somx-api-key. modelmå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,textochtool_use. Det första blocket är inte alltid texten: välj block eftertype. stop_reasonärend_turnellertool_use. En ström från en Shannon-modell kan också sluta medmax_tokens.anthropic-versionochanthropic-betaaccepteras, så SDK:n fungerar oförändrad. En begäran behöver dem inte.- Fel på
/v1/messageshar 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