কনটেন্টে যান
প্রমাণীকরণ

প্রমাণীকরণ

প্রতিটি রিকোয়েস্ট আপনার API key একটি হেডারে বহন করে। অ্যাকাউন্ট প্রতি একটি key প্রতিটি এন্ডপয়েন্ট ও প্রতিটি মডেলে কাজ করে, দুটি হেডার ফর্মের যেকোনো একটিতে।

হেডার · OpenAI SDK
Authorization: Bearer YOUR_API_KEY
হেডার · Anthropic SDK
x-api-key: YOUR_API_KEY

গ্রহণযোগ্য হেডার

দুটি হেডারই প্রতিটি /v1 এন্ডপয়েন্টে পড়া হয়, এন্ডপয়েন্ট যে ফরম্যাটেই কথা বলুক। এর একটি পাঠান।

হেডার বিবরণ
Authorization: Bearer <key> প্রথমে যাচাই করা হয়। Bearer বড় হাতের B দিয়ে লিখুন এবং key-র আগে একটি স্পেস দিন। OpenAI SDK এই হেডার পাঠায়।
x-api-key: <key> রিকোয়েস্টে Authorization: Bearer হেডার না থাকলে পড়া হয়। Anthropic SDK এই হেডার পাঠায়।

OpenAI SDK দিয়ে key ও বেস 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)

Anthropic SDK দিয়ে key এবং /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"))

কোন এন্ডপয়েন্টে 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-তে পূর্ণ অ্যাক্সেস দেয়: প্রতিটি এন্ডপয়েন্ট, প্রতিটি মডেল এবং পুরো ব্যালেন্স।
  • key-র কোনো মেয়াদ শেষের তারিখ নেই। আপনি রোটেট বা বাতিল না করা পর্যন্ত এটি কাজ করে।

রোটেট ও বাতিল

আপনি Keys & usage পেজে key রোটেট ও বাতিল করেন। Keys & usage

কাজ কী ঘটে
রোটেট করুন একটি নতুন key দেওয়া হয় এবং পুরনো key কাজ করা বন্ধ করে। নতুন key সঙ্গে সঙ্গে কাজ করে।
বাতিল করুন key কাজ করা বন্ধ করে এবং কোনো নতুন key দেওয়া হয় না। আবার কার্যকর key পেতে রোটেট করুন।
  • দুটিই সঙ্গে সঙ্গে কার্যকর হয়: পুরনো key দিয়ে পরের রিকোয়েস্টের উত্তর হয় 401। পুরনো key সব জায়গায় প্রত্যাখ্যাত হওয়ার ঊর্ধ্বসীমা হিসেবে 60 সেকেন্ড ধরুন।
  • অ্যাকাউন্টের প্রতিটি ক্লায়েন্ট একই 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 নয়: এটি ভুল টাইপ করা হয়েছে, বাতিল করা হয়েছে, অথবা রোটেশনে বদলে গেছে।
{
  "error": {
    "type": "authentication_error",
    "message": "Invalid API key",
    "code": "invalid_api_key",
    "param": null
  }
}
  • /v1/messages ছাড়া প্রতিটি পাথে error অবজেক্টে code: "invalid_api_key" এবং param: null-ও থাকে, key না থাকলেও।
  • বডি পড়ার আগেই key যাচাই করা হয়। বৈধ key ছাড়া রিকোয়েস্টের বডি অবৈধ বা খুব বড় হলেও সেটি 401 পায়।
  • sk- দিয়ে শুরু না হওয়া Authorization: Bearer মান API key হিসেবে গণ্য হয় না। এটি 401 পায়, সঙ্গে মেসেজ থাকে যে টোকেনটি অবৈধ বা মেয়াদোত্তীর্ণ।

ব্রাউজার ও CORS

  • API শুধু একটি নির্দিষ্ট origin-তালিকার জন্য ক্রস-অরিজিন ব্রাউজার রিকোয়েস্টের উত্তর দেয়। অন্য 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 কোডে লেখার বদলে এনভায়রনমেন্ট ভ্যারিয়েবল বা সিক্রেট স্টোর থেকে লোড করুন।
  • key লিক হয়ে থাকতে পারে মনে হলে Keys & usage-এ এটি রোটেট করুন। পুরনো key সঙ্গে সঙ্গে কাজ করা বন্ধ করে।
  • লিক হওয়ার পর Keys & usage-এর রিকোয়েস্ট তালিকা পড়ুন। এতে গত 30 দিনে key দিয়ে করা প্রতিটি রিকোয়েস্ট দেখা যায়।