Áttekintés
Az API térképe: minden végpont, milyen egy kérés és egy hiba, hogyan fizetsz a hívásokért, és mit érdemes tudni, ha OpenAI vagy Anthropic SDK-ból érkezel.
Végpontok
Minden végpont egyetlen alap URL alatt van, és HTTPS-en szolgál ki.
https://api.shannon-ai.com | Végpont | Formátum | Mire való |
|---|---|---|
POST /v1/chat/completions | OpenAI Chat Completions | Beszélgetést küldesz, a következő választ kapod. Streaminggel vagy anélkül. |
POST /v1/messages | Anthropic Messages | Ugyanez, az Anthropic SDK-k kérés- és válaszformájában. |
POST /v1/responses | OpenAI Responses | Ugyanez, a Responses formáiban. A végpont nem tart fenn állapotot: minden kéréssel küldd el a beszélgetést. |
GET /v1/models | OpenAI modellista | Felsorolja a modelleket kontextusablakkal, árakkal és képességekkel. Nem kér kulcsot. |
POST /v1/tokenize | Shannon API | Megszámolja egy szöveg vagy egy chatkérés tokenjeit hosztolt nyílt súlyú modellhez. Ingyenes. |
POST /v1/messages/count_tokens | Anthropic tokenszámlálás | Egy Messages kérés bemeneti tokenjeit számolja meg hosztolt nyílt súlyú modellhez. Ingyenes. |
A szöveget előállító három végpont ugyanazokat a modelleket éri el. Azt válaszd, amelynek a formátumát a kódod már használja.
A kérések alapjai
| Fejléc | Leírás |
|---|---|
Authorization: Bearer <key> | Az API-kulcsod. Minden végponton kötelező, a GET /v1/models kivételével, hacsak nem x-api-key fejlécet küldesz. |
x-api-key: <key> | Ugyanaz a kulcs abban a fejlécben, amelyet az Anthropic SDK-k küldenek. Minden végponton olvassa. |
Content-Type: application/json | Minden POST kérésnél kötelező. Nélküle a válasz 415. |
x-request-id: <your id> | Opcionális. A kérés saját azonosítója; az x-request-id válaszfejlécben tér vissza. Nélküle az API 12 hexadecimális karakterből álló azonosítót hoz létre. |
- Minden
POSTtörzse egyetlen JSON-objektum, legfeljebb 32 MiB. - Az API által nem ismert mező nem okoz hibát, és nincs hatása. Egy másik szolgáltatóhoz írt kérés nem hibázik egy többletmező miatt.
- A hibás JSON-típusú ismert mezőre vagy a hiányzó kötelező mezőre
422a válasz. A nem érvényes JSON törzsre400a válasz. - A
modela Models & pricing oldalon szereplő azonosítók egyike. A kis- és nagybetű nem számít.
A válasz JSON, vagy server-sent eventek streamje, ha a kérés a stream mezőt true értékre állítja. Minden végpont a saját formátumában válaszol. Minden válasz tartalmazza az x-request-id fejlécet.
Min megy át a kérés
A kérést a modell futása előtt rögzített sorrendben ellenőrzi. Az első sikertelen ellenőrzés válaszol, ezért a 401 még nem árul el semmit a törzsről.
| Ellenőrzés, ebben a sorrendben | Státusz hiba esetén |
|---|---|
| API-kulcs | 401 |
| Törzs: méret, tartalomtípus, JSON, mezőtípusok | 413 · 415 · 400 · 422 |
| Modellazonosító | 400 |
| Flood protection: fiókonként percenként 120 kérés | 429 |
| Egyenleg: a kérés kimeneti keretének bele kell férnie | 429 |
A hiba alakja
A hiba egy JSON-objektum, amelynek error mezője type és message értéket tartalmaz. A /v1/messages úgy csomagolja be, ahogy az Anthropic SDK-k várják; minden más útvonal az OpenAI formát használja.
{
"error": {
"type": "invalid_request_error",
"message": "unknown model: gpt-4o"
}
} {
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "unknown model: gpt-4o"
}
} - Olvasd a
typeés amessagemezőt. Acodeés aparamcsak egyes hibáknál van jelen: kezeld őket opcionálisként. Aparammindignull. - A stream megkezdése után a státusz már
200. A hiba ekkor hibaframe-ként érkezik a streamen belül. - Minden hibaválasz hordozza az
x-request-idfejlécet.
| Státusz | Típus | Mikor |
|---|---|---|
400 | invalid_request_error | A törzs nem érvényes JSON, a modellazonosító ismeretlen, vagy a modell nem fogadja el az általad küldött bemenetfajtát. |
401 | authentication_error | A kulcs hiányzik, vagy nem érvényes. |
404 | not_found_error | Az útvonal nem létezik. |
405 | api_error | Az útvonal létezik, a metódus hibás. |
413 | invalid_request_error | A törzs nagyobb 32 MiB-nál. |
415 | invalid_request_error | A Content-Type nem application/json. |
422 | invalid_request_error | Egy mező JSON-típusa hibás, vagy egy kötelező mező hiányzik. |
429 | rate_limit_error | Az egyenleg nem fedezi a kérést, egy perc alatt több mint 120 kérés érkezett, az ablak Shannon Coder hívásai elfogytak, vagy a modell foglalt. Az üzenet megmondja, melyik. |
5xx | api_error | 500, 502, 503 vagy 504 státusz: a kérés érvényes volt, de nem lehetett megválaszolni. Küldd el újra. A 500 hordozhatja a server_error típust. |
Számlázás és egyenleg
- Fiókonként egy egyenleg van, a chat és az API közösen használja: először a mai csomagkeretet, utána a vásárolt kreditet. Az API-nak nincs saját kvótája.
- A kérés lefoglalja a kimeneti keretét (
max_tokens, alapérték 4,096), majd a ténylegesen felhasznált tokenek után számláz a modell árán. - Minden válasz a
usagemezőben jelzi a tokenszámait. A Keys & usage oldal megmutatja az egyenleget és azt, hogy mibe került az egyes kérés. - Minden kérést egyformán szolgálunk ki. A kérések gyakoriságának egyetlen korlátja a flood protection: fiókonként percenként 120 kérés. A párhuzamosan küldött kérések sorban várnak.
Korlátok és egyenleg Modellek és árak Keys & usage
A modelltől függő mezők
Minden modell ugyanazt a kérést fogadja. Néhány mező csak egyes modelleken érvényesül; a táblázat megnevezi, hol. A végpontoldalak minden mezőt felsorolnak.
| Mező | Leírás | Alkalmazza |
|---|---|---|
system | Utasítások a modellnek: system üzenet a Chat Completions, system a Messages, instructions a Responses végponton. | Hosztolt nyílt súlyú modellek, shannon-1.6-*, shannon-2-*, shannon-coder-1 |
temperature | Mintavételezési hőmérséklet. | Hosztolt nyílt súlyú modellek, shannon-1.6-*, shannon-coder-1 |
top_p | Nucleus mintavételezés. | Hosztolt nyílt súlyú modellek |
seed | Fix seed a mintavételezéshez. | Hosztolt nyílt súlyú modellek |
stop | Legfeljebb 4 leállító sorozat. | Hosztolt nyílt súlyú modellek |
reasoning_effort | Mennyit gondolkodik (reasoning) a modell a válasz előtt. reasoning.effort a Responses, thinking a Messages végponton. | Hosztolt nyílt súlyú modellek |
web_search | A true engedi, hogy a modell ehhez a kéréshez keressen a weben. Ennek az API-nak a mezője, a Chat Completions és a Messages végponton. | A Shannon modellek a shannon-coder-1 kivételével |
max_tokens | A kimeneti keret. Minden modellnél ez szabja meg az egyenlegedből lefoglalt mennyiséget. | A válasz hosszának korlátjaként: hosztolt nyílt súlyú modellek, shannon-1.6-*, shannon-coder-1 |
Ha OpenAI SDK-ból érkezel
- Állítsd az alap URL-t
https://api.shannon-ai.com/v1értékre, a kulcsot pedig a Shannon-kulcsodra. A Chat Completions és a Responses hívások ezután az SDK-val módosítás nélkül működnek. - A
modelértéke csak Shannon azonosító lehet. Egy másik szolgáltató modellnevére, például agpt-4o-ra,400ésunknown modela válasz. - A gondolkodás (reasoning) külön mezőben érkezik:
reasoning_contentacontentmellett, az üzenetben és a stream deltáiban. - A stream az utolsó chunkjában mindig hordozza a
usagemezőt, afinish_reasonmellett. - Az eszközhívás streamben egyetlen chunkként érkezik, a teljes
argumentsstringgel. - A válasz egy choice-t tartalmaz.
- Az OpenAI API azon útvonalaira, amelyek nincsenek a fenti táblázatban, például a
/v1/embeddingsútvonalra,404a válasz.
Ha Anthropic SDK-ból érkezel
- Állítsd az alap URL-t
https://api.shannon-ai.comértékre,/v1nélkül, a kulcsot pedig a Shannon-kulcsodra. Az SDKx-api-keyfejlécként küldi. - A
modelértéke csak Shannon azonosító lehet. - A
max_tokensezen az API-n opcionális. Az alapértéke 4,096. - A válasz
thinking,textéstool_usetípusú tartalmi blokkokat tartalmaz. Az első blokk nem mindig a szöveg: a blokkokattypeszerint válaszd ki. - A
stop_reasonértékeend_turnvagytool_use. Shannon modell streamjemax_tokensértékkel is végződhet. - Az
anthropic-versionés azanthropic-betafejlécet elfogadja, így az SDK változtatás nélkül működik. A kérésnek nincs rájuk szüksége. - A
/v1/messageshibái Anthropic-alakúak:{"type": "error", "error": {…}}.
Az ilyen formátumokat beszélő kódoló eszközöket ugyanígy kell beállítani: alap URL, kulcs és egy Shannon azonosító modellként. CLI kódoló eszközök