Аутентификация
Әр сұрау API кілтіңізді тақырыпта алып жүреді. Аккаунтқа бір кілт әр endpoint пен әр модельде екі тақырып түрінің кез келгенімен жұмыс істейді.
Тақырып · OpenAI SDK-лары
Authorization: Bearer YOUR_API_KEY Тақырып · Anthropic SDK-лары
x-api-key: YOUR_API_KEY Қабылданатын тақырыптар
Екі тақырып та әр /v1 endpoint-те оқылады, endpoint қай форматта сөйлесетініне қарамастан. Біреуін жіберіңіз.
| Тақырып | Сипаттама |
|---|---|
Authorization: Bearer <key> | Алдымен тексеріледі. Bearer сөзін бас B әрпімен және кілттің алдында бір бос орынмен жазыңыз. OpenAI SDK-лары осы тақырыпты жібереді. |
x-api-key: <key> | Сұрауда Authorization: Bearer тақырыбы болмағанда оқылады. Anthropic SDK-лары осы тақырыпты жібереді. |
OpenAI SDK-мен кілтті және базалық URL-ді орнатыңыз; SDK 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!"}
]
}' Anthropic SDK-мен кілтті және /v1 жоқ базалық URL-ді орнатыңыз; SDK 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!"}
]
}' Қай endpoint-терге кілт қажет
| Endpoint | Кілт |
|---|---|
POST /v1/chat/completions | Міндетті |
POST /v1/messages | Міндетті |
POST /v1/responses | Міндетті |
POST /v1/tokenize | Міндетті |
POST /v1/messages/count_tokens | Міндетті |
GET /v1/models | Қажет емес |
Сіздің кілтіңіз
- Кілт —
sk-және одан кейінA–Z,a–z,0–9,-және_таңбаларынан тұратын 43 таңба: барлығы 46 таңба. - Әр аккаунтта дәл бір кілт бар. Ол Keys & usage бетін алғаш ашқанда жасалады.
- Кілт аккаунтыңыз үшін API-ге толық қолжетімділік береді: барлық endpoint, барлық модель және баланстың бәрі.
- Кілттің жарамдылық мерзімі жоқ. Оны ауыстырғанша немесе күшін жойғанша жұмыс істейді.
Ауыстыру және күшін жою
Кілтті Keys & usage бетінде ауыстырасыз және күшін жоясыз. Keys & usage
| Әрекет | Не болады |
|---|---|
| Ауыстыру | Жаңа кілт беріледі, ескі кілт жұмысын тоқтатады. Жаңа кілт бірден жұмыс істейді. |
| Күшін жою | Кілт жұмысын тоқтатады, жаңа кілт берілмейді. Қайтадан жұмыс істейтін кілт алу үшін ауыстырыңыз. |
- Екеуі де бірден күшіне енеді: ескі кілтпен келесі сұраудың жауабы
401болады. Ескі кілт барлық жерде қабылданбайтынға дейінгі жоғарғы шек ретінде 60 секундты алыңыз. - Аккаунттың барлық клиенті бір кілтті қолданады, сондықтан ауыстыру бәріне әсер етеді. Ауыстырғаннан кейін жаңа кілтті клиенттеріңізге бірден енгізіңіз.
- Баланс, қолдану және flood protection кілтке емес, аккаунтқа тиесілі. Жаңа кілт сол баламен және ағымдағы минуттағы сол сұрау санымен жалғасады.
Қателер
Аутентификацияның әр сәтсіздігінің мәртебесі 401, түрі authentication_error. Жағдайларды хабарлама ажыратады.
| Мәртебе | Түрі | Хабарлама | Қашан |
|---|---|---|---|
401 | authentication_error | Missing authentication | Сұраудың Authorization: Bearer тақырыбы да, sk- әрпінен басталатын x-api-key тақырыбы да жоқ. Кіші әріппен жазылған bearer және Bearer сөзсіз Authorization мәніне де осы жауап беріледі. |
401 | authentication_error | Invalid API key | Кілт аккаунттың ағымдағы кілті емес: қате терілген, күші жойылған немесе ауыстыру арқылы алмастырылған. |
{
"error": {
"type": "authentication_error",
"message": "Invalid API key",
"code": "invalid_api_key",
"param": null
}
} {
"type": "error",
"error": {
"type": "authentication_error",
"message": "Invalid API key"
}
} /v1/messagesжолынан басқа барлық жолдардаerrorнысанындаcode: "invalid_api_key"жәнеparam: nullда болады, кілт жоқ болғанда да.- Кілт дене оқылмай тұрып тексеріледі. Жарамды кілті жоқ сұрау денесі жарамсыз немесе тым үлкен болса да
401алады. sk-әрпінен басталмайтынAuthorization: Bearerмәні API кілті ретінде қарастырылмайды. Ол токеннің жарамсыз немесе мерзімі өткен деген хабарламамен401алады.
Браузерлер және CORS
- API origin-аралық браузер сұрауларына тек тіркелген origin тізімі үшін жауап береді. Басқа origin-нің бетіндегі JavaScript
/v1жауаптарын оқи алмайды. - API-ді серверіңізден шақырыңыз да, бетіңіз серверіңізбен сөйлессін. Бұл кілтті бет бастапқы кодынан да тыс ұстайды.
- Сервер жағындағы код пен пәрмен жолы құралдарына бұл әсер етпейді: бұл ережені тек браузерлер қолданады.
- shannon-ai.com сайтына кіру
/v1сұрауларын аутентификациялайтын болмайды. Cookie-лер онда оқылмайды; кілт — жалғыз куәлік. - Рұқсат етілген origin үшін браузер
content-type,authorization,x-api-key,anthropic-version,anthropic-beta,openai-betaжәнеx-request-idжібере алады жәнеx-request-idжауап тақырыбын оқи алады.
Кілтті қауіпсіз сақтау
- Кілтті серверде сақтаңыз. Оны веб-беттерге, мобильді қолданбаларға немесе ашық репозиторийлерге қоймаңыз: оны ұстаған кез келген адам бүкіл балансыңызды жұмсай алады.
- Кілтті кодқа жазудың орнына орта айнымалысынан немесе құпиялар қоймасынан жүктеңіз.
- Кілт ашылып қалуы мүмкін болса, оны Keys & usage бетінде ауыстырыңыз. Ескі кілт бірден жұмысын тоқтатады.
- Кілт ашылып қалған соң Keys & usage ішіндегі сұраулар тізімін оқыңыз. Онда кілттің соңғы 30 күнде жасаған әр сұрауы көрсетіледі.