Przejdź do treści
Uwierzytelnianie

Uwierzytelnianie

Każde zapytanie niesie Twój klucz API w nagłówku. Jeden klucz na konto działa w każdym endpoincie i z każdym modelem, w jednej z dwóch form nagłówka.

Nagłówek · SDK OpenAI
Authorization: Bearer YOUR_API_KEY
Nagłówek · SDK Anthropic
x-api-key: YOUR_API_KEY

Akceptowane nagłówki

Oba nagłówki są odczytywane w każdym endpoincie /v1, niezależnie od formatu, w którym endpoint mówi. Wyślij jeden z nich.

Nagłówek Opis
Authorization: Bearer <key> Sprawdzany jako pierwszy. Pisz Bearer wielką literą B i jedną spacją przed kluczem. SDK OpenAI wysyłają ten nagłówek.
x-api-key: <key> Odczytywany, gdy zapytanie nie ma nagłówka Authorization: Bearer. SDK Anthropic wysyłają ten nagłówek.

W SDK OpenAI ustaw klucz i bazowy URL; SDK wysyła 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)

W SDK Anthropic ustaw klucz i bazowy URL bez /v1; SDK wysyła 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"))

Które endpointy wymagają klucza

Endpoint Klucz
POST /v1/chat/completions Wymagany
POST /v1/messages Wymagany
POST /v1/responses Wymagany
POST /v1/tokenize Wymagany
POST /v1/messages/count_tokens Wymagany
GET /v1/models Niepotrzebny

Twój klucz

  • Klucz to sk- i 43 znaki z zakresu A–Z, a–z, 0–9, - oraz _: razem 46 znaków.
  • Każde konto ma dokładnie jeden klucz. Tworzy się go przy pierwszym otwarciu Keys & usage.
  • Klucz daje pełny dostęp do API dla Twojego konta: każdy endpoint, każdy model i całe saldo.
  • Klucz nie ma daty ważności. Działa, dopóki go nie zrotujesz lub nie unieważnisz.

Rotacja i unieważnianie

Klucz rotujesz i unieważniasz na stronie Keys & usage. Keys & usage

Działanie Co się dzieje
Zrotuj Wydawany jest nowy klucz, a stary przestaje działać. Nowy klucz działa od razu.
Unieważnij Klucz przestaje działać i nie jest wydawany nowy. Zrotuj, aby ponownie mieć działający klucz.
  • Oba działania wchodzą w życie od razu: następne zapytanie ze starym kluczem dostaje odpowiedź 401. Przyjmij 60 sekund jako górną granicę, po której stary klucz jest odrzucany wszędzie.
  • Wszyscy klienci konta używają tego samego klucza, więc rotacja dotyczy ich wszystkich. Wstaw nowy klucz do swoich klientów zaraz po rotacji.
  • Saldo, użycie i ochrona przed floodem należą do konta, nie do klucza. Nowy klucz kontynuuje z tym samym saldem i tym samym licznikiem zapytań w bieżącej minucie.

Błędy

Każdy błąd uwierzytelniania ma status 401 i typ authentication_error. Komunikat pozwala odróżnić przypadki.

Status Typ Komunikat Kiedy
401 authentication_error Missing authentication Zapytanie nie ma ani nagłówka Authorization: Bearer, ani nagłówka x-api-key zaczynającego się od sk-. Taka jest też odpowiedź na bearer małymi literami oraz na wartość Authorization bez Bearer.
401 authentication_error Invalid API key Klucz nie jest aktualnym kluczem żadnego konta: jest błędnie wpisany, został unieważniony albo zastąpiony przez rotację.
{
  "error": {
    "type": "authentication_error",
    "message": "Invalid API key",
    "code": "invalid_api_key",
    "param": null
  }
}
  • W każdej ścieżce poza /v1/messages obiekt error zawiera też code: "invalid_api_key", także przy braku klucza, oraz param: null.
  • Klucz jest sprawdzany przed odczytaniem treści zapytania. Zapytanie bez ważnego klucza dostaje 401, nawet gdy jego treść jest nieprawidłowa lub zbyt duża.
  • Wartość Authorization: Bearer, która nie zaczyna się od sk-, nie jest traktowana jako klucz API. Dostaje 401 z komunikatem, że token jest nieprawidłowy lub wygasł.

Przeglądarki i CORS

  • API odpowiada na zapytania przeglądarek między originami tylko dla ustalonej listy originów. JavaScript na stronie z innego originu nie może odczytać odpowiedzi /v1.
  • Wywołuj API ze swojego serwera i niech Twoja strona komunikuje się z Twoim serwerem. Dzięki temu klucz nie trafia też do kodu źródłowego strony.
  • Kod po stronie serwera i narzędzia wiersza poleceń nie są objęte tą regułą: stosują ją wyłącznie przeglądarki.
  • Zalogowanie na shannon-ai.com nie uwierzytelnia zapytań /v1. Cookies nie są tam odczytywane; jedynym poświadczeniem jest klucz.
  • Dla dozwolonego origin przeglądarka może wysyłać content-type, authorization, x-api-key, anthropic-version, anthropic-beta, openai-beta i x-request-id oraz może odczytywać nagłówek odpowiedzi x-request-id.

Bezpieczne przechowywanie klucza

  • Trzymaj klucz na serwerze. Nie umieszczaj go na stronach internetowych, w aplikacjach mobilnych ani w publicznych repozytoriach: kto go ma, może wydać całe Twoje saldo.
  • Ładuj klucz ze zmiennej środowiskowej lub magazynu sekretów zamiast wpisywać go w kod.
  • Jeśli klucz mógł wyciec, zrotuj go w Keys & usage. Stary klucz przestaje działać natychmiast.
  • Po wycieku przejrzyj listę zapytań w Keys & usage. Pokazuje każde zapytanie wykonane kluczem w ciągu ostatnich 30 dni.