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.
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 amb400. 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.
| Es comprova, en aquest ordre | Estat quan falla |
|---|---|
| Clau API | 401 |
| Cos: mida, tipus de contingut, JSON, tipus dels camps | 413 · 415 · 400 · 422 |
| Id del model | 400 |
| Protecció contra inundació: 120 sol·licituds per minut per compte | 429 |
| Saldo: el pressupost de sortida de la sol·licitud hi ha de cabre | 429 |
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"
}
} {
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "unknown model: gpt-4o"
}
} - Llegeix
typeimessage.codeiparamnomés hi són en alguns errors: tracta'ls com a opcionals.paramés semprenull. - 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. |
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 |
Si véns d'un SDK d'OpenAI
- Defineix la URL base com a
https://api.shannon-ai.com/v1i la clau com la teva clau Shannon. Les crides a Chat Completions i Responses funcionen llavors amb l'SDK tal com és. modelha de ser un id Shannon. Un nom de model d'un altre proveïdor, comgpt-4o, es respon amb400iunknown model.- El raonament arriba en un camp propi:
reasoning_contental costat decontent, al missatge i als deltas del stream. - Un stream porta sempre
usageen el seu últim fragment, juntament ambfinish_reason. - Una crida d'eina en un stream arriba com un sol fragment amb la cadena
argumentscompleta. - 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 amb404.
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 ax-api-key. modelha 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,textitool_use. El primer bloc no sempre és el text: tria els blocs pertype. stop_reasonésend_turnotool_use. Un stream d'un model Shannon també pot acabar ambmax_tokens.anthropic-versionianthropic-betas'accepten, de manera que l'SDK funciona sense canvis. Una sol·licitud no els necessita.- Els errors a
/v1/messagestenen 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