ข้ามไปยังเนื้อหา
การยืนยันตัวตน

การยืนยันตัวตน

ทุกคำขอส่ง API key ของคุณในเฮดเดอร์ คีย์เดียวต่อบัญชีใช้ได้กับทุก endpoint และทุกโมเดล ในเฮดเดอร์ได้สองรูปแบบ

เฮดเดอร์ · OpenAI SDK
Authorization: Bearer YOUR_API_KEY
เฮดเดอร์ · Anthropic SDK
x-api-key: YOUR_API_KEY

เฮดเดอร์ที่รับ

ทั้งสองเฮดเดอร์ถูกอ่านในทุก endpoint ของ /v1 ไม่ว่า endpoint นั้นจะใช้รูปแบบใด ส่งเพียงหนึ่งในสองอย่างนี้

เฮดเดอร์ คำอธิบาย
Authorization: Bearer <key> ตรวจก่อนเป็นอันดับแรก เขียน Bearer โดยใช้ B ตัวพิมพ์ใหญ่ และเว้นวรรคหนึ่งครั้งก่อนคีย์ OpenAI SDK ส่งเฮดเดอร์นี้
x-api-key: <key> จะถูกอ่านเมื่อคำขอไม่มีเฮดเดอร์ Authorization: Bearer Anthropic SDK ส่งเฮดเดอร์นี้

กับ OpenAI SDK ให้ตั้งค่าคีย์และ 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)

กับ Anthropic SDK ให้ตั้งค่าคีย์และ base URL โดยไม่มี /v1; 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"))

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 ได้เต็มรูปแบบสำหรับบัญชีของคุณ: ทุก endpoint ทุกโมเดล และยอดคงเหลือทั้งหมด
  • คีย์ไม่มีวันหมดอายุ ใช้งานได้จนกว่าคุณจะหมุนเวียนหรือเพิกถอน

หมุนเวียนและเพิกถอน

คุณหมุนเวียนและเพิกถอนคีย์ได้ที่หน้าคีย์และการใช้งาน คีย์และการใช้งาน

การดำเนินการ ผลที่เกิดขึ้น
หมุนเวียน ระบบออกคีย์ใหม่ และคีย์เก่าหยุดทำงาน คีย์ใหม่ใช้งานได้ทันที
เพิกถอน คีย์หยุดทำงานและไม่มีการออกคีย์ใหม่ หมุนเวียนคีย์เพื่อรับคีย์ที่ใช้งานได้อีกครั้ง
  • ทั้งสองอย่างมีผลทันที: คำขอถัดไปที่ใช้คีย์เก่าจะได้รับ 401 ให้ถือว่า 60 วินาทีเป็นขีดสูงสุดก่อนที่คีย์เก่าจะถูกปฏิเสธทุกที่
  • ไคลเอนต์ทุกตัวของบัญชีใช้คีย์เดียวกัน ดังนั้นการหมุนเวียนคีย์จึงกระทบทั้งหมด ใส่คีย์ใหม่ลงในไคลเอนต์ของคุณทันทีหลังหมุนเวียน
  • ยอดคงเหลือ การใช้งาน และ flood protection เป็นของบัญชี ไม่ใช่ของคีย์ คีย์ใหม่ใช้ยอดคงเหลือเดิมและจำนวนคำขอของนาทีปัจจุบันต่อจากเดิม

ข้อผิดพลาด

ความล้มเหลวในการยืนยันตัวตนทุกกรณีมีสถานะ 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
  • ระบบตรวจคีย์ก่อนอ่าน body คำขอที่ไม่มีคีย์ที่ถูกต้องจะได้ 401 แม้ว่า body จะไม่ถูกต้องหรือใหญ่เกินไป
  • ค่า Authorization: Bearer ที่ไม่ได้ขึ้นต้นด้วย sk- จะไม่ถูกมองว่าเป็น API key และจะได้ 401 พร้อมข้อความว่า token ไม่ถูกต้องหรือหมดอายุ

เบราว์เซอร์และ CORS

  • API ตอบคำขอแบบ cross-origin จากเบราว์เซอร์เฉพาะ origin ที่อยู่ในรายการที่กำหนดไว้ JavaScript บนหน้าของ origin อื่นไม่สามารถอ่านคำตอบของ /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 ได้

การรักษาคีย์ให้ปลอดภัย

  • เก็บคีย์ไว้บนเซิร์ฟเวอร์ อย่าใส่ในหน้าเว็บ แอปมือถือ หรือ repository สาธารณะ: ใครก็ตามที่ถือคีย์นี้ใช้ยอดคงเหลือของคุณได้ทั้งหมด
  • โหลดคีย์จากตัวแปรสภาพแวดล้อมหรือที่เก็บความลับ แทนการเขียนลงในโค้ด
  • หากคีย์อาจรั่วไหล ให้หมุนเวียนคีย์ในหน้าคีย์และการใช้งาน คีย์เก่าจะหยุดทำงานทันที
  • หลังเกิดการรั่วไหล ให้ดูรายการคำขอในหน้าคีย์และการใช้งาน ซึ่งแสดงทุกคำขอที่คีย์ส่งในช่วง 30 วันที่ผ่านมา