Doğrulama
Hər sorğu API açarınızı başlıqda daşıyır. Hesab başına bir açar hər endpoint və hər modeldə, iki başlıq formasından hər hansı birində işləyir.
Başlıq · OpenAI SDK-ları
Authorization: Bearer YOUR_API_KEY Başlıq · Anthropic SDK-ları
x-api-key: YOUR_API_KEY Qəbul edilən başlıqlar
Hər iki başlıq endpoint hansı formatda danışırsa danışsın, hər /v1 endpoint-də oxunur. Onlardan birini göndərin.
| Başlıq | Təsvir |
|---|---|
Authorization: Bearer <key> | Birinci yoxlanılır. Bearer sözünü böyük B ilə və açardan əvvəl bir boşluqla yazın. OpenAI SDK-ları bu başlığı göndərir. |
x-api-key: <key> | Sorğuda Authorization: Bearer başlığı olmadıqda oxunur. Anthropic SDK-ları bu başlığı göndərir. |
OpenAI SDK ilə açarı və əsas URL-i təyin edin; SDK Authorization: Bearer göndərir.
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 ilə açarı və /v1 olmadan əsas URL-i təyin edin; SDK x-api-key göndərir.
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!"}
]
}' Hansı endpoint-lərə açar lazımdır
| Endpoint | Açar |
|---|---|
POST /v1/chat/completions | Məcburi |
POST /v1/messages | Məcburi |
POST /v1/responses | Məcburi |
POST /v1/tokenize | Məcburi |
POST /v1/messages/count_tokens | Məcburi |
GET /v1/models | Lazım deyil |
Açarınız
- Açar
sk-və ardıncaA–Z,a–z,0–9,-və_simvollarından 43 simvoldur: cəmi 46 simvol. - Hər hesabın dəqiq bir açarı var. O, Keys & usage səhifəsini ilk dəfə açdığınız zaman yaradılır.
- Açar hesabınız üçün API-yə tam giriş verir: hər endpoint, hər model və balansın hamısı.
- Açarın bitmə tarixi yoxdur. Siz onu yeniləyənə və ya ləğv edənə qədər işləyir.
Yeniləmə və ləğv etmə
Açarı Keys & usage səhifəsində yeniləyir və ləğv edirsiniz. Keys & usage
| Əməliyyat | Nə baş verir |
|---|---|
| Yeniləmək | Yeni açar verilir və köhnə açar işləməyi dayandırır. Yeni açar dərhal işləyir. |
| Ləğv etmək | Açar işləməyi dayandırır və yeni açar verilmir. İşləyən açar almaq üçün yeniləyin. |
- Hər ikisi dərhal qüvvəyə minir: köhnə açarla növbəti sorğuya
401cavabı verilir. Köhnə açarın hər yerdə rədd edilməsi üçün yuxarı hədd kimi 60 saniyəni qəbul edin. - Hesabın bütün klientləri eyni açardan istifadə edir, buna görə yeniləmə hamısına təsir edir. Yenilədikdən dərhal sonra yeni açarı klientlərinizə qoyun.
- Balans, istifadə və flood protection açara yox, hesaba aiddir. Yeni açar eyni balans və cari dəqiqə üçün eyni sorğu sayı ilə davam edir.
Xətalar
Hər doğrulama xətasının statusu 401, tipi isə authentication_error-dur. Halları mesaj bir-birindən ayırır.
| Status | Tip | Mesaj | Nə vaxt |
|---|---|---|---|
401 | authentication_error | Missing authentication | Sorğuda nə Authorization: Bearer başlığı, nə də sk- ilə başlayan x-api-key başlığı var. Bu, kiçik hərflə yazılmış bearer üçün və Bearer olmayan Authorization dəyəri üçün də cavabdır. |
401 | authentication_error | Invalid API key | Açar hesabın cari açarı deyil: səhv yazılıb, ləğv edilib və ya yeniləmə ilə əvəz olunub. |
{
"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/messagesistisna olmaqla hər yoldaerrorobyektində həmçinincode: "invalid_api_key"vəparam: nullolur, açar olmadıqda da.- Açar gövdə oxunmazdan əvvəl yoxlanılır. Etibarlı açarı olmayan sorğu, gövdəsi yanlış və ya çox böyük olsa belə,
401alır. sk-ilə başlamayanAuthorization: Bearerdəyəri API açarı sayılmır. O, tokenin yanlış və ya müddətinin bitmiş olduğunu bildirən mesajla401alır.
Brauzerlər və CORS
- API cross-origin brauzer sorğularına yalnız sabit mənşə siyahısı üçün cavab verir. Başqa mənşəli səhifədəki JavaScript
/v1cavablarını oxuya bilməz. - API-ni serverinizdən çağırın və səhifənizin serverinizlə əlaqə qurmasına icazə verin. Bu, həm də açarı səhifə mənbəyindən kənarda saxlayır.
- Server tərəfindəki kod və komanda sətri alətlərinə bu təsir etmir: bu qaydanı yalnız brauzerlər tətbiq edir.
- shannon-ai.com saytında daxil olmaq
/v1sorğularını doğrulamır. Cookie-lər orada oxunmur; açar yeganə etibarnamədir. - İcazə verilmiş mənşə üçün brauzer
content-type,authorization,x-api-key,anthropic-version,anthropic-beta,openai-betavəx-request-idgöndərə,x-request-idcavab başlığını isə oxuya bilər.
Açarın təhlükəsizliyini qorumaq
- Açarı serverdə saxlayın. Onu veb səhifələrə, mobil tətbiqlərə və ya ictimai repozitoriyalara qoymayın: ona sahib olan hər kəs bütün balansınızı xərcləyə bilər.
- Açarı koda yazmaq əvəzinə mühit dəyişənindən və ya secret store-dan yükləyin.
- Açar sızmış ola bilərsə, onu Keys & usage səhifəsində yeniləyin. Köhnə açar dərhal işləməyi dayandırır.
- Sızmadan sonra Keys & usage səhifəsindəki sorğu siyahısını oxuyun. O, açarın son 30 gündə etdiyi hər sorğunu göstərir.