Μετάβαση στο περιεχόμενο
Ταυτοποίηση

Ταυτοποίηση

Κάθε αίτημα φέρει το κλειδί API σας σε μια κεφαλίδα. Ένα κλειδί ανά λογαριασμό λειτουργεί σε κάθε endpoint και κάθε μοντέλο, με δύο μορφές κεφαλίδας.

Κεφαλίδα · OpenAI SDKs
Authorization: Bearer YOUR_API_KEY
Κεφαλίδα · Anthropic SDKs
x-api-key: YOUR_API_KEY

Κεφαλίδες που γίνονται δεκτές

Και οι δύο κεφαλίδες διαβάζονται σε κάθε endpoint /v1, όποια μορφή κι αν μιλά το endpoint. Στείλτε τη μία από αυτές.

Κεφαλίδα Περιγραφή
Authorization: Bearer <key> Ελέγχεται πρώτη. Γράψτε το Bearer με κεφαλαίο B και ένα κενό πριν από το κλειδί. Τα OpenAI SDKs στέλνουν αυτή την κεφαλίδα.
x-api-key: <key> Διαβάζεται όταν το αίτημα δεν έχει κεφαλίδα Authorization: Bearer. Τα Anthropic SDKs στέλνουν αυτή την κεφαλίδα.

Με OpenAI SDK, ορίστε το κλειδί και το base 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, ορίστε το κλειδί και το base 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"))

Ποια endpoints χρειάζονται κλειδί

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 δευτερόλεπτα ως το ανώτατο όριο μέχρι το παλιό κλειδί να απορρίπτεται παντού.
  • Όλοι οι clients του λογαριασμού χρησιμοποιούν το ίδιο κλειδί, οπότε μια αναδημιουργία τους επηρεάζει όλους. Βάλτε το νέο κλειδί στους clients σας αμέσως μετά την αναδημιουργία.
  • Το υπόλοιπο, η χρήση και η προστασία από υπερφόρτωση ανήκουν στον λογαριασμό, όχι στο κλειδί. Ένα νέο κλειδί συνεχίζει με το ίδιο υπόλοιπο και τον ίδιο αριθμό αιτημάτων για το τρέχον λεπτό.

Σφάλματα

Κάθε αποτυχία ταυτοποίησης έχει κατάσταση 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 με μήνυμα ότι το token είναι άκυρο ή έχει λήξει.

Browsers και CORS

  • Το API απαντά σε αιτήματα browser από άλλη προέλευση (cross-origin) μόνο για μια σταθερή λίστα προελεύσεων. Η JavaScript σε σελίδα άλλης προέλευσης δεν μπορεί να διαβάσει απαντήσεις /v1.
  • Καλέστε το API από τον διακομιστή σας και αφήστε τη σελίδα σας να μιλά με τον διακομιστή σας. Έτσι το κλειδί μένει και εκτός του πηγαίου κώδικα της σελίδας.
  • Ο κώδικας από την πλευρά του διακομιστή και τα εργαλεία γραμμής εντολών δεν επηρεάζονται: αυτόν τον κανόνα τον εφαρμόζουν μόνο οι browsers.
  • Μια σύνδεση στο shannon-ai.com δεν ταυτοποιεί αιτήματα /v1. Τα cookies δεν διαβάζονται εκεί· το κλειδί είναι το μόνο διαπιστευτήριο.
  • Για μια επιτρεπόμενη προέλευση, ένας browser μπορεί να στείλει τα content-type, authorization, x-api-key, anthropic-version, anthropic-beta, openai-beta και x-request-id, και μπορεί να διαβάσει την κεφαλίδα απάντησης x-request-id.

Ασφαλής φύλαξη του κλειδιού

  • Κρατήστε το κλειδί σε διακομιστή. Μην το βάζετε σε ιστοσελίδες, εφαρμογές για κινητά ή δημόσια αποθετήρια: όποιος το έχει μπορεί να ξοδέψει ολόκληρο το υπόλοιπό σας.
  • Φορτώστε το κλειδί από μεταβλητή περιβάλλοντος ή από αποθήκη μυστικών αντί να το γράφετε στον κώδικα.
  • Αν το κλειδί μπορεί να διέρρευσε, αναδημιουργήστε το στο Κλειδιά & χρήση. Το παλιό κλειδί παύει να λειτουργεί αμέσως.
  • Μετά από διαρροή, διαβάστε τη λίστα αιτημάτων στο Κλειδιά & χρήση. Δείχνει κάθε αίτημα που έκανε το κλειδί τις τελευταίες 30 ημέρες.