ਪਰਮਾਣਿਕਤਾ
ਹਰ ਰਿਕੁਐਸਟ ਇੱਕ ਹੈਡਰ ਵਿੱਚ ਤੁਹਾਡੀ API key ਲੈ ਕੇ ਜਾਂਦੀ ਹੈ। ਪ੍ਰਤੀ ਖਾਤਾ ਇੱਕ key ਹਰ endpoint ਅਤੇ ਹਰ ਮਾਡਲ ਉੱਤੇ, ਦੋ ਹੈਡਰ ਰੂਪਾਂ ਵਿੱਚੋਂ ਕਿਸੇ ਇੱਕ ਨਾਲ, ਕੰਮ ਕਰਦੀ ਹੈ।
ਹੈਡਰ · OpenAI SDK
Authorization: Bearer YOUR_API_KEY ਹੈਡਰ · Anthropic SDK
x-api-key: YOUR_API_KEY ਸਵੀਕਾਰ ਕੀਤੇ ਹੈਡਰ
ਦੋਵੇਂ ਹੈਡਰ ਹਰ /v1 endpoint ਉੱਤੇ ਪੜ੍ਹੇ ਜਾਂਦੇ ਹਨ, ਭਾਵੇਂ endpoint ਕਿਸੇ ਵੀ ਫਾਰਮੈਟ ਵਿੱਚ ਬੋਲਦਾ ਹੋਵੇ। ਇਨ੍ਹਾਂ ਵਿੱਚੋਂ ਇੱਕ ਭੇਜੋ।
| ਹੈਡਰ | ਵੇਰਵਾ |
|---|---|
Authorization: Bearer <key> | ਸਭ ਤੋਂ ਪਹਿਲਾਂ ਜਾਂਚਿਆ ਜਾਂਦਾ ਹੈ। Bearer ਨੂੰ ਵੱਡੇ B ਨਾਲ ਲਿਖੋ ਅਤੇ key ਤੋਂ ਪਹਿਲਾਂ ਇੱਕ ਖਾਲੀ ਥਾਂ ਰੱਖੋ। OpenAI SDK ਇਹ ਹੈਡਰ ਭੇਜਦੇ ਹਨ। |
x-api-key: <key> | ਉਦੋਂ ਪੜ੍ਹਿਆ ਜਾਂਦਾ ਹੈ ਜਦੋਂ ਰਿਕੁਐਸਟ ਵਿੱਚ Authorization: Bearer ਹੈਡਰ ਨਾ ਹੋਵੇ। Anthropic SDK ਇਹ ਹੈਡਰ ਭੇਜਦੇ ਹਨ। |
OpenAI SDK ਨਾਲ key ਅਤੇ base 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 ਨਾਲ key ਅਤੇ /v1 ਤੋਂ ਬਿਨਾਂ base 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!"}
]
}' ਕਿਹੜੇ endpoints ਨੂੰ key ਚਾਹੀਦੀ ਹੈ
| ਐਂਡਪੁਆਇੰਟ | Key |
|---|---|
POST /v1/chat/completions | ਲੋੜੀਂਦੀ |
POST /v1/messages | ਲੋੜੀਂਦੀ |
POST /v1/responses | ਲੋੜੀਂਦੀ |
POST /v1/tokenize | ਲੋੜੀਂਦੀ |
POST /v1/messages/count_tokens | ਲੋੜੀਂਦੀ |
GET /v1/models | ਲੋੜ ਨਹੀਂ |
ਤੁਹਾਡੀ key
- key ਵਿੱਚ
sk-ਤੋਂ ਬਾਅਦA–Z,a–z,0–9,-ਅਤੇ_ਵਿੱਚੋਂ 43 ਅੱਖਰ ਹੁੰਦੇ ਹਨ: ਕੁੱਲ 46 ਅੱਖਰ। - ਹਰ ਖਾਤੇ ਕੋਲ ਠੀਕ ਇੱਕ key ਹੁੰਦੀ ਹੈ। ਇਹ ਉਦੋਂ ਬਣਦੀ ਹੈ ਜਦੋਂ ਤੁਸੀਂ ਪਹਿਲੀ ਵਾਰ Keys & usage ਖੋਲ੍ਹਦੇ ਹੋ।
- key ਤੁਹਾਡੇ ਖਾਤੇ ਲਈ API ਤੱਕ ਪੂਰੀ ਪਹੁੰਚ ਦਿੰਦੀ ਹੈ: ਹਰ endpoint, ਹਰ ਮਾਡਲ ਅਤੇ ਪੂਰਾ ਬੈਲੇਂਸ।
- key ਦੀ ਕੋਈ ਮਿਆਦ ਪੁੱਗਣ ਦੀ ਮਿਤੀ ਨਹੀਂ ਹੁੰਦੀ। ਇਹ ਉਦੋਂ ਤੱਕ ਕੰਮ ਕਰਦੀ ਹੈ ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ ਇਸ ਨੂੰ ਬਦਲਦੇ ਜਾਂ ਰੱਦ ਨਹੀਂ ਕਰਦੇ।
ਬਦਲੋ ਅਤੇ ਰੱਦ ਕਰੋ
ਤੁਸੀਂ key ਨੂੰ Keys & usage ਪੰਨੇ ਉੱਤੇ ਬਦਲਦੇ ਅਤੇ ਰੱਦ ਕਰਦੇ ਹੋ। Keys ਅਤੇ ਵਰਤੋਂ
| ਕਾਰਵਾਈ | ਕੀ ਹੁੰਦਾ ਹੈ |
|---|---|
| ਬਦਲੋ | ਨਵੀਂ key ਜਾਰੀ ਹੁੰਦੀ ਹੈ ਅਤੇ ਪੁਰਾਣੀ key ਕੰਮ ਕਰਨਾ ਬੰਦ ਕਰ ਦਿੰਦੀ ਹੈ। ਨਵੀਂ key ਤੁਰੰਤ ਕੰਮ ਕਰਦੀ ਹੈ। |
| ਰੱਦ ਕਰੋ | key ਕੰਮ ਕਰਨਾ ਬੰਦ ਕਰ ਦਿੰਦੀ ਹੈ ਅਤੇ ਕੋਈ ਨਵੀਂ key ਜਾਰੀ ਨਹੀਂ ਹੁੰਦੀ। ਦੁਬਾਰਾ ਚਲਦੀ key ਲੈਣ ਲਈ key ਬਦਲੋ। |
- ਦੋਵੇਂ ਤੁਰੰਤ ਲਾਗੂ ਹੁੰਦੇ ਹਨ: ਪੁਰਾਣੀ key ਨਾਲ ਅਗਲੀ ਰਿਕੁਐਸਟ ਦਾ ਜਵਾਬ
401ਨਾਲ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ। ਪੁਰਾਣੀ key ਹਰ ਥਾਂ ਰੱਦ ਹੋਣ ਤੱਕ 60 ਸਕਿੰਟ ਨੂੰ ਉੱਪਰਲੀ ਹੱਦ ਮੰਨੋ। - ਖਾਤੇ ਦਾ ਹਰ ਕਲਾਇੰਟ ਇੱਕੋ key ਵਰਤਦਾ ਹੈ, ਇਸ ਲਈ rotation ਸਭ ਤੱਕ ਪਹੁੰਚਦੀ ਹੈ। key ਬਦਲਣ ਤੋਂ ਤੁਰੰਤ ਬਾਅਦ ਨਵੀਂ key ਆਪਣੇ ਕਲਾਇੰਟਾਂ ਵਿੱਚ ਪਾਓ।
- ਬੈਲੇਂਸ, ਵਰਤੋਂ ਅਤੇ ਫਲੱਡ ਪ੍ਰੋਟੈਕਸ਼ਨ ਖਾਤੇ ਦੇ ਹੁੰਦੇ ਹਨ, key ਦੇ ਨਹੀਂ। ਨਵੀਂ key ਉਸੇ ਬੈਲੇਂਸ ਅਤੇ ਮੌਜੂਦਾ ਮਿੰਟ ਦੀ ਉਸੇ ਰਿਕੁਐਸਟ ਗਿਣਤੀ ਨਾਲ ਜਾਰੀ ਰਹਿੰਦੀ ਹੈ।
ਗਲਤੀਆਂ
ਪ੍ਰਮਾਣਿਕਤਾ ਦੀ ਹਰ ਅਸਫਲਤਾ ਦਾ ਸਟੇਟਸ 401 ਅਤੇ ਕਿਸਮ authentication_error ਹੁੰਦੀ ਹੈ। ਸੁਨੇਹਾ ਵੱਖ-ਵੱਖ ਮਾਮਲਿਆਂ ਵਿੱਚ ਫ਼ਰਕ ਦੱਸਦਾ ਹੈ।
| ਸਟੇਟਸ | ਕਿਸਮ | ਸੁਨੇਹਾ | ਕਦੋਂ |
|---|---|---|---|
401 | authentication_error | Missing authentication | ਰਿਕੁਐਸਟ ਵਿੱਚ ਨਾ ਤਾਂ Authorization: Bearer ਹੈਡਰ ਹੈ ਅਤੇ ਨਾ ਹੀ sk- ਨਾਲ ਸ਼ੁਰੂ ਹੋਣ ਵਾਲਾ x-api-key ਹੈਡਰ। ਛੋਟੇ ਅੱਖਰਾਂ ਵਿੱਚ bearer ਅਤੇ Bearer ਤੋਂ ਬਿਨਾਂ Authorization ਮੁੱਲ ਦਾ ਜਵਾਬ ਵੀ ਇਹੀ ਹੈ। |
401 | authentication_error | Invalid API key | key ਕਿਸੇ ਖਾਤੇ ਦੀ ਮੌਜੂਦਾ key ਨਹੀਂ ਹੈ: ਉਹ ਗਲਤ ਟਾਈਪ ਹੋਈ ਹੈ, ਰੱਦ ਕਰ ਦਿੱਤੀ ਗਈ ਸੀ, ਜਾਂ rotation ਨਾਲ ਬਦਲ ਦਿੱਤੀ ਗਈ ਸੀ। |
{
"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ਨੂੰ ਛੱਡ ਕੇ ਹਰ path ਉੱਤੇerrorobject ਵਿੱਚcode: "invalid_api_key"ਅਤੇparam: nullਵੀ ਹੁੰਦੇ ਹਨ, key ਗੈਰਹਾਜ਼ਰ ਹੋਣ ਦੀ ਸੂਰਤ ਵਿੱਚ ਵੀ।- key ਦੀ ਜਾਂਚ body ਪੜ੍ਹਨ ਤੋਂ ਪਹਿਲਾਂ ਹੁੰਦੀ ਹੈ। ਜਾਇਜ਼ key ਤੋਂ ਬਿਨਾਂ ਰਿਕੁਐਸਟ ਨੂੰ
401ਮਿਲਦਾ ਹੈ, ਭਾਵੇਂ ਉਸ ਦੀ body ਗਲਤ ਜਾਂ ਬਹੁਤ ਵੱਡੀ ਹੋਵੇ। sk-ਨਾਲ ਸ਼ੁਰੂ ਨਾ ਹੋਣ ਵਾਲੇAuthorization: Bearerਮੁੱਲ ਨੂੰ API key ਨਹੀਂ ਮੰਨਿਆ ਜਾਂਦਾ। ਉਸ ਨੂੰ401ਮਿਲਦਾ ਹੈ, ਅਜਿਹੇ ਸੁਨੇਹੇ ਨਾਲ ਕਿ token ਅਵੈਧ ਹੈ ਜਾਂ ਉਸ ਦੀ ਮਿਆਦ ਪੁੱਗ ਗਈ ਹੈ।
ਬ੍ਰਾਊਜ਼ਰ ਅਤੇ CORS
- API ਕਰਾਸ-origin ਬ੍ਰਾਊਜ਼ਰ ਰਿਕੁਐਸਟਾਂ ਦਾ ਜਵਾਬ ਸਿਰਫ਼ origins ਦੀ ਇੱਕ ਤੈਅ ਸੂਚੀ ਲਈ ਦਿੰਦੀ ਹੈ। ਕਿਸੇ ਹੋਰ origin ਦੇ ਪੰਨੇ ਉੱਤੇ JavaScript
/v1ਦੇ ਜਵਾਬ ਨਹੀਂ ਪੜ੍ਹ ਸਕਦੀ। - API ਨੂੰ ਆਪਣੇ ਸਰਵਰ ਤੋਂ ਕਾਲ ਕਰੋ ਅਤੇ ਆਪਣੇ ਪੰਨੇ ਨੂੰ ਆਪਣੇ ਸਰਵਰ ਨਾਲ ਗੱਲ ਕਰਨ ਦਿਓ। ਇਸ ਨਾਲ key ਪੰਨੇ ਦੇ ਸੋਰਸ ਤੋਂ ਵੀ ਬਾਹਰ ਰਹਿੰਦੀ ਹੈ।
- ਸਰਵਰ-ਸਾਈਡ ਕੋਡ ਅਤੇ ਕਮਾਂਡ-ਲਾਈਨ ਟੂਲ ਪ੍ਰਭਾਵਿਤ ਨਹੀਂ ਹੁੰਦੇ: ਇਹ ਨਿਯਮ ਸਿਰਫ਼ ਬ੍ਰਾਊਜ਼ਰ ਲਾਗੂ ਕਰਦੇ ਹਨ।
- shannon-ai.com ਉੱਤੇ ਸਾਈਨ ਇਨ ਕਰਨ ਨਾਲ
/v1ਰਿਕੁਐਸਟਾਂ ਦੀ ਪ੍ਰਮਾਣਿਕਤਾ ਨਹੀਂ ਹੁੰਦੀ। ਉੱਥੇ ਕੂਕੀਜ਼ ਨਹੀਂ ਪੜ੍ਹੀਆਂ ਜਾਂਦੀਆਂ; key ਹੀ ਇੱਕੋ-ਇੱਕ ਪ੍ਰਮਾਣ-ਪੱਤਰ ਹੈ। - ਮਨਜ਼ੂਰਸ਼ੁਦਾ origin ਲਈ, ਬ੍ਰਾਊਜ਼ਰ
content-type,authorization,x-api-key,anthropic-version,anthropic-beta,openai-betaਅਤੇx-request-idਭੇਜ ਸਕਦਾ ਹੈ, ਅਤੇ ਜਵਾਬ ਦਾ ਹੈਡਰx-request-idਪੜ੍ਹ ਸਕਦਾ ਹੈ।
key ਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਣਾ
- key ਨੂੰ ਸਰਵਰ ਉੱਤੇ ਰੱਖੋ। ਇਸ ਨੂੰ ਵੈੱਬ ਪੰਨਿਆਂ, ਮੋਬਾਈਲ ਐਪਾਂ ਜਾਂ ਜਨਤਕ ਰਿਪੋਜ਼ਟਰੀਆਂ ਵਿੱਚ ਨਾ ਪਾਓ: ਜਿਸ ਕੋਲ ਵੀ ਇਹ ਹੈ ਉਹ ਤੁਹਾਡਾ ਪੂਰਾ ਬੈਲੇਂਸ ਖਰਚ ਕਰ ਸਕਦਾ ਹੈ।
- key ਨੂੰ ਕੋਡ ਵਿੱਚ ਲਿਖਣ ਦੀ ਥਾਂ environment variable ਜਾਂ secret store ਤੋਂ ਲੋਡ ਕਰੋ।
- ਜੇ key ਲੀਕ ਹੋ ਗਈ ਹੋ ਸਕਦੀ ਹੈ, ਤਾਂ Keys & usage ਉੱਤੇ ਇਸ ਨੂੰ ਬਦਲੋ। ਪੁਰਾਣੀ key ਤੁਰੰਤ ਕੰਮ ਕਰਨਾ ਬੰਦ ਕਰ ਦਿੰਦੀ ਹੈ।
- ਲੀਕ ਹੋਣ ਤੋਂ ਬਾਅਦ, Keys & usage ਉੱਤੇ ਰਿਕੁਐਸਟਾਂ ਦੀ ਸੂਚੀ ਪੜ੍ਹੋ। ਇਹ ਪਿਛਲੇ 30 ਦਿਨਾਂ ਵਿੱਚ key ਨਾਲ ਕੀਤੀ ਹਰ ਰਿਕੁਐਸਟ ਦਿਖਾਉਂਦੀ ਹੈ।