Awtentikazzjoni
Kull talba ġġorr iċ-ċavetta tal-API tiegħek f'header. Ċavetta waħda għal kull kont taħdem fuq kull endpoint u kull mudell, f'waħda miż-żewġ forom ta' header.
Header · SDKs ta' OpenAI
Authorization: Bearer YOUR_API_KEY Header · SDKs ta' Anthropic
x-api-key: YOUR_API_KEY Headers aċċettati
Iż-żewġ headers jinqraw fuq kull endpoint /v1, ikun xi jkun il-format li jitkellem l-endpoint. Ibgħat wieħed minnhom.
| Header | Deskrizzjoni |
|---|---|
Authorization: Bearer <key> | Jiġi vverifikat l-ewwel. Ikteb Bearer b'B kbira u spazju wieħed qabel iċ-ċavetta. L-SDKs ta' OpenAI jibagħtu dan l-header. |
x-api-key: <key> | Jinqara meta t-talba m'għandhiex header Authorization: Bearer. L-SDKs ta' Anthropic jibagħtu dan l-header. |
B'SDK ta' OpenAI, issettja ċ-ċavetta u l-base URL; l-SDK jibgħat 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) 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!"}
]
}' B'SDK ta' Anthropic, issettja ċ-ċavetta u l-base URL mingħajr /v1; l-SDK jibgħat 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")) 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!"}
]
}' Liema endpoints jeħtieġu ċavetta
| Endpoint | Ċavetta |
|---|---|
POST /v1/chat/completions | Meħtieġa |
POST /v1/messages | Meħtieġa |
POST /v1/responses | Meħtieġa |
POST /v1/tokenize | Meħtieġa |
POST /v1/messages/count_tokens | Meħtieġa |
GET /v1/models | Mhux meħtieġa |
Iċ-ċavetta tiegħek
- Ċavetta hija
sk-segwita minn 43 karattru minnA–Z,a–z,0–9,-u_: 46 karattru b'kollox. - Kull kont għandu ċavetta waħda biss. Tinħoloq l-ewwel darba li tiftaħ Ċwievet u użu.
- Iċ-ċavetta tagħti aċċess sħiħ għall-API għall-kont tiegħek: kull endpoint, kull mudell u l-bilanċ kollu.
- Ċavetta m'għandhiex data ta' skadenza. Taħdem sakemm iddawwarha jew tirrevokaha.
Dawwar u irrevoka
Iddawwar u tirrevoka ċ-ċavetta fil-paġna Ċwievet u użu. Ċwievet u użu
| Azzjoni | X'jiġri |
|---|---|
| Iddawwar | Tinħareġ ċavetta ġdida u l-qadima tieqaf taħdem. Iċ-ċavetta l-ġdida taħdem minnufih. |
| Irrevoka | Iċ-ċavetta tieqaf taħdem u ma tinħareġ ebda ċavetta ġdida. Iddawwar biex terġa' tikseb ċavetta li taħdem. |
- It-tnejn jidħlu fis-seħħ minnufih: it-talba li jmiss biċ-ċavetta l-qadima tiġi mwieġba b'
401. Qis 60 sekonda bħala l-limitu massimu qabel ma ċ-ċavetta l-qadima tkun miċħuda kullimkien. - Kull klijent tal-kont juża l-istess ċavetta, għalhekk dawran jaslu għal kollha. Poġġi ċ-ċavetta l-ġdida fil-klijenti tiegħek immedjatament wara li ddawwar.
- Il-bilanċ, l-użu u l-protezzjoni mill-flood jappartjenu lill-kont, mhux liċ-ċavetta. Ċavetta ġdida tkompli bl-istess bilanċ u bl-istess għadd ta' talbiet għall-minuta attwali.
Żbalji
Kull falliment tal-awtentikazzjoni għandu status 401 u tip authentication_error. Il-messaġġ jiddistingwi l-każijiet.
| Status | Tip | Messaġġ | Meta |
|---|---|---|---|
401 | authentication_error | Missing authentication | It-talba m'għandha la header Authorization: Bearer u lanqas header x-api-key li jibda b'sk-. Din hija wkoll it-tweġiba għal bearer b'ittri żgħar u għal valur Authorization mingħajr Bearer. |
401 | authentication_error | Invalid API key | Iċ-ċavetta mhijiex iċ-ċavetta attwali ta' kont: inkitbet ħażin, ġiet irrevokata, jew ġiet sostitwita b'dawran. |
{
"error": {
"type": "authentication_error",
"message": "Invalid API key",
"code": "invalid_api_key",
"param": null
}
} {
"type": "error",
"error": {
"type": "authentication_error",
"message": "Invalid API key"
}
} - Fuq kull path ħlief
/v1/messagesl-oġġetterrorfih ukollcode: "invalid_api_key", anki għal ċavetta nieqsa, uparam: null. - Iċ-ċavetta tiġi vverifikata qabel ma jinqara l-body. Talba mingħajr ċavetta valida tikseb
401anki jekk il-body tagħha jkun invalidu jew kbir wisq. - Valur
Authorization: Bearerli ma jibdiex b'sk-ma jiġix ittrattat bħala ċavetta tal-API. Jikseb401b'messaġġ li t-token huwa invalidu jew skadut.
Browsers u CORS
- L-API iwieġeb talbiet cross-origin tal-browser biss għal lista fissa ta' origins. JavaScript fuq paġna ta' origin ieħor ma jistax jaqra tweġibiet
/v1. - Sejjaħ l-API mis-server tiegħek u ħalli l-paġna tiegħek titkellem mas-server tiegħek. Dan iżomm ukoll iċ-ċavetta barra mis-sors tal-paġna.
- Il-kodiċi fuq is-server u t-tools tal-linja tal-kmand mhumiex affettwati: din ir-regola tiġi applikata mill-browsers biss.
- Dħul fuq shannon-ai.com ma jawtentikax talbiet
/v1. Il-cookies ma jinqrawx hemm; iċ-ċavetta hija l-unika kredenzjali. - Għal origin permess, browser jista' jibgħat
content-type,authorization,x-api-key,anthropic-version,anthropic-beta,openai-betaux-request-id, u jista' jaqra l-header tat-tweġibax-request-id.
Kif iżżomm iċ-ċavetta sikura
- Żomm iċ-ċavetta fuq server. Tpoġġihiex f'paġni web, f'apps mobbli jew f'repositories pubbliċi: min iżommha jista' jonfoq il-bilanċ kollu tiegħek.
- Ikkarga ċ-ċavetta minn environment variable jew minn secret store minflok ma tikteb fil-kodiċi.
- Jekk iċ-ċavetta setgħet tnixxiet, iddawwarha f'Ċwievet u użu. Iċ-ċavetta l-qadima tieqaf taħdem minnufih.
- Wara tnixxija, aqra l-lista tat-talbiet f'Ċwievet u użu. Turi kull talba li ċ-ċavetta għamlet fl-aħħar 30 jum.