Kimlik Doğrulama
Her istek API anahtarınızı bir başlıkta taşır. Hesap başına tek anahtar, iki başlık biçiminden herhangi biriyle her uç noktada ve her modelde çalışır.
Başlık · OpenAI SDK'ları
Authorization: Bearer YOUR_API_KEY Başlık · Anthropic SDK'ları
x-api-key: YOUR_API_KEY Kabul edilen başlıklar
Her iki başlık da uç noktanın hangi biçimi konuştuğuna bakılmaksızın her /v1 uç noktasında okunur. Birini gönderin.
| Başlık | Açıklama |
|---|---|
Authorization: Bearer <key> | İlk olarak kontrol edilir. Bearer sözcüğünü büyük B ile ve anahtardan önce tek boşlukla yazın. OpenAI SDK'ları bu başlığı gönderir. |
x-api-key: <key> | İstekte Authorization: Bearer başlığı yoksa okunur. Anthropic SDK'ları bu başlığı gönderir. |
Bir OpenAI SDK'sı ile anahtarı ve temel URL'yi ayarlayın; SDK Authorization: Bearer gönderir.
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!"}
]
}' Bir Anthropic SDK'sı ile anahtarı ve /v1 olmadan temel URL'yi ayarlayın; SDK x-api-key gönderir.
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!"}
]
}' Hangi uç noktalar anahtar gerektirir
| Uç nokta | Anahtar |
|---|---|
POST /v1/chat/completions | Gerekir |
POST /v1/messages | Gerekir |
POST /v1/responses | Gerekir |
POST /v1/tokenize | Gerekir |
POST /v1/messages/count_tokens | Gerekir |
GET /v1/models | Gerekmez |
Anahtarınız
- Anahtar,
sk-ve ardındanA–Z,a–z,0–9,-ve_karakterlerinden 43 karakterdir: toplam 46 karakter. - Her hesabın tam olarak bir anahtarı vardır. Keys & usage sayfasını ilk açtığınızda oluşturulur.
- Anahtar, hesabınız için API'ye tam erişim sağlar: her uç nokta, her model ve tüm bakiye.
- Anahtarın son kullanma tarihi yoktur. Siz yenileyene veya iptal edene kadar çalışır.
Yenileme ve iptal
Anahtarı Keys & usage sayfasında yenilersiniz ve iptal edersiniz. Keys & usage
| İşlem | Ne olur |
|---|---|
| Yenile | Yeni bir anahtar verilir ve eski anahtar çalışmayı durdurur. Yeni anahtar hemen çalışır. |
| İptal et | Anahtar çalışmayı durdurur ve yeni anahtar verilmez. Yeniden çalışan bir anahtar almak için yenileyin. |
- İkisi de hemen etkili olur: eski anahtarla yapılan sonraki istek
401ile yanıtlanır. Eski anahtarın her yerde reddedilmesi için üst sınır olarak 60 saniyeyi kabul edin. - Hesabın her istemcisi aynı anahtarı kullanır, bu yüzden bir yenileme hepsini etkiler. Yeni anahtarı, yeniledikten hemen sonra istemcilerinize koyun.
- Bakiye, kullanım ve flood koruması anahtara değil hesaba aittir. Yeni anahtar, aynı bakiye ve geçerli dakika için aynı istek sayısıyla devam eder.
Hatalar
Her kimlik doğrulama hatasının durumu 401, türü authentication_error'dır. Durumları birbirinden mesaj ayırt eder.
| Durum | Tür | Mesaj | Ne zaman |
|---|---|---|---|
401 | authentication_error | Missing authentication | İstekte ne Authorization: Bearer başlığı ne de sk- ile başlayan bir x-api-key başlığı var. Küçük harfle yazılmış bearer için ve Bearer içermeyen bir Authorization değeri için de yanıt budur. |
401 | authentication_error | Invalid API key | Anahtar bir hesabın geçerli anahtarı değil: yanlış yazılmış, iptal edilmiş veya bir yenileme ile değiştirilmiş. |
{
"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/messagesdışındaki her yoldaerrornesnesi ayrıcacode: "invalid_api_key"içerir (eksik anahtar için de) veparam: nulliçerir.- Anahtar, gövde okunmadan önce kontrol edilir. Geçerli anahtarı olmayan bir istek, gövdesi geçersiz veya çok büyük olsa bile
401alır. sk-ile başlamayan birAuthorization: Bearerdeğeri API anahtarı olarak ele alınmaz. Token'ın geçersiz veya süresi dolmuş olduğunu belirten bir mesajla401alır.
Tarayıcılar ve CORS
- API, tarayıcıların origin'ler arası isteklerine yalnızca sabit bir origin listesi için yanıt verir. Başka bir origin'in sayfasındaki JavaScript
/v1yanıtlarını okuyamaz. - API'yi sunucunuzdan çağırın ve sayfanızın sunucunuzla konuşmasını sağlayın. Bu, anahtarı sayfa kaynağının dışında da tutar.
- Sunucu tarafı kod ve komut satırı araçları etkilenmez: bu kuralı yalnızca tarayıcılar uygular.
- shannon-ai.com'da oturum açmak
/v1isteklerinin kimliğini doğrulamaz. Çerezler orada okunmaz; tek kimlik bilgisi anahtardır. - İzin verilen bir origin için tarayıcı
content-type,authorization,x-api-key,anthropic-version,anthropic-beta,openai-betavex-request-idbaşlıklarını gönderebilir vex-request-idyanıt başlığını okuyabilir.
Anahtarı güvende tutma
- Anahtarı bir sunucuda tutun. Web sayfalarına, mobil uygulamalara veya herkese açık depolara koymayın: elinde bulunduran herkes tüm bakiyenizi harcayabilir.
- Anahtarı koda yazmak yerine bir ortam değişkeninden veya bir gizli bilgi deposundan yükleyin.
- Anahtar sızmış olabilirse Keys & usage sayfasında yenileyin. Eski anahtar hemen çalışmayı durdurur.
- Bir sızıntıdan sonra Keys & usage sayfasındaki istek listesini okuyun. Anahtarın son 30 günde yaptığı her isteği gösterir.