Przejdź do treści
Przegląd

Przegląd

Mapa API: każdy endpoint, jak wyglądają zapytanie i błąd, jak płaci się za wywołania i co warto wiedzieć, gdy przychodzisz z SDK OpenAI lub Anthropic.

Endpointy

Każdy endpoint znajduje się pod jednym base URL i jest obsługiwany przez HTTPS.

Base URL
https://api.shannon-ai.com
Endpoint Format Do czego służy
POST /v1/chat/completions OpenAI Chat Completions Wyślij rozmowę, otrzymaj następną odpowiedź. Ze streamingiem lub bez.
POST /v1/messages Anthropic Messages To samo, w kształtach zapytania i odpowiedzi z SDK Anthropic.
POST /v1/responses OpenAI Responses To samo, w kształtach Responses. Endpoint nie przechowuje stanu: wysyłaj rozmowę z każdym zapytaniem.
GET /v1/models Lista modeli OpenAI Wyświetl modele z oknem kontekstu, cenami i możliwościami. Nie wymaga klucza.
POST /v1/tokenize Shannon API Policz tokeny tekstu lub zapytania czatu dla hostowanego modelu open-weight. Bezpłatne.
POST /v1/messages/count_tokens Liczenie tokenów Anthropic Policz tokeny wejścia zapytania Messages dla hostowanego modelu open-weight. Bezpłatne.

Trzy endpointy generujące tekst docierają do tych samych modeli. Wybierz ten, którego formatu już używa Twój kod.

Podstawy zapytań

Nagłówek Opis
Authorization: Bearer <key> Twój klucz API. Wymagany w każdym endpoincie poza GET /v1/models, chyba że wysyłasz x-api-key.
x-api-key: <key> Ten sam klucz w nagłówku, który wysyłają SDK Anthropic. Czytany w każdym endpoincie.
Content-Type: application/json Wymagany w każdym POST. Bez niego odpowiedź to 415.
x-request-id: <your id> Opcjonalny. Twoje własne id zapytania; wraca w nagłówku odpowiedzi x-request-id. Bez niego API tworzy id z 12 znaków szesnastkowych.
  • Treść każdego POST to jeden obiekt JSON, do 32 MiB.
  • Pole, którego API nie zna, nie powoduje błędu i nie ma żadnego skutku. Zapytanie napisane dla innego dostawcy nie kończy się niepowodzeniem z powodu dodatkowego pola.
  • Znane pole z błędnym typem JSON albo brakujące wymagane pole dostaje odpowiedź 422. Treść, która nie jest poprawnym JSON, dostaje odpowiedź 400.
  • model to jedno z id na stronie Models & pricing. Wielkość liter nie ma znaczenia.

Odpowiedź to JSON albo stream server-sent events, gdy zapytanie ustawia stream na true. Każdy endpoint odpowiada we własnym formacie. Każda odpowiedź ma nagłówek x-request-id.

Co zapytanie przechodzi

Zapytanie jest sprawdzane w stałej kolejności, zanim ruszy model. Odpowiada pierwsza kontrola, która się nie powiedzie, więc 401 nic jeszcze nie mówi o treści.

Kształt błędu

Błąd to obiekt JSON z polem error, które zawiera type i message. /v1/messages opakowuje go tak, jak oczekują SDK Anthropic; każda inna ścieżka używa kształtu OpenAI.

{
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: gpt-4o"
  }
}
  • Czytaj type i message. code i param występują tylko w niektórych błędach: traktuj je jako opcjonalne. param ma zawsze wartość null.
  • Po rozpoczęciu streamu status to już 200. Awaria przychodzi wtedy jako ramka błędu wewnątrz streamu.
  • Każda odpowiedź z błędem zawiera nagłówek x-request-id.
Status Typ Kiedy
400 invalid_request_error Treść nie jest poprawnym JSON, id modelu jest nieznane albo model nie przyjmuje rodzaju danych, który wysłano.
401 authentication_error Brakuje klucza albo jest nieprawidłowy.
404 not_found_error Ścieżka nie istnieje.
405 api_error Ścieżka istnieje, metoda jest błędna.
413 invalid_request_error Treść jest większa niż 32 MiB.
415 invalid_request_error Content-Type nie jest application/json.
422 invalid_request_error Pole ma błędny typ JSON albo brakuje wymaganego pola.
429 rate_limit_error Saldo nie pokrywa zapytania, w ciągu minuty nadeszło ponad 120 zapytań, wywołania Shannon Coder z okna zostały wyczerpane albo model jest zajęty. Komunikat podaje, który z tych przypadków zaszedł.
5xx api_error Status 500, 502, 503 lub 504: zapytanie było poprawne, ale nie dało się na nie odpowiedzieć. Wyślij je ponownie. 500 może mieć typ server_error.

Obsługa błędów

Rozliczenia i saldo

  • Na konto przypada jedno saldo, które współdzielą czat i API: najpierw dzisiejszy limit planu, potem zakupione środki. API nie ma własnego limitu.
  • Zapytanie rezerwuje swój budżet wyjścia (max_tokens, domyślnie 4,096), a potem jest rozliczane za tokeny, które naprawdę zużyło, po cenie modelu.
  • Każda odpowiedź podaje liczbę tokenów w usage. Strona Keys & usage pokazuje saldo i koszt każdego zapytania.
  • Każde zapytanie jest obsługiwane jednakowo. Jedynym limitem tempa zapytań jest ochrona przed floodem: 120 zapytań na minutę na konto. Zapytania wysłane równolegle czekają w kolejce.

Limity i saldo Modele i ceny Keys & usage

Pola zależne od modelu

Każdy model przyjmuje to samo zapytanie. Kilka pól działa tylko w niektórych modelach; tabela podaje, w których. Strony endpointów wymieniają wszystkie pola.

Pole Opis Stosowane przez
system Instrukcje dla modelu: wiadomość system w Chat Completions, system w Messages, instructions w Responses. Hostowane modele open-weight, shannon-1.6-*, shannon-2-*, shannon-coder-1
temperature Temperatura próbkowania. Hostowane modele open-weight, shannon-1.6-*, shannon-coder-1
top_p Próbkowanie nucleus. Hostowane modele open-weight
seed Stałe ziarno (seed) losowania. Hostowane modele open-weight
stop Do 4 sekwencji zatrzymania. Hostowane modele open-weight
reasoning_effort Jak bardzo model wnioskuje, zanim odpowie. reasoning.effort w Responses, thinking w Messages. Hostowane modele open-weight
web_search true pozwala modelowi przeszukać sieć na potrzeby tego zapytania. Pole tego API, w Chat Completions i Messages. Modele Shannon z wyjątkiem shannon-coder-1
max_tokens Budżet wyjścia. W każdym modelu ustala kwotę rezerwowaną z Twojego salda. Jako limit długości odpowiedzi: hostowane modele open-weight, shannon-1.6-*, shannon-coder-1

Chat Completions

Jeśli przychodzisz z SDK OpenAI

  • Ustaw base URL na https://api.shannon-ai.com/v1, a klucz na swój klucz Shannon. Wywołania Chat Completions i Responses działają wtedy z SDK bez zmian.
  • model musi być id Shannon. Nazwa modelu innego dostawcy, na przykład gpt-4o, dostaje odpowiedź 400 i unknown model.
  • Wnioskowanie ma własne pole: reasoning_content obok content, w wiadomości i w deltach streamu.
  • Stream zawsze przekazuje usage w ostatnim chunku, razem z finish_reason.
  • Wywołanie narzędzia w streamie przychodzi jako jeden chunk z kompletnym ciągiem arguments.
  • Odpowiedź ma jeden choice.
  • Ścieżki API OpenAI, których nie ma w tabeli powyżej, takie jak /v1/embeddings, dostają odpowiedź 404.

Jeśli przychodzisz z SDK Anthropic

  • Ustaw base URL na https://api.shannon-ai.com, bez /v1, a klucz na swój klucz Shannon. SDK wysyła go jako x-api-key.
  • model musi być id Shannon.
  • max_tokens jest w tym API opcjonalne. Jego wartość domyślna to 4,096.
  • Odpowiedź zawiera bloki treści typu thinking, text i tool_use. Pierwszy blok nie zawsze jest tekstem: wybieraj bloki według type.
  • stop_reason to end_turn lub tool_use. Stream modelu Shannon może też skończyć się wartością max_tokens.
  • anthropic-version i anthropic-beta są akceptowane, więc SDK działa bez zmian. Zapytanie ich nie potrzebuje.
  • Błędy w /v1/messages mają kształt Anthropic: {"type": "error", "error": {…}}.

Narzędzia do kodowania, które mówią tymi formatami, konfiguruje się tak samo: base URL, klucz i id Shannon jako model. Narzędzia CLI do programowania