प्रमाणीकरण
प्रत्येक रिक्वेस्ट तुमची API की हेडरमध्ये घेऊन जाते. अकाउंटमागे एक की प्रत्येक एंडपॉइंट आणि प्रत्येक मॉडेलवर चालते, दोन हेडर रूपांपैकी कोणत्याही एकात.
हेडर · OpenAI SDK
Authorization: Bearer YOUR_API_KEY हेडर · Anthropic SDK
x-api-key: YOUR_API_KEY स्वीकारलेले हेडर
दोन्ही हेडर प्रत्येक /v1 एंडपॉइंटवर वाचले जातात, एंडपॉइंट कोणतेही फॉरमॅट बोलत असला तरी. त्यापैकी एक पाठवा.
| हेडर | वर्णन |
|---|---|
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!"}
]
}' कोणत्या एंडपॉइंटना की लागते
| एंडपॉइंट | की |
|---|---|
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 अक्षरे. - प्रत्येक अकाउंटला नेमकी एक की असते. की आणि वापर पहिल्यांदा उघडल्यावर ती तयार होते.
- की तुमच्या अकाउंटसाठी API मध्ये पूर्ण प्रवेश देते: प्रत्येक एंडपॉइंट, प्रत्येक मॉडेल आणि संपूर्ण बॅलन्स.
- कीला कालबाह्यता तारीख नसते. तुम्ही रोटेट किंवा रद्द करेपर्यंत ती चालते.
रोटेट आणि रद्द करा
तुम्ही की आणि वापर पानावर की रोटेट आणि रद्द करता. की आणि वापर
| कृती | काय होते |
|---|---|
| रोटेट करा | नवीन की दिली जाते आणि जुनी की चालणे थांबते. नवीन की लगेच चालते. |
| रद्द करा | की चालणे थांबते आणि नवीन की दिली जात नाही. चालणारी की पुन्हा मिळवण्यासाठी रोटेट करा. |
- दोन्ही लगेच लागू होतात: जुन्या कीसह पुढच्या रिक्वेस्टला
401उत्तर मिळते. जुनी की सर्वत्र नाकारली जाण्यापूर्वीची कमाल मर्यादा 60 सेकंद समजा. - अकाउंटचा प्रत्येक क्लायंट तीच की वापरतो, त्यामुळे रोटेशन सर्वांपर्यंत पोहोचते. रोटेट केल्यावर लगेच नवीन की तुमच्या क्लायंटमध्ये टाका.
- बॅलन्स, वापर आणि फ्लड प्रोटेक्शन अकाउंटचे असतात, कीचे नाही. नवीन की त्याच बॅलन्ससह आणि चालू मिनिटाच्या त्याच रिक्वेस्ट संख्येसह पुढे चालते.
एरर
प्रत्येक प्रमाणीकरण अपयशाचा स्टेटस 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 क्रॉस-ओरिजिन ब्राउझर रिक्वेस्ट्सना फक्त निश्चित ओरिजिन यादीसाठी उत्तर देते. दुसऱ्या ओरिजिनच्या पानावरील JavaScript
/v1उत्तरे वाचू शकत नाही. - API तुमच्या सर्व्हरवरून कॉल करा आणि तुमचे पान तुमच्या सर्व्हरशी बोलू द्या. त्यामुळे की पानाच्या सोर्समध्येही येत नाही.
- सर्व्हर-साइड कोड आणि कमांड-लाइन टूल्सवर परिणाम होत नाही: हा नियम फक्त ब्राउझर लागू करतात.
- shannon-ai.com वरील साइन-इन
/v1रिक्वेस्ट्स प्रमाणित करत नाही. तेथे कुकीज वाचल्या जात नाहीत; की हेच एकमेव क्रेडेन्शियल आहे. - परवानगी असलेल्या ओरिजिनसाठी, ब्राउझर
content-type,authorization,x-api-key,anthropic-version,anthropic-beta,openai-betaआणिx-request-idपाठवू शकतो, आणि उत्तराचे हेडरx-request-idवाचू शकतो.
की सुरक्षित ठेवणे
- की सर्व्हरवर ठेवा. ती वेब पाने, मोबाइल अॅप्स किंवा सार्वजनिक रेपॉझिटरीमध्ये टाकू नका: जो कोणी ती मिळवेल तो तुमचा संपूर्ण बॅलन्स खर्च करू शकतो.
- की कोडमध्ये लिहिण्याऐवजी environment variable किंवा सीक्रेट स्टोअरमधून लोड करा.
- की लीक झाली असण्याची शक्यता असल्यास, की आणि वापर वर ती रोटेट करा. जुनी की लगेच चालणे थांबते.
- लीक झाल्यानंतर, की आणि वापर वरील रिक्वेस्ट यादी वाचा. ती कीने गेल्या 30 दिवसांत केलेली प्रत्येक रिक्वेस्ट दाखवते.