Chuyển đến nội dung
Xác thực

Xác thực

Mỗi yêu cầu mang API key của bạn trong một header. Một key cho mỗi tài khoản hoạt động trên mọi endpoint và mọi model, theo một trong hai dạng header.

Header · OpenAI SDK
Authorization: Bearer YOUR_API_KEY
Header · Anthropic SDK
x-api-key: YOUR_API_KEY

Các header được chấp nhận

Cả hai header đều được đọc trên mọi endpoint /v1, bất kể endpoint đó dùng định dạng nào. Hãy gửi một trong hai.

Header Mô tả
Authorization: Bearer <key> Được kiểm tra đầu tiên. Viết Bearer với chữ B hoa và một dấu cách trước key. Các OpenAI SDK gửi header này.
x-api-key: <key> Được đọc khi yêu cầu không có header Authorization: Bearer. Các Anthropic SDK gửi header này.

Với OpenAI SDK, hãy đặt key và base URL; SDK sẽ gửi 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)

Với Anthropic SDK, hãy đặt key và base URL không có /v1; SDK sẽ gửi 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 nào cần key

Endpoint Key
POST /v1/chat/completions Bắt buộc
POST /v1/messages Bắt buộc
POST /v1/responses Bắt buộc
POST /v1/tokenize Bắt buộc
POST /v1/messages/count_tokens Bắt buộc
GET /v1/models Không cần

Key của bạn

  • Một key là sk- theo sau là 43 ký tự từ A–Z, a–z, 0–9, - và _: tổng cộng 46 ký tự.
  • Mỗi tài khoản có đúng một key. Key được tạo vào lần đầu bạn mở Keys & usage.
  • Key cấp toàn quyền truy cập API cho tài khoản của bạn: mọi endpoint, mọi model và toàn bộ số dư.
  • Key không có ngày hết hạn. Nó hoạt động cho đến khi bạn xoay vòng hoặc thu hồi.

Xoay vòng và thu hồi

Bạn xoay vòng và thu hồi key ở trang Keys & usage. Keys & usage

Hành động Điều xảy ra
Xoay vòng Một key mới được cấp và key cũ ngừng hoạt động. Key mới hoạt động ngay lập tức.
Thu hồi Key ngừng hoạt động và không có key mới nào được cấp. Hãy xoay vòng để có lại key hoạt động.
  • Cả hai có hiệu lực ngay: yêu cầu tiếp theo với key cũ sẽ nhận 401. Hãy coi 60 giây là giới hạn trên trước khi key cũ bị từ chối ở mọi nơi.
  • Mọi client của tài khoản dùng cùng một key, nên việc xoay vòng ảnh hưởng đến tất cả. Hãy đưa key mới vào các client của bạn ngay sau khi xoay vòng.
  • Số dư, mức sử dụng và flood protection thuộc về tài khoản, không thuộc về key. Key mới tiếp tục với cùng số dư và cùng số yêu cầu của phút hiện tại.

Lỗi

Mọi lỗi xác thực đều có trạng thái 401 và loại authentication_error. Thông báo cho biết đó là trường hợp nào.

Trạng thái Loại Thông báo Khi nào
401 authentication_error Missing authentication Yêu cầu không có header Authorization: Bearer cũng không có header x-api-key bắt đầu bằng sk-. Đây cũng là phản hồi cho bearer viết thường và cho giá trị Authorization không có Bearer.
401 authentication_error Invalid API key Key không phải là key hiện tại của một tài khoản: bị gõ sai, đã bị thu hồi, hoặc đã được thay thế bởi một lần xoay vòng.
{
  "error": {
    "type": "authentication_error",
    "message": "Invalid API key",
    "code": "invalid_api_key",
    "param": null
  }
}
  • Trên mọi đường dẫn trừ /v1/messages, đối tượng error còn chứa code: "invalid_api_key", cả khi thiếu key, và param: null.
  • Key được kiểm tra trước khi nội dung yêu cầu được đọc. Yêu cầu không có key hợp lệ nhận 401 ngay cả khi nội dung của nó không hợp lệ hoặc quá lớn.
  • Giá trị Authorization: Bearer không bắt đầu bằng sk- không được coi là API key. Nó nhận 401 kèm thông báo rằng token không hợp lệ hoặc đã hết hạn.

Trình duyệt và CORS

  • API chỉ trả lời các yêu cầu cross-origin từ trình duyệt đối với một danh sách origin cố định. JavaScript trên trang thuộc origin khác không thể đọc phản hồi /v1.
  • Hãy gọi API từ server của bạn và để trang của bạn trao đổi với server đó. Cách này cũng giữ key ra khỏi mã nguồn của trang.
  • Mã phía server và công cụ dòng lệnh không bị ảnh hưởng: quy tắc này chỉ do trình duyệt áp dụng.
  • Việc đăng nhập trên shannon-ai.com không xác thực các yêu cầu /v1. Cookie không được đọc ở đó; key là thông tin xác thực duy nhất.
  • Với một origin được phép, trình duyệt có thể gửi content-type, authorization, x-api-key, anthropic-version, anthropic-beta, openai-beta và x-request-id, và có thể đọc header phản hồi x-request-id.

Giữ an toàn cho key

  • Hãy giữ key trên server. Đừng đưa nó vào trang web, ứng dụng di động hay repository công khai: ai có key đều có thể tiêu hết số dư của bạn.
  • Hãy nạp key từ biến môi trường hoặc kho bí mật thay vì viết thẳng vào mã.
  • Nếu key có thể đã bị lộ, hãy xoay vòng nó ở Keys & usage. Key cũ ngừng hoạt động ngay lập tức.
  • Sau khi bị lộ, hãy đọc danh sách yêu cầu ở Keys & usage. Danh sách cho thấy mọi yêu cầu mà key đã thực hiện trong 30 ngày qua.