Прескокни до содржината
Автентикација

Автентикација

Секое барање го носи вашиот API клуч во заглавие. Еден клуч по сметка работи на секој 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, поставете го клучот и основниот 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, поставете го клучот и основниот 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.
  • Клучот се проверува пред да се прочита телото. Барање без важечки клуч добива 401 дури и кога неговото тело е неважечко или преголемо.
  • Вредност Authorization: Bearer што не започнува со sk- не се третира како API клуч. Добива 401 со порака дека токенот е неважечки или истечен.

Прелистувачи и CORS

  • API-то одговара на cross-origin барања од прелистувач само за фиксна листа на потекла. JavaScript на страница од друго потекло не може да ги чита одговорите од /v1.
  • Повикувајте го API-то од вашиот сервер и оставете ја вашата страница да комуницира со вашиот сервер. Така клучот останува надвор од изворниот код на страницата.
  • Кодот на серверската страна и алатките од командна линија не се засегнати: ова правило го применуваат само прелистувачите.
  • Најавата на shannon-ai.com не ги автентицира барањата до /v1. Колачињата таму не се читаат; клучот е единствениот акредитив.
  • За дозволено потекло, прелистувачот може да испрати content-type, authorization, x-api-key, anthropic-version, anthropic-beta, openai-beta и x-request-id, и може да го прочита заглавието на одговорот x-request-id.

Како да го чувате клучот безбедно

  • Чувајте го клучот на сервер. Не го ставајте во веб страници, мобилни апликации или јавни репозиториуми: кој и да го има може да го потроши вашето целосно салдо.
  • Вчитајте го клучот од променлива на околината или од складиште на тајни, наместо да го пишувате во кодот.
  • Ако клучот можеби протекол, ротирајте го во Клучеви и употреба. Стариот клуч веднаш престанува да работи.
  • По протекување, прочитајте ја листата на барања во Клучеви и употреба. Ги прикажува сите барања што клучот ги направил во последните 30 дена.