Authenticatio
Quaeque petitio clavem tuam API in header fert. Una clavis per rationem ad omne endpoint et omne modellum valet, in alterutra ex duabus formis header.
Header · SDK OpenAI
Authorization: Bearer YOUR_API_KEY Header · SDK Anthropic
x-api-key: YOUR_API_KEY Headers accepti
Ambo headers in omni endpoint /v1 leguntur, quamcumque formam endpoint loquitur. Unum ex eis mitte.
| Header | Descriptio |
|---|---|
Authorization: Bearer <key> | Primum inspicitur. Bearer cum B maiuscula et uno spatio ante clavem scribe. SDK OpenAI hunc header mittunt. |
x-api-key: <key> | Legitur cum petitio header Authorization: Bearer non habet. SDK Anthropic hunc header mittunt. |
Cum SDK OpenAI, clavem et URL basim pone; SDK Authorization: Bearer mittit.
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) import OpenAI from 'openai';
const client = new OpenAI({
apiKey: 'YOUR_API_KEY',
baseURL: 'https://api.shannon-ai.com/v1'
});
const response = await client.chat.completions.create({
model: 'shannon-3',
messages: [
{ role: 'user', content: 'Hello, Shannon!' }
]
});
console.log(response.choices[0].message.content); curl -X POST "https://api.shannon-ai.com/v1/chat/completions" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "shannon-3",
"messages": [
{"role": "user", "content": "Hello, Shannon!"}
]
}' Cum SDK Anthropic, clavem et URL basim sine /v1 pone; SDK x-api-key mittit.
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")) import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic({
apiKey: 'YOUR_API_KEY',
baseURL: 'https://api.shannon-ai.com'
});
const message = await client.messages.create({
model: 'shannon-3',
max_tokens: 1024,
messages: [
{ role: 'user', content: 'Hello, Shannon!' }
]
});
console.log(message.content.filter((block) => block.type === 'text').map((block) => block.text).join('')); curl -X POST "https://api.shannon-ai.com/v1/messages" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "shannon-3",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Hello, Shannon!"}
]
}' Quae endpoints clavem requirunt
| Endpoint | Clavis |
|---|---|
POST /v1/chat/completions | Requisita |
POST /v1/messages | Requisita |
POST /v1/responses | Requisita |
POST /v1/tokenize | Requisita |
POST /v1/messages/count_tokens | Requisita |
GET /v1/models | Non necessaria |
Clavis tua
- Clavis est
sk-quod sequuntur 43 characteres exA–Z,a–z,0–9,-et_: 46 characteres in summa. - Quaeque ratio unam clavem exacte habet. Creatur cum primum Claves et usus aperis.
- Clavis plenum aditum ad API pro ratione tua dat: omne endpoint, omne modellum et totum saldum.
- Clavis diem exspirationis non habet. Operatur donec eam rotes vel revoces.
Rotare et revocare
Clavem in pagina Claves et usus rotas et revocas. Claves et usus
| Actio | Quid fit |
|---|---|
| Rotare | Nova clavis datur et vetus clavis operari desinit. Nova clavis statim operatur. |
| Revocare | Clavis operari desinit et nulla nova clavis datur. Rota ut iterum clavem operantem habeas. |
- Ambo statim valent: proxima petitio cum clave vetere cum
401respondetur. 60 secunda ut limitem superiorem puta antequam vetus clavis ubique reiciatur. - Omnes clientes rationis eadem clave utuntur, itaque rotatio ad omnes pertingit. Novam clavem in clientes tuos pone statim post rotationem.
- Saldum, usus et defensio inundationis ad rationem pertinent, non ad clavem. Nova clavis cum eodem saldo et eodem numero petitionum pro minuto praesenti pergit.
Errores
Omnis defectus authenticationis statum 401 et genus authentication_error habet. Nuntius casus distinguit.
| Status | Genus | Nuntius | Quando |
|---|---|---|---|
401 | authentication_error | Missing authentication | Petitio nec header Authorization: Bearer nec header x-api-key habet qui a sk- incipit. Hoc etiam est responsum ad bearer minusculis et ad valorem Authorization sine Bearer. |
401 | authentication_error | Invalid API key | Clavis non est clavis praesens rationis: perperam scripta est, revocata est, vel rotatione substituta est. |
{
"error": {
"type": "authentication_error",
"message": "Invalid API key",
"code": "invalid_api_key",
"param": null
}
} {
"type": "error",
"error": {
"type": "authentication_error",
"message": "Invalid API key"
}
} - In omni via praeter
/v1/messagesobjectumerroretiamcode: "invalid_api_key"continet, etiam pro clave absente, etparam: null. - Clavis inspicitur antequam corpus legitur. Petitio sine clave valida
401accipit etiam si corpus eius invalidum vel nimis magnum est. - Valor
Authorization: Bearerqui ask-non incipit ut clavis API non tractatur.401accipit cum nuntio tokenem invalidum vel exspiratum esse.
Navigatra et CORS
- API petitionibus navigatrorum cross-origin solum pro indice certo originum respondet. JavaScript in pagina alterius originis responsa
/v1legere non potest. - API ex servere tuo voca et paginam tuam cum servere tuo colloqui sine. Hoc etiam clavem a fonte paginae removet.
- Codex ex parte servi et instrumenta lineae mandatorum non afficiuntur: haec regula a navigatris solis applicatur.
- Ingressus in shannon-ai.com petitiones
/v1non authenticat. Cookies ibi non leguntur; clavis sola credentiale est. - Pro origine permissa, navigator mittere potest
content-type,authorization,x-api-key,anthropic-version,anthropic-beta,openai-betaetx-request-id, et header responsix-request-idlegere potest.
Clavem tutam servare
- Clavem in servere serva. Noli eam in paginas interretiales, applicationes mobiles vel repositoria publica ponere: quisquis eam tenet totum saldum tuum impendere potest.
- Clavem ex variabili ambitus vel ex repositorio secretorum onera, noli eam in codicem scribere.
- Si clavis effluxisse potest, eam in Claves et usus rota. Vetus clavis statim operari desinit.
- Post effluxum, indicem petitionum in Claves et usus lege. Omnes petitiones quas clavis in ultimis 30 diebus fecit ostendit.