प्रमाणीकरण
हरेक अनुरोधले आफ्नो 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 ले क्रस-origin ब्राउजर अनुरोधहरूको जवाफ origin को निश्चित सूचीका लागि मात्र दिन्छ। अर्को origin को पेजमा चल्ने JavaScript ले
/v1का जवाफ पढ्न सक्दैन। - API लाई आफ्नो सर्भरबाट कल गर्नुहोस् र आफ्नो पेजलाई आफ्नो सर्भरसँग कुरा गर्न दिनुहोस्। यसले कीलाई पेजको सोर्सबाट बाहिर पनि राख्छ।
- सर्भर-साइड कोड र कमान्ड-लाइन टुलहरू प्रभावित हुँदैनन्: यो नियम ब्राउजरहरूले मात्र लागू गर्छन्।
- shannon-ai.com मा साइन इनले
/v1अनुरोधहरू प्रमाणीकरण गर्दैन। त्यहाँ कुकीहरू पढिँदैनन्; की नै एकमात्र प्रमाणपत्र हो। - अनुमति प्राप्त origin का लागि, ब्राउजरले
content-type,authorization,x-api-key,anthropic-version,anthropic-beta,openai-betaरx-request-idपठाउन सक्छ, र जवाफ हेडरx-request-idपढ्न सक्छ।
कीलाई सुरक्षित राख्ने
- कीलाई सर्भरमा राख्नुहोस्। यसलाई वेब पेज, मोबाइल एप वा सार्वजनिक रिपोजिटरीमा नराख्नुहोस्: जोससँग यो छ उसले तपाईंको सम्पूर्ण ब्यालेन्स खर्च गर्न सक्छ।
- कीलाई कोडमा लेख्नुको सट्टा environment variable वा सिक्रेट स्टोरबाट लोड गर्नुहोस्।
- की लीक भएको हुन सक्छ भने, की र प्रयोगमा गएर रोटेट गर्नुहोस्। पुरानो की तुरुन्तै काम गर्न छोड्छ।
- लीक भएपछि, की र प्रयोगमा अनुरोध सूची पढ्नुहोस्। यसले पछिल्ला 30 दिनमा कीले गरेका हरेक अनुरोध देखाउँछ।