Pregled
Karta API-ja: svaki endpoint, kako izgledaju zahtjev i greška, kako se pozivi plaćaju i što trebate znati ako dolazite iz OpenAI ili Anthropic SDK-a.
Endpointi
Svaki endpoint nalazi se pod jednim base URL-om i poslužuje se preko HTTPS-a.
https://api.shannon-ai.com | Endpoint | Format | Za što služi |
|---|---|---|
POST /v1/chat/completions | OpenAI Chat Completions | Pošaljite razgovor, dobijte sljedeći odgovor. Sa streamingom ili bez njega. |
POST /v1/messages | Anthropic Messages | Isto, u oblicima zahtjeva i odgovora Anthropic SDK-ova. |
POST /v1/responses | OpenAI Responses | Isto, u oblicima Responses. Endpoint ne čuva stanje: šaljite razgovor sa svakim zahtjevom. |
GET /v1/models | OpenAI popis modela | Popis modela s kontekstnim prozorom, cijenama i mogućnostima. Ne treba ključ. |
POST /v1/tokenize | Shannon API | Brojite tokene teksta ili chat zahtjeva za hostirani open-weight model. Besplatno. |
POST /v1/messages/count_tokens | Anthropic brojanje tokena | Brojite ulazne tokene zahtjeva Messages za hostirani open-weight model. Besplatno. |
Tri endpointa koja proizvode tekst dosežu iste modele. Odaberite onaj čiji format vaš kod već koristi.
Osnove zahtjeva
| Zaglavlje | Opis |
|---|---|
Authorization: Bearer <key> | Vaš API ključ. Obavezan na svakom endpointu osim GET /v1/models, osim ako šaljete x-api-key. |
x-api-key: <key> | Isti ključ u zaglavlju koje šalju Anthropic SDK-ovi. Čita se na svakom endpointu. |
Content-Type: application/json | Obavezno na svakom POST zahtjevu. Bez njega je odgovor 415. |
x-request-id: <your id> | Neobavezno. Vaš vlastiti id zahtjeva; vraća se u zaglavlju odgovora x-request-id. Bez njega API stvara id od 12 heksadecimalnih znakova. |
- Tijelo svakog
POSTzahtjeva je jedan JSON objekt, do 32 MiB. - Polje koje API ne poznaje ne uzrokuje grešku i nema učinka. Zahtjev napisan za drugog pružatelja ne uspijeva zbog dodatnog polja.
- Na poznato polje s pogrešnim JSON tipom ili na izostavljeno obavezno polje odgovara se s
422. Na tijelo koje nije valjani JSON odgovara se s400. modelje jedan od id-ova na stranici Modeli i cijene. Velika i mala slova nisu važna.
Odgovor je JSON ili stream server-sent događaja kada zahtjev postavi stream na true. Svaki endpoint odgovara u svom formatu. Svaki odgovor ima zaglavlje x-request-id.
Što zahtjev prolazi
Zahtjev se provjerava fiksnim redoslijedom prije nego se pokrene model. Odgovara prva provjera koja ne uspije, pa vam 401 još ništa ne govori o tijelu.
| Provjerava se, ovim redom | Status kada ne uspije |
|---|---|
| API ključ | 401 |
| Tijelo: veličina, tip sadržaja, JSON, tipovi polja | 413 · 415 · 400 · 422 |
| Id modela | 400 |
| Flood protection: 120 zahtjeva u minuti po računu | 429 |
| Stanje: izlazni proračun zahtjeva mora stati | 429 |
Oblik greške
Greška je JSON objekt s poljem error koje sadrži type i message. /v1/messages ga umata onako kako Anthropic SDK-ovi očekuju; svaka druga putanja koristi OpenAI oblik.
{
"error": {
"type": "invalid_request_error",
"message": "unknown model: gpt-4o"
}
} {
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "unknown model: gpt-4o"
}
} - Čitajte
typeimessage.codeiparamprisutni su samo kod nekih grešaka: tretirajte ih kao neobavezne.paramje uvijeknull. - Nakon što stream počne, status je već
200. Greška tada stiže kao okvir greške unutar streama. - Svaki odgovor s greškom nosi zaglavlje
x-request-id.
| Status | Tip | Kada |
|---|---|---|
400 | invalid_request_error | Tijelo nije valjani JSON, id modela je nepoznat ili model ne prima vrstu ulaza koju ste poslali. |
401 | authentication_error | Ključ nedostaje ili nije valjan. |
404 | not_found_error | Putanja ne postoji. |
405 | api_error | Putanja postoji, ali metoda je pogrešna. |
413 | invalid_request_error | Tijelo je veće od 32 MiB. |
415 | invalid_request_error | Content-Type nije application/json. |
422 | invalid_request_error | Polje ima pogrešan JSON tip ili obavezno polje nedostaje. |
429 | rate_limit_error | Stanje ne pokriva zahtjev, u minuti je stiglo više od 120 zahtjeva, Shannon Coder pozivi prozora su potrošeni ili je model zauzet. Poruka kaže što je od toga. |
5xx | api_error | Status 500, 502, 503 ili 504: zahtjev je bio valjan, ali nije mogao biti odgovoren. Pošaljite ga ponovno. 500 može nositi tip server_error. |
Naplata i stanje
- Postoji jedno stanje po računu, a chat i API ga dijele: prvo današnji dopušteni iznos plana, zatim kupljeni kredit. API nema vlastitu kvotu.
- Zahtjev rezervira svoj izlazni proračun (
max_tokens, zadano 4,096), a zatim se naplaćuje za tokene koje je stvarno iskoristio, po cijeni modela. - Svaki odgovor prijavljuje svoje brojeve tokena u
usage. Stranica Ključevi i upotreba prikazuje stanje i koliko je koštao svaki zahtjev. - Svaki zahtjev se poslužuje jednako. Jedino ograničenje učestalosti zahtjeva je flood protection: 120 zahtjeva u minuti po računu. Zahtjevi poslani paralelno čekaju u redu.
Ograničenja i stanje Modeli i cijene Ključevi i upotreba
Polja koja ovise o modelu
Svaki model prima isti zahtjev. Nekoliko polja djeluje samo na nekim modelima; tablica navodi na kojima. Stranice endpointa navode svako polje.
| Polje | Opis | Primjenjuju |
|---|---|---|
system | Upute za model: poruka system na Chat Completions, system na Messages, instructions na Responses. | Hostirani open-weight modeli, shannon-1.6-*, shannon-2-*, shannon-coder-1 |
temperature | Temperatura uzorkovanja. | Hostirani open-weight modeli, shannon-1.6-*, shannon-coder-1 |
top_p | Nucleus uzorkovanje. | Hostirani open-weight modeli |
seed | Fiksni seed za uzorkovanje. | Hostirani open-weight modeli |
stop | Do 4 stop sekvence. | Hostirani open-weight modeli |
reasoning_effort | Koliko model razmišlja prije nego odgovori. reasoning.effort na Responses, thinking na Messages. | Hostirani open-weight modeli |
web_search | true dopušta modelu da za ovaj zahtjev pretražuje web. Polje ovog API-ja, na Chat Completions i Messages. | Shannon modeli osim shannon-coder-1 |
max_tokens | Izlazni proračun. Na svakom modelu određuje iznos rezerviran sa vašeg stanja. | Kao ograničenje duljine odgovora: hostirani open-weight modeli, shannon-1.6-*, shannon-coder-1 |
Dolazite iz OpenAI SDK-a
- Postavite base URL na
https://api.shannon-ai.com/v1, a ključ na svoj Shannon ključ. Pozivi Chat Completions i Responses tada rade sa SDK-om bez izmjena. modelmora biti Shannon id. Na naziv modela drugog pružatelja, poputgpt-4o, odgovara se s400iunknown model.- Razmišljanje dolazi u zasebnom polju:
reasoning_contentpokrajcontent, u poruci i u delta zapisima streama. - Stream uvijek nosi
usageu svom zadnjem chunku, zajedno sfinish_reason. - Poziv alata u streamu stiže kao jedan chunk s potpunim nizom
arguments. - Odgovor ima jedan izbor.
- Na putanje OpenAI API-ja kojih nema u gornjoj tablici, poput
/v1/embeddings, odgovara se s404.
Dolazite iz Anthropic SDK-a
- Postavite base URL na
https://api.shannon-ai.com, bez/v1, a ključ na svoj Shannon ključ. SDK ga šalje kaox-api-key. modelmora biti Shannon id.max_tokensje na ovom API-ju neobavezan. Zadana vrijednost je 4,096.- Odgovor sadrži blokove sadržaja tipa
thinking,textitool_use. Prvi blok nije uvijek tekst: blokove birajte prematype. stop_reasonjeend_turnilitool_use. Stream Shannon modela može završiti i smax_tokens.anthropic-versionianthropic-betase prihvaćaju, pa SDK radi nepromijenjen. Zahtjev ih ne treba.- Greške na
/v1/messagesimaju Anthropic oblik:{"type": "error", "error": {…}}.
Alati za programiranje koji govore ove formate postavljaju se na isti način: base URL, ključ i Shannon id kao model. CLI alati za kodiranje