تخطَّ إلى المحتوى
المصادقة

المصادقة

كل طلب يحمل مفتاح 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، اضبط المفتاح وعنوان base URL؛ وترسل الحزمة 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، اضبط المفتاح وعنوان base URL من دون /v1؛ وترسل الحزمة 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"))

نقاط النهاية التي تحتاج مفتاحاً

نقطة النهاية (Endpoint) المفتاح
POST /v1/chat/completions مطلوب
POST /v1/messages مطلوب
POST /v1/responses مطلوب
POST /v1/tokenize مطلوب
POST /v1/messages/count_tokens مطلوب
GET /v1/models غير مطلوب

مفتاحك

  • المفتاح هو sk- متبوعاً بـ 43 محرفاً من A–Z وa–z و0–9 و- و_: أي 46 محرفاً في المجموع.
  • لكل حساب مفتاح واحد بالضبط. يُنشأ عند أول مرة تفتح فيها المفاتيح والاستخدام.
  • يمنح المفتاح وصولاً كاملاً إلى API لحسابك: كل نقطة نهاية وكل نموذج والرصيد بأكمله.
  • ليس للمفتاح تاريخ انتهاء. يعمل إلى أن تدوّره أو تبطله.

التدوير والإبطال

تدوّر المفتاح وتبطله في صفحة المفاتيح والاستخدام. المفاتيح والاستخدام

الإجراء ما يحدث
تدوير يُصدر مفتاح جديد ويتوقف المفتاح القديم عن العمل. يعمل المفتاح الجديد فوراً.
إبطال يتوقف المفتاح عن العمل ولا يُصدر مفتاح جديد. دوّر للحصول على مفتاح يعمل من جديد.
  • يسري كلاهما فوراً: الطلب التالي بالمفتاح القديم يُجاب بـ 401. اعتبر 60 ثانية الحد الأقصى قبل أن يُرفض المفتاح القديم في كل مكان.
  • كل عميل في الحساب يستخدم المفتاح نفسه، لذا يصل التدوير إلى جميعهم. ضع المفتاح الجديد في عملائك مباشرة بعد التدوير.
  • الرصيد والاستخدام والحماية من الإغراق تتبع الحساب لا المفتاح. المفتاح الجديد يواصل بالرصيد نفسه وبعدد الطلبات نفسه للدقيقة الحالية.

الأخطاء

كل فشل في المصادقة له الحالة 401 والنوع authentication_error. وتفرّق الرسالة بين الحالات.

الحالة النوع الرسالة متى
401 authentication_error Missing authentication الطلب لا يحتوي على ترويسة Authorization: Bearer ولا على ترويسة x-api-key تبدأ بـ sk-. وهذا أيضاً هو الرد على bearer بأحرف صغيرة وعلى قيمة Authorization من دون Bearer.
401 authentication_error Invalid API key المفتاح ليس المفتاح الحالي لأي حساب: إما أنه مكتوب بخطأ، أو أُبطل، أو استُبدل بتدوير.
{
  "error": {
    "type": "authentication_error",
    "message": "Invalid API key",
    "code": "invalid_api_key",
    "param": null
  }
}
  • في كل مسار عدا /v1/messages يحتوي الكائن error أيضاً على code: "invalid_api_key"، حتى عند غياب المفتاح، وعلى param: null.
  • يُفحص المفتاح قبل قراءة النص. الطلب بلا مفتاح صالح يحصل على 401 حتى لو كان نصه غير صالح أو كبيراً جداً.
  • قيمة Authorization: Bearer التي لا تبدأ بـ sk- لا تُعامل كمفتاح API. تحصل على 401 مع رسالة تفيد بأن الـ token غير صالح أو منتهي الصلاحية.

المتصفحات وCORS

  • تجيب API على طلبات المتصفح عبر الأصول المختلفة (cross-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.

حماية المفتاح

  • أبقِ المفتاح على خادم. لا تضعه في صفحات الويب أو تطبيقات الجوال أو المستودعات العامة: من يملكه يستطيع إنفاق رصيدك بالكامل.
  • حمّل المفتاح من متغير بيئة أو من مخزن أسرار بدلاً من كتابته في الشيفرة.
  • إذا احتمل أن المفتاح قد تسرّب، فدوّره في المفاتيح والاستخدام. يتوقف المفتاح القديم عن العمل فوراً.
  • بعد أي تسريب، اقرأ قائمة الطلبات في المفاتيح والاستخدام. تعرض كل طلب أجراه المفتاح خلال آخر 30 يوماً.