Sari la conținut
Prezentare generală

Prezentare generală

Harta API-ului: fiecare endpoint, cum arată o cerere și o eroare, cum se plătesc apelurile și ce trebuie să știi când vii de la un SDK OpenAI sau Anthropic.

Endpoint-uri

Fiecare endpoint se află sub un singur base URL și este servit prin HTTPS.

Base URL
https://api.shannon-ai.com
Endpoint Format Pentru ce servește
POST /v1/chat/completions OpenAI Chat Completions Trimiți o conversație, primești următorul răspuns. Cu sau fără streaming.
POST /v1/messages Anthropic Messages La fel, în formele de cerere și răspuns ale SDK-urilor Anthropic.
POST /v1/responses OpenAI Responses La fel, în formele Responses. Endpoint-ul nu păstrează stare: trimite conversația cu fiecare cerere.
GET /v1/models Listă de modele OpenAI Listează modelele cu fereastra de context, prețuri și capabilități. Nu cere cheie.
POST /v1/tokenize Shannon API Numără token-urile unui text sau ale unei cereri de chat pentru un model open-weight găzduit. Gratuit.
POST /v1/messages/count_tokens Numărare de token-uri Anthropic Numără token-urile de intrare ale unei cereri Messages pentru un model open-weight găzduit. Gratuit.

Cele trei endpoint-uri care produc text ajung la aceleași modele. Alege-l pe cel al cărui format îl folosește deja codul tău.

Noțiuni de bază despre cereri

Header Descriere
Authorization: Bearer <key> Cheia ta API. Obligatoriu pe fiecare endpoint, cu excepția GET /v1/models, dacă nu trimiți x-api-key.
x-api-key: <key> Aceeași cheie, în header-ul pe care îl trimit SDK-urile Anthropic. Citit pe fiecare endpoint.
Content-Type: application/json Obligatoriu pe fiecare POST. Fără el, răspunsul este 415.
x-request-id: <your id> Opțional. Propriul tău id pentru cerere; revine în header-ul de răspuns x-request-id. Fără el, API-ul creează unul de 12 caractere hexazecimale.
  • Corpul fiecărui POST este un singur obiect JSON, de până la 32 MiB.
  • Un câmp pe care API-ul nu îl cunoaște nu provoacă eroare și nu are efect. O cerere scrisă pentru alt furnizor nu eșuează din cauza unui câmp în plus.
  • Un câmp cunoscut cu tip JSON greșit sau un câmp obligatoriu lipsă primește răspuns 422. Un corp care nu este JSON valid primește răspuns 400.
  • model este unul dintre id-urile din Models & pricing. Majusculele și minusculele nu contează.

Un răspuns este JSON sau un stream de evenimente trimise de server (server-sent events) când cererea setează stream la true. Fiecare endpoint răspunde în formatul său. Fiecare răspuns are header-ul x-request-id.

Ce verificări trece o cerere

O cerere este verificată într-o ordine fixă înainte de rularea unui model. Prima verificare care eșuează dă răspunsul, deci un 401 nu îți spune încă nimic despre corp.

Forma erorilor

O eroare este un obiect JSON cu un error care conține type și message. /v1/messages îl împachetează cum se așteaptă SDK-urile Anthropic; orice altă cale folosește forma OpenAI.

{
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: gpt-4o"
  }
}
  • Citește type și message. code și param sunt prezente doar la unele erori: tratează-le ca opționale. param este întotdeauna null.
  • După ce un stream a început, statusul este deja 200. Un eșec sosește atunci ca un frame de eroare în interiorul stream-ului.
  • Fiecare răspuns de eroare conține header-ul x-request-id.
Stare Tip Când
400 invalid_request_error Corpul nu este JSON valid, id-ul modelului este necunoscut sau modelul nu acceptă un tip de intrare pe care l-ai trimis.
401 authentication_error Cheia lipsește sau nu este validă.
404 not_found_error Calea nu există.
405 api_error Calea există, metoda este greșită.
413 invalid_request_error Corpul este mai mare de 32 MiB.
415 invalid_request_error Content-Type nu este application/json.
422 invalid_request_error Un câmp are tip JSON greșit sau lipsește un câmp obligatoriu.
429 rate_limit_error Soldul nu acoperă cererea, au sosit mai mult de 120 de cereri într-un minut, apelurile Shannon Coder ale ferestrei sunt epuizate sau modelul este ocupat. Mesajul spune care este cazul.
5xx api_error Status 500, 502, 503 sau 504: cererea a fost validă și nu a putut primi răspuns. Trimite-o din nou. Un 500 poate avea tipul server_error.

Gestionare erori

Facturare și sold

  • Există un singur sold per cont, iar chatul și API-ul îl folosesc împreună: mai întâi cota planului de astăzi, apoi creditul achiziționat. API-ul nu are o cotă proprie.
  • O cerere își rezervă bugetul de ieșire (max_tokens, implicit 4,096) și este apoi taxată pentru token-urile folosite efectiv, la prețul modelului.
  • Fiecare răspuns raportează numărul de token-uri în usage. Pagina Keys & usage arată soldul și cât a costat fiecare cerere.
  • Fiecare cerere este servită egal. Singura limită a ratei cererilor este protecția anti-flood: 120 de cereri pe minut per cont. Cererile trimise în paralel așteaptă la coadă.

Limite și sold Modele și prețuri Chei și utilizare

Câmpuri care depind de model

Fiecare model primește aceeași cerere. Câteva câmpuri au efect doar pe unele modele; tabelul spune care. Paginile endpoint-urilor listează fiecare câmp.

Câmp Descriere Aplicat de
system Instrucțiuni pentru model: un mesaj system pe Chat Completions, system pe Messages, instructions pe Responses. Modele open-weight găzduite, shannon-1.6-*, shannon-2-*, shannon-coder-1
temperature Temperatura de eșantionare. Modele open-weight găzduite, shannon-1.6-*, shannon-coder-1
top_p Eșantionare nucleus. Modele open-weight găzduite
seed Un seed fix pentru eșantionare. Modele open-weight găzduite
stop Până la 4 secvențe de oprire. Modele open-weight găzduite
reasoning_effort Cât raționează modelul înainte de a răspunde. reasoning.effort pe Responses, thinking pe Messages. Modele open-weight găzduite
web_search true permite modelului să caute pe web pentru această cerere. Un câmp al acestui API, pe Chat Completions și Messages. Modelele Shannon, cu excepția shannon-coder-1
max_tokens Bugetul de ieșire. Pe fiecare model stabilește suma rezervată din soldul tău. Ca limită a lungimii răspunsului: modelele open-weight găzduite, shannon-1.6-*, shannon-coder-1

Chat Completions

Dacă vii de la un SDK OpenAI

  • Setează base URL la https://api.shannon-ai.com/v1, iar cheia la cheia ta Shannon. Apelurile Chat Completions și Responses funcționează apoi cu SDK-ul așa cum este.
  • model trebuie să fie un id Shannon. Un nume de model de la alt furnizor, precum gpt-4o, primește răspuns 400 și unknown model.
  • Raționamentul vine într-un câmp propriu: reasoning_content lângă content, în mesaj și în delta-urile stream-ului.
  • Un stream conține întotdeauna usage în ultimul chunk, împreună cu finish_reason.
  • Un apel de instrument într-un stream sosește ca un singur chunk, cu șirul arguments complet.
  • Un răspuns are o singură alegere.
  • Căile API-ului OpenAI care nu sunt în tabelul de mai sus, precum /v1/embeddings, primesc răspuns 404.

Dacă vii de la un SDK Anthropic

  • Setează base URL la https://api.shannon-ai.com, fără /v1, iar cheia la cheia ta Shannon. SDK-ul o trimite ca x-api-key.
  • model trebuie să fie un id Shannon.
  • max_tokens este opțional în acest API. Valoarea sa implicită este 4,096.
  • Un răspuns conține blocuri de conținut de tip thinking, text și tool_use. Primul bloc nu este întotdeauna textul: alege blocurile după type.
  • stop_reason este end_turn sau tool_use. Un stream de la un model Shannon se poate termina și cu max_tokens.
  • anthropic-version și anthropic-beta sunt acceptate, deci SDK-ul funcționează neschimbat. O cerere nu are nevoie de ele.
  • Erorile de pe /v1/messages au forma Anthropic: {"type": "error", "error": {…}}.

Instrumentele de programare care vorbesc aceste formate se configurează la fel: base URL, cheie și un id Shannon ca model. Instrumente CLI pentru programare