Salta al contingut
Autenticació

Autenticació

Cada sol·licitud porta la teva clau API en una capçalera. Una clau per compte funciona a tots els endpoints i models, en qualsevol de les dues formes de capçalera.

Capçalera · SDK d'OpenAI
Authorization: Bearer YOUR_API_KEY
Capçalera · SDK d'Anthropic
x-api-key: YOUR_API_KEY

Capçaleres acceptades

Les dues capçaleres es llegeixen a cada endpoint de /v1, sigui quin sigui el format que parla l'endpoint. Envia'n una.

Capçalera Descripció
Authorization: Bearer <key> Es comprova primer. Escriu Bearer amb B majúscula i un espai abans de la clau. Els SDK d'OpenAI envien aquesta capçalera.
x-api-key: <key> Es llegeix quan la sol·licitud no té cap capçalera Authorization: Bearer. Els SDK d'Anthropic envien aquesta capçalera.

Amb un SDK d'OpenAI, defineix la clau i la URL base; l'SDK envia Authorization: Bearer.

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.shannon-ai.com/v1"
)

response = client.chat.completions.create(
    model="shannon-3",
    messages=[
        {"role": "user", "content": "Hello, Shannon!"}
    ]
)

print(response.choices[0].message.content)

Amb un SDK d'Anthropic, defineix la clau i la URL base sense /v1; l'SDK envia x-api-key.

import anthropic

client = anthropic.Anthropic(
    api_key="YOUR_API_KEY",
    base_url="https://api.shannon-ai.com"
)

message = client.messages.create(
    model="shannon-3",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "Hello, Shannon!"}
    ]
)

print("".join(block.text for block in message.content if block.type == "text"))

Quins endpoints necessiten una clau

Endpoint Clau
POST /v1/chat/completions Obligatòria
POST /v1/messages Obligatòria
POST /v1/responses Obligatòria
POST /v1/tokenize Obligatòria
POST /v1/messages/count_tokens Obligatòria
GET /v1/models No cal

La teva clau

  • Una clau és sk- seguit de 43 caràcters de A–Z, a–z, 0–9, - i _: 46 caràcters en total.
  • Cada compte té exactament una clau. Es crea la primera vegada que obres Keys & usage.
  • La clau dona accés complet a l'API per al teu compte: tots els endpoints, tots els models i tot el saldo.
  • Una clau no té data de caducitat. Funciona fins que en fas la rotació o la revoques.

Rotació i revocació

Fas la rotació i revoques la clau a la pàgina Keys & usage. Keys & usage

Acció Què passa
Rotació Es genera una clau nova i la clau antiga deixa de funcionar. La clau nova funciona a l'instant.
Revocar La clau deixa de funcionar i no se'n genera cap de nova. Fes la rotació per tornar a tenir una clau que funcioni.
  • Totes dues tenen efecte a l'instant: la propera sol·licitud amb la clau antiga es respon amb 401. Considera 60 segons com a límit superior abans que la clau antiga sigui rebutjada arreu.
  • Tots els clients del compte fan servir la mateixa clau, de manera que una rotació els arriba tots. Posa la clau nova als teus clients just després de fer la rotació.
  • El saldo, l'ús i la protecció contra inundació pertanyen al compte, no a la clau. Una clau nova continua amb el mateix saldo i el mateix recompte de sol·licituds del minut actual.

Errors

Tots els errors d'autenticació tenen l'estat 401 i el tipus authentication_error. El missatge distingeix els casos.

Estat Tipus Missatge Quan
401 authentication_error Missing authentication La sol·licitud no té ni una capçalera Authorization: Bearer ni una capçalera x-api-key que comenci per sk-. Aquesta també és la resposta a bearer en minúscules i a un valor d'Authorization sense Bearer.
401 authentication_error Invalid API key La clau no és la clau actual d'un compte: està mal escrita, s'ha revocat o s'ha substituït per una rotació.
{
  "error": {
    "type": "authentication_error",
    "message": "Invalid API key",
    "code": "invalid_api_key",
    "param": null
  }
}
  • A tots els camins excepte /v1/messages, l'objecte error també conté code: "invalid_api_key", també quan falta la clau, i param: null.
  • La clau es comprova abans de llegir el cos. Una sol·licitud sense una clau vàlida rep 401 encara que el seu cos sigui invàlid o massa gran.
  • Un valor d'Authorization: Bearer que no comença per sk- no es tracta com a clau API. Rep 401 amb un missatge que el token no és vàlid o ha caducat.

Navegadors i CORS

  • L'API respon a sol·licituds de navegador d'origen creuat només per a una llista fixa d'orígens. El JavaScript d'una pàgina d'un altre origen no pot llegir les respostes de /v1.
  • Crida l'API des del teu servidor i deixa que la teva pàgina parli amb el teu servidor. Així també la clau queda fora del codi font de la pàgina.
  • El codi del costat del servidor i les eines de línia d'ordres no es veuen afectats: aquesta regla només l'apliquen els navegadors.
  • Iniciar sessió a shannon-ai.com no autentica les sol·licituds a /v1. Allà no es llegeixen les cookies; la clau és l'única credencial.
  • Per a un origen permès, un navegador pot enviar content-type, authorization, x-api-key, anthropic-version, anthropic-beta, openai-beta i x-request-id, i pot llegir la capçalera de resposta x-request-id.

Com mantenir la clau segura

  • Mantén la clau en un servidor. No la posis en pàgines web, aplicacions mòbils ni repositoris públics: qui la tingui pot gastar tot el teu saldo.
  • Carrega la clau des d'una variable d'entorn o un magatzem de secrets en lloc d'escriure-la al codi.
  • Si la clau pot haver-se filtrat, fes-ne la rotació a Keys & usage. La clau antiga deixa de funcionar a l'instant.
  • Després d'una fuita, llegeix la llista de sol·licituds a Keys & usage. Mostra totes les sol·licituds que la clau ha fet en els darrers 30 dies.