Перейти до вмісту
Аутентифікація

Аутентифікація

Кожен запит містить ваш API-ключ у заголовку. Один ключ на обліковий запис працює з кожним ендпоінтом і кожною моделлю, у будь-якій з двох форм заголовка.

Заголовок · SDK від OpenAI
Authorization: Bearer YOUR_API_KEY
Заголовок · SDK від Anthropic
x-api-key: YOUR_API_KEY

Прийнятні заголовки

Обидва заголовки читаються на кожному ендпоінті /v1, незалежно від формату, яким говорить ендпоінт. Надішліть один з них.

Заголовок Опис
Authorization: Bearer <key> Перевіряється першим. Пишіть Bearer з великої літери B та одним пробілом перед ключем. SDK від OpenAI надсилають цей заголовок.
x-api-key: <key> Читається, коли в запиті немає заголовка Authorization: Bearer. SDK від Anthropic надсилають цей заголовок.

В SDK від OpenAI задайте ключ і базовий 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)

В SDK від Anthropic задайте ключ і базовий 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"))

Яким ендпоінтам потрібен ключ

Ендпоінт Ключ
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 з повідомленням, що токен недійсний або прострочений.

Браузери та CORS

  • API відповідає на міжджерельні (cross-origin) запити браузера лише для фіксованого списку origin. JavaScript на сторінці іншого origin не може читати відповіді /v1.
  • Викликайте API зі свого сервера, а сторінка нехай звертається до вашого сервера. Так ключ також не потрапляє у вихідний код сторінки.
  • Серверний код і засоби командного рядка це не стосується: це правило застосовують лише браузери.
  • Вхід на shannon-ai.com не автентифікує запити /v1. Cookies там не читаються; ключ — єдині облікові дані.
  • Для дозволеного origin браузер може надсилати content-type, authorization, x-api-key, anthropic-version, anthropic-beta, openai-beta і x-request-id та може читати заголовок відповіді x-request-id.

Як зберегти ключ у безпеці

  • Зберігайте ключ на сервері. Не вставляйте його у веб-сторінки, мобільні застосунки чи публічні репозиторії: той, хто його має, може витратити весь ваш баланс.
  • Завантажуйте ключ зі змінної середовища або сховища секретів замість того, щоб записувати його в код.
  • Якщо ключ міг витекти, замініть його в «Ключі та використання». Старий ключ перестане працювати негайно.
  • Після витоку перегляньте список запитів у «Ключі та використання». Він показує кожен запит, зроблений ключем за останні 30 днів.