Autentifikatsiya
Har bir so'rov API kalitingizni sarlavhada olib yuradi. Hisob uchun bitta kalit har bir endpoint va har bir modelda, ikki sarlavha shaklidan birida ishlaydi.
Sarlavha · OpenAI SDK'lar
Authorization: Bearer YOUR_API_KEY Sarlavha · Anthropic SDK'lar
x-api-key: YOUR_API_KEY Qabul qilinadigan sarlavhalar
Ikkala sarlavha ham endpoint qaysi formatda gaplashishidan qat'i nazar, har bir /v1 endpointida o'qiladi. Ulardan birini yuboring.
| Sarlavha | Tavsif |
|---|---|
Authorization: Bearer <key> | Birinchi tekshiriladi. Bearerni bosh B bilan va kalitdan oldin bitta bo'sh joy bilan yozing. OpenAI SDK'lar shu sarlavhani yuboradi. |
x-api-key: <key> | So'rovda Authorization: Bearer sarlavhasi bo'lmasa o'qiladi. Anthropic SDK'lar shu sarlavhani yuboradi. |
OpenAI SDK bilan kalit va base URL'ni o'rnating; SDK Authorization: Bearer'ni yuboradi.
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 bilan kalitni va /v1siz base URL'ni o'rnating; SDK x-api-key'ni yuboradi.
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!"}
]
}' Qaysi endpointlarga kalit kerak
| Endpoint | Kalit |
|---|---|
POST /v1/chat/completions | Majburiy |
POST /v1/messages | Majburiy |
POST /v1/responses | Majburiy |
POST /v1/tokenize | Majburiy |
POST /v1/messages/count_tokens | Majburiy |
GET /v1/models | Kerak emas |
Kalitingiz
- Kalit —
sk-va undan keyinA–Z,a–z,0–9,-va_dan 43 ta belgi: jami 46 belgi. - Har bir hisobda aynan bitta kalit bor. U Keys & usage sahifasini birinchi marta ochganingizda yaratiladi.
- Kalit hisobingiz uchun API'ga to'liq kirish beradi: har bir endpoint, har bir model va butun balans.
- Kalitning amal qilish muddati yo'q. U siz almashtirmaguningizcha yoki bekor qilmaguningizcha ishlaydi.
Almashtirish va bekor qilish
Kalitni Keys & usage sahifasida almashtirasiz va bekor qilasiz. Keys & usage
| Amal | Nima bo'ladi |
|---|---|
| Almashtirish | Yangi kalit beriladi va eskisi ishlamay qoladi. Yangi kalit darhol ishlaydi. |
| Bekor qilish | Kalit ishlamay qoladi va yangi kalit berilmaydi. Yana ishlaydigan kalit olish uchun almashtiring. |
- Ikkalasi ham darhol kuchga kiradi: eski kalit bilan keyingi so'rovga
401javob beriladi. Eski kalit hamma joyda rad etilgunga qadar yuqori chegara sifatida 60 soniyani oling. - Hisobning barcha mijozlari bir xil kalitdan foydalanadi, shuning uchun almashtirish hammasiga ta'sir qiladi. Almashtirgandan so'ng yangi kalitni darhol mijozlaringizga qo'ying.
- Balans, foydalanish va flood himoyasi kalitga emas, hisobga tegishli. Yangi kalit xuddi shu balans va joriy daqiqa uchun xuddi shu so'rovlar soni bilan davom etadi.
Xatolar
Har bir autentifikatsiya xatosining holati 401 va turi authentication_error. Holatlarni xabar ajratib beradi.
| Holat | Tur | Xabar | Qachon |
|---|---|---|---|
401 | authentication_error | Missing authentication | So'rovda na Authorization: Bearer sarlavhasi, na sk- bilan boshlanadigan x-api-key sarlavhasi bor. Bu kichik harfli bearer va Bearersiz Authorization qiymatiga ham javob. |
401 | authentication_error | Invalid API key | Kalit hisobning joriy kaliti emas: u xato yozilgan, bekor qilingan yoki almashtirish natijasida yangilangan. |
{
"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/messagesdan tashqari har bir yo'ldaerrorobyektidacode: "invalid_api_key"ham bo'ladi, kalit yo'q bo'lganda ham, vaparam: null.- Kalit tana o'qilishidan oldin tekshiriladi. To'g'ri kalitsiz so'rov, tanasi yaroqsiz yoki juda katta bo'lsa ham,
401oladi. sk-bilan boshlanmaydiganAuthorization: Bearerqiymati API kalit deb hisoblanmaydi. U token yaroqsiz yoki muddati o'tgani haqida xabar bilan401oladi.
Brauzerlar va CORS
- API cross-origin brauzer so'rovlariga faqat qat'iy origin ro'yxati uchun javob beradi. Boshqa origin sahifasidagi JavaScript
/v1javoblarini o'qiy olmaydi. - API'ni serveringizdan chaqiring, sahifangiz esa serveringiz bilan gaplashsin. Bu kalitni sahifa manbasidan ham uzoqda saqlaydi.
- Server tomonidagi kod va buyruq qatori vositalariga ta'sir qilmaydi: bu qoidani faqat brauzerlar qo'llaydi.
- shannon-ai.com saytiga kirish
/v1so'rovlarini autentifikatsiya qilmaydi. U yerda cookie o'qilmaydi; kalit — yagona kredensial. - Ruxsat etilgan origin uchun brauzer
content-type,authorization,x-api-key,anthropic-version,anthropic-beta,openai-betavax-request-id'ni yuborishi hamdax-request-idjavob sarlavhasini o'qishi mumkin.
Kalitni xavfsiz saqlash
- Kalitni serverda saqlang. Uni veb-sahifalarga, mobil ilovalarga yoki ochiq repozitoriylarga qo'ymang: unga ega bo'lgan har kim butun balansingizni sarflashi mumkin.
- Kalitni kodga yozish o'rniga muhit o'zgaruvchisidan yoki sirlar omboridan yuklang.
- Kalit sizib chiqqan bo'lishi mumkin bo'lsa, uni Keys & usage'da almashtiring. Eski kalit darhol ishlamay qoladi.
- Sizib chiqqandan so'ng Keys & usage'dagi so'rovlar ro'yxatini o'qing. U kalit so'nggi 30 kunda yuborgan har bir so'rovni ko'rsatadi.