Lumaktaw sa nilalaman
Pagpapatunay

Pagpapatunay

Ang bawat request ay may dalang iyong API key sa isang header. Isang key kada account ang gumagana sa bawat endpoint at bawat model, sa alinman sa dalawang anyo ng header.

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

Mga tinatanggap na header

Binabasa ang parehong header sa bawat /v1 endpoint, anuman ang format na sinasalita ng endpoint. Magpadala ng isa sa mga ito.

Header Paglalarawan
Authorization: Bearer <key> Unang sinusuri. Isulat ang Bearer na may malaking B at isang espasyo bago ang key. Ipinapadala ng mga OpenAI SDK ang header na ito.
x-api-key: <key> Binabasa kapag walang Authorization: Bearer header ang request. Ipinapadala ng mga Anthropic SDK ang header na ito.

Sa OpenAI SDK, i-set ang key at ang base URL; ipinapadala ng SDK ang 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)

Sa Anthropic SDK, i-set ang key at ang base URL na walang /v1; ipinapadala ng SDK ang 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"))

Aling mga endpoint ang nangangailangan ng key

Endpoint Key
POST /v1/chat/completions Kinakailangan
POST /v1/messages Kinakailangan
POST /v1/responses Kinakailangan
POST /v1/tokenize Kinakailangan
POST /v1/messages/count_tokens Kinakailangan
GET /v1/models Hindi kailangan

Ang iyong key

  • Ang key ay sk- na sinusundan ng 43 character mula sa A–Z, a–z, 0–9, - at _: 46 na character sa kabuuan.
  • Bawat account ay may eksaktong isang key. Nagagawa ito sa unang pagbukas mo ng Keys & usage.
  • Binibigyan ng key ang iyong account ng buong access sa API: bawat endpoint, bawat model at ang buong balance.
  • Walang expiry date ang key. Gumagana ito hanggang i-rotate o i-revoke mo.

I-rotate at i-revoke

Nagro-rotate at nagre-revoke ka ng key sa pahinang Keys & usage. Keys & usage

Aksyon Ano ang mangyayari
I-rotate Maglalabas ng bagong key at titigil gumana ang luma. Agad gumagana ang bagong key.
I-revoke Titigil gumana ang key at walang ilalabas na bagong key. Mag-rotate para makakuha muli ng gumaganang key.
  • Parehong agad na may bisa: sasagutin ng 401 ang susunod na request gamit ang lumang key. Ituring ang 60 segundo bilang pinakamataas na hangganan bago tanggihan saanman ang lumang key.
  • Parehong key ang ginagamit ng bawat client ng account, kaya naaabot ng rotation ang lahat. Ilagay ang bagong key sa iyong mga client pagkatapos mismong mag-rotate.
  • Pag-aari ng account, hindi ng key, ang balance, usage at flood protection. Ang bagong key ay nagpapatuloy sa parehong balance at parehong bilang ng request para sa kasalukuyang minuto.

Mga error

Ang bawat pagkabigo sa authentication ay may status na 401 at type na authentication_error. Ang mensahe ang nagpapakilala sa mga kaso.

Status Type Mensahe Kailan
401 authentication_error Missing authentication Walang Authorization: Bearer header ang request, at walang x-api-key header na nagsisimula sa sk-. Ito rin ang sagot sa bearer na lowercase at sa value ng Authorization na walang Bearer.
401 authentication_error Invalid API key Hindi ang kasalukuyang key ng isang account ang key: nagkamali sa pag-type, na-revoke, o napalitan sa pamamagitan ng rotation.
{
  "error": {
    "type": "authentication_error",
    "message": "Invalid API key",
    "code": "invalid_api_key",
    "param": null
  }
}
  • Sa bawat path maliban sa /v1/messages, taglay din ng error object ang code: "invalid_api_key", pati para sa nawawalang key, at param: null.
  • Sinusuri ang key bago basahin ang body. Ang request na walang valid na key ay nakakakuha ng 401 kahit invalid o masyadong malaki ang body nito.
  • Hindi itinuturing na API key ang value ng Authorization: Bearer na hindi nagsisimula sa sk-. Nakakakuha ito ng 401 na may mensaheng invalid o expired ang token.

Mga browser at CORS

  • Sumasagot lang ang API sa mga cross-origin na request ng browser para sa nakatakdang listahan ng mga origin. Hindi mababasa ng JavaScript sa pahina ng ibang origin ang mga /v1 reply.
  • Tawagin ang API mula sa iyong server at hayaang makipag-usap ang iyong pahina sa iyong server. Pinipigilan din nito ang key na mapunta sa source ng pahina.
  • Hindi apektado ang server-side code at mga command-line tool: mga browser lang ang nag-a-apply ng patakarang ito.
  • Hindi nagpapatunay ng mga /v1 request ang sign-in sa shannon-ai.com. Hindi binabasa roon ang cookies; ang key lang ang credential.
  • Para sa isang pinapayagang origin, maaaring magpadala ang browser ng content-type, authorization, x-api-key, anthropic-version, anthropic-beta, openai-beta at x-request-id, at maaaring basahin ang reply header na x-request-id.

Pagpapanatiling ligtas ng key

  • Itago ang key sa isang server. Huwag ilagay sa mga web page, mobile app o pampublikong repository: magagastos ng sinumang may hawak nito ang buong balance mo.
  • I-load ang key mula sa environment variable o secret store sa halip na isulat ito sa code.
  • Kung maaaring na-leak ang key, i-rotate ito sa Keys & usage. Agad titigil gumana ang lumang key.
  • Pagkatapos ng leak, basahin ang listahan ng request sa Keys & usage. Ipinapakita nito ang bawat request na ginawa ng key sa nakalipas na 30 araw.