Salta al contingut
Visió general

Visió general

El mapa de l'API: cada endpoint, com són una sol·licitud i un error, com es paguen les crides i què cal saber quan véns d'un SDK d'OpenAI o d'Anthropic.

Endpoints

Tots els endpoints són sota una sola URL base i se serveixen per HTTPS.

URL base
https://api.shannon-ai.com
Endpoint Format Per a què serveix
POST /v1/chat/completions OpenAI Chat Completions Envia una conversa i obtén la resposta següent. Amb streaming o sense.
POST /v1/messages Anthropic Messages El mateix, amb les formes de sol·licitud i de resposta dels SDK d'Anthropic.
POST /v1/responses OpenAI Responses El mateix, amb les formes de Responses. L'endpoint no guarda cap estat: envia la conversa amb cada sol·licitud.
GET /v1/models Llista de models d'OpenAI Llista els models amb finestra de context, preus i capacitats. No necessita clau.
POST /v1/tokenize API Shannon Compta els tokens d'un text o d'una sol·licitud de xat per a un model open-weight hostejat. Gratuït.
POST /v1/messages/count_tokens Recompte de tokens d'Anthropic Compta els tokens d'entrada d'una sol·licitud Messages per a un model open-weight hostejat. Gratuït.

Els tres endpoints que produeixen text arriben als mateixos models. Tria el que té el format que el teu codi ja fa servir.

Bases de les sol·licituds

Capçalera Descripció
Authorization: Bearer <key> La teva clau API. Obligatòria a tots els endpoints excepte GET /v1/models, tret que enviïs x-api-key.
x-api-key: <key> La mateixa clau a la capçalera que envien els SDK d'Anthropic. Es llegeix a tots els endpoints.
Content-Type: application/json Obligatòria a cada POST. Sense ella la resposta és 415.
x-request-id: <your id> Opcional. El teu propi id per a la sol·licitud; torna a la capçalera de resposta x-request-id. Sense ell l'API en crea un de 12 caràcters hexadecimals.
  • El cos de cada POST és un sol objecte JSON, de fins a 32 MiB.
  • Un camp que l'API no coneix no causa cap error ni té cap efecte. Una sol·licitud escrita per a un altre proveïdor no falla per un camp de més.
  • Un camp conegut amb un tipus JSON incorrecte, o un camp obligatori que falta, es respon amb 422. Un cos que no és JSON vàlid es respon amb 400.
  • model és un dels ids de Models i preus. Les majúscules i les minúscules no importen.

Una resposta és JSON, o un stream de server-sent events quan la sol·licitud posa stream a true. Cada endpoint respon en el seu propi format. Cada resposta té la capçalera x-request-id.

Què supera una sol·licitud

Una sol·licitud es comprova en un ordre fix abans que s'executi un model. La primera comprovació que falla és la que respon, així que un 401 encara no et diu res del cos.

Forma dels errors

Un error és un objecte JSON amb un error que conté type i message. /v1/messages l'embolcalla de la manera que esperen els SDK d'Anthropic; tots els altres camins fan servir la forma d'OpenAI.

{
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: gpt-4o"
  }
}
  • Llegeix type i message. code i param només hi són en alguns errors: tracta'ls com a opcionals. param és sempre null.
  • Quan un stream ha començat, l'estat ja és 200. Un error llavors arriba com a frame d'error dins del stream.
  • Cada resposta d'error porta la capçalera x-request-id.
Estat Tipus Quan
400 invalid_request_error El cos no és JSON vàlid, l'id del model és desconegut, o el model no accepta un tipus d'entrada que has enviat.
401 authentication_error Falta la clau o no és vàlida.
404 not_found_error El camí no existeix.
405 api_error El camí existeix, però el mètode és incorrecte.
413 invalid_request_error El cos és més gran que 32 MiB.
415 invalid_request_error Content-Type no és application/json.
422 invalid_request_error Un camp té un tipus JSON incorrecte o falta un camp obligatori.
429 rate_limit_error El saldo no cobreix la sol·licitud, han arribat més de 120 sol·licituds en un minut, s'han esgotat les crides de Shannon Coder de la finestra, o el model està ocupat. El missatge indica quin és el cas.
5xx api_error Estat 500, 502, 503 o 504: la sol·licitud era vàlida i no s'ha pogut respondre. Torna-la a enviar. Un 500 pot portar el tipus server_error.

Gestió d’errors

Facturació i saldo

  • Hi ha un saldo per compte, i el xat i l'API el comparteixen: primer la quota del pla d'avui, després el crèdit comprat. L'API no té quota pròpia.
  • Una sol·licitud reserva el seu pressupost de sortida (max_tokens, per defecte 4,096) i després es cobra pels tokens que ha fet servir de debò, al preu del model.
  • Cada resposta informa dels seus recomptes de tokens a usage. La pàgina Keys & usage mostra el saldo i el que ha costat cada sol·licitud.
  • Totes les sol·licituds s'atenen per igual. L'únic límit de freqüència de sol·licituds és la protecció contra inundació: 120 sol·licituds per minut per compte. Les sol·licituds enviades en paral·lel esperen a la cua.

Límits i saldo Models i preus Keys & usage

Camps que depenen del model

Tots els models accepten la mateixa sol·licitud. Uns quants camps només tenen efecte en alguns models; la taula indica en quins. Les pàgines dels endpoints llisten tots els camps.

Camp Descripció S'aplica a
system Instruccions per al model: un missatge system a Chat Completions, system a Messages, instructions a Responses. Models open-weight hostejats, shannon-1.6-*, shannon-2-*, shannon-coder-1
temperature Temperatura de mostreig. Models open-weight hostejats, shannon-1.6-*, shannon-coder-1
top_p Mostreig de nucli. Models open-weight hostejats
seed Una llavor fixa per al mostreig. Models open-weight hostejats
stop Fins a 4 seqüències d'aturada. Models open-weight hostejats
reasoning_effort Quant raona el model abans de respondre. reasoning.effort a Responses, thinking a Messages. Models open-weight hostejats
web_search true deixa que el model cerqui a la web per a aquesta sol·licitud. Un camp d'aquesta API, a Chat Completions i Messages. Models Shannon excepte shannon-coder-1
max_tokens El pressupost de sortida. A tots els models fixa la quantitat reservada del teu saldo. Com a límit de la longitud de la resposta: models open-weight hostejats, shannon-1.6-*, shannon-coder-1

Chat Completions

Si véns d'un SDK d'OpenAI

  • Defineix la URL base com a https://api.shannon-ai.com/v1 i la clau com la teva clau Shannon. Les crides a Chat Completions i Responses funcionen llavors amb l'SDK tal com és.
  • model ha de ser un id Shannon. Un nom de model d'un altre proveïdor, com gpt-4o, es respon amb 400 i unknown model.
  • El raonament arriba en un camp propi: reasoning_content al costat de content, al missatge i als deltas del stream.
  • Un stream porta sempre usage en el seu últim fragment, juntament amb finish_reason.
  • Una crida d'eina en un stream arriba com un sol fragment amb la cadena arguments completa.
  • Una resposta té una sola opció (choice).
  • Els camins de l'API d'OpenAI que no són a la taula de dalt, com /v1/embeddings, es responen amb 404.

Si véns d'un SDK d'Anthropic

  • Defineix la URL base com a https://api.shannon-ai.com, sense /v1, i la clau com la teva clau Shannon. L'SDK l'envia com a x-api-key.
  • model ha de ser un id Shannon.
  • max_tokens és opcional en aquesta API. El valor per defecte és 4,096.
  • Una resposta conté blocs de contingut dels tipus thinking, text i tool_use. El primer bloc no sempre és el text: tria els blocs per type.
  • stop_reason és end_turn o tool_use. Un stream d'un model Shannon també pot acabar amb max_tokens.
  • anthropic-version i anthropic-beta s'accepten, de manera que l'SDK funciona sense canvis. Una sol·licitud no els necessita.
  • Els errors a /v1/messages tenen la forma d'Anthropic: {"type": "error", "error": {…}}.

Les eines de programació que parlen aquests formats es configuren igual: URL base, clau i un id Shannon com a model. Eines de programació CLI