Επισκόπηση
Ο χάρτης του API: κάθε endpoint, πώς μοιάζουν ένα αίτημα και ένα σφάλμα, πώς πληρώνονται οι κλήσεις και τι πρέπει να γνωρίζετε όταν έρχεστε από SDK της OpenAI ή της Anthropic.
Endpoints
Κάθε endpoint βρίσκεται κάτω από ένα base URL και εξυπηρετείται μέσω HTTPS.
https://api.shannon-ai.com | Endpoint | Μορφή | Σε τι χρησιμεύει |
|---|---|---|
POST /v1/chat/completions | OpenAI Chat Completions | Στέλνετε μια συνομιλία, παίρνετε την επόμενη απάντηση. Με ή χωρίς streaming. |
POST /v1/messages | Anthropic Messages | Το ίδιο, στις μορφές αιτήματος και απάντησης των SDK της Anthropic. |
POST /v1/responses | OpenAI Responses | Το ίδιο, στις μορφές του Responses. Το endpoint δεν κρατά κατάσταση: στείλτε τη συνομιλία με κάθε αίτημα. |
GET /v1/models | Λίστα μοντέλων OpenAI | Απαριθμεί τα μοντέλα με παράθυρο συμφραζομένων, τιμές και δυνατότητες. Δεν χρειάζεται κλειδί. |
POST /v1/tokenize | Shannon API | Μετρά τα tokens ενός κειμένου ή ενός αιτήματος chat για φιλοξενούμενο μοντέλο ανοιχτών βαρών. Δωρεάν. |
POST /v1/messages/count_tokens | Μέτρηση tokens Anthropic | Μετρά τα tokens εισόδου ενός αιτήματος Messages για φιλοξενούμενο μοντέλο ανοιχτών βαρών. Δωρεάν. |
Τα τρία endpoints που παράγουν κείμενο φτάνουν στα ίδια μοντέλα. Διαλέξτε αυτό του οποίου τη μορφή χρησιμοποιεί ήδη ο κώδικάς σας.
Βασικά του αιτήματος
| Κεφαλίδα | Περιγραφή |
|---|---|
Authorization: Bearer <key> | Το κλειδί API σας. Απαιτείται σε κάθε endpoint εκτός από το GET /v1/models, εκτός αν στείλετε x-api-key. |
x-api-key: <key> | Το ίδιο κλειδί στην κεφαλίδα που στέλνουν τα SDK της Anthropic. Διαβάζεται σε κάθε endpoint. |
Content-Type: application/json | Απαιτείται σε κάθε POST. Χωρίς αυτήν η απάντηση είναι 415. |
x-request-id: <your id> | Προαιρετική. Το δικό σας id για το αίτημα· επιστρέφει στην κεφαλίδα απάντησης x-request-id. Χωρίς αυτήν το API δημιουργεί ένα από 12 δεκαεξαδικούς χαρακτήρες. |
- Το σώμα κάθε
POSTείναι ένα αντικείμενο JSON, έως 32 MiB. - Ένα πεδίο που το API δεν γνωρίζει δεν προκαλεί σφάλμα και δεν έχει αποτέλεσμα. Ένα αίτημα γραμμένο για άλλον πάροχο δεν αποτυγχάνει εξαιτίας ενός επιπλέον πεδίου.
- Ένα γνωστό πεδίο με λάθος τύπο JSON, ή ένα υποχρεωτικό πεδίο που λείπει, απαντάται με
422. Ένα σώμα που δεν είναι έγκυρο JSON απαντάται με400. - Το
modelείναι ένα από τα ids στη σελίδα Μοντέλα & τιμές. Τα πεζά και τα κεφαλαία δεν παίζουν ρόλο.
Μια απάντηση είναι JSON, ή stream από server-sent events όταν το αίτημα ορίζει το stream σε true. Κάθε endpoint απαντά στη δική του μορφή. Κάθε απάντηση έχει την κεφαλίδα x-request-id.
Από τι περνά ένα αίτημα
Ένα αίτημα ελέγχεται με σταθερή σειρά πριν τρέξει μοντέλο. Απαντά ο πρώτος έλεγχος που αποτυγχάνει, οπότε ένα 401 δεν σας λέει ακόμη τίποτα για το σώμα.
| Έλεγχος, με αυτή τη σειρά | Κατάσταση όταν αποτυγχάνει |
|---|---|
| Κλειδί API | 401 |
| Σώμα: μέγεθος, τύπος περιεχομένου, JSON, τύποι πεδίων | 413 · 415 · 400 · 422 |
| Id μοντέλου | 400 |
| Προστασία από υπερφόρτωση: 120 αιτήματα ανά λεπτό ανά λογαριασμό | 429 |
| Υπόλοιπο: ο προϋπολογισμός εξόδου του αιτήματος πρέπει να χωράει | 429 |
Μορφή σφάλματος
Ένα σφάλμα είναι αντικείμενο JSON με ένα error που περιέχει type και message. Το /v1/messages το τυλίγει όπως το περιμένουν τα SDK της Anthropic· κάθε άλλη διαδρομή χρησιμοποιεί τη μορφή OpenAI.
{
"error": {
"type": "invalid_request_error",
"message": "unknown model: gpt-4o"
}
} {
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "unknown model: gpt-4o"
}
} - Διαβάστε το
typeκαι τοmessage. Ταcodeκαιparamυπάρχουν μόνο σε ορισμένα σφάλματα: αντιμετωπίστε τα ως προαιρετικά. Τοparamείναι πάνταnull. - Αφού ξεκινήσει ένα stream, η κατάσταση είναι ήδη
200. Μια αποτυχία φτάνει τότε ως frame σφάλματος μέσα στο stream. - Κάθε απάντηση σφάλματος φέρει την κεφαλίδα
x-request-id.
| Κατάσταση | Τύπος | Πότε |
|---|---|---|
400 | invalid_request_error | Το σώμα δεν είναι έγκυρο JSON, το id μοντέλου είναι άγνωστο, ή το μοντέλο δεν δέχεται ένα είδος εισόδου που στείλατε. |
401 | authentication_error | Το κλειδί λείπει ή δεν είναι έγκυρο. |
404 | not_found_error | Η διαδρομή δεν υπάρχει. |
405 | api_error | Η διαδρομή υπάρχει, η μέθοδος είναι λάθος. |
413 | invalid_request_error | Το σώμα είναι μεγαλύτερο από 32 MiB. |
415 | invalid_request_error | Το Content-Type δεν είναι application/json. |
422 | invalid_request_error | Ένα πεδίο έχει λάθος τύπο JSON ή λείπει ένα υποχρεωτικό πεδίο. |
429 | rate_limit_error | Το υπόλοιπο δεν καλύπτει το αίτημα, έφτασαν περισσότερα από 120 αιτήματα σε ένα λεπτό, οι κλήσεις Shannon Coder του παραθύρου εξαντλήθηκαν, ή το μοντέλο είναι απασχολημένο. Το μήνυμα λέει ποιο ισχύει. |
5xx | api_error | Κατάσταση 500, 502, 503 ή 504: το αίτημα ήταν έγκυρο και δεν μπόρεσε να απαντηθεί. Στείλτε το ξανά. Ένα 500 μπορεί να φέρει τον τύπο server_error. |
Χρέωση και υπόλοιπο
- Υπάρχει ένα υπόλοιπο ανά λογαριασμό, και το chat και το API το μοιράζονται: πρώτα το σημερινό ημερήσιο όριο του πλάνου, μετά το αγορασμένο credit. Το API δεν έχει δική του ποσόστωση.
- Ένα αίτημα δεσμεύει τον προϋπολογισμό εξόδου του (
max_tokens, προεπιλογή 4,096) και στη συνέχεια χρεώνεται για τα tokens που χρησιμοποίησε πραγματικά, με την τιμή του μοντέλου. - Κάθε απάντηση αναφέρει τους αριθμούς tokens στο
usage. Η σελίδα Κλειδιά & χρήση δείχνει το υπόλοιπο και το κόστος κάθε αιτήματος. - Κάθε αίτημα εξυπηρετείται ισότιμα. Το μόνο όριο στον ρυθμό αιτημάτων είναι η προστασία από υπερφόρτωση: 120 αιτήματα ανά λεπτό ανά λογαριασμό. Τα αιτήματα που στέλνονται παράλληλα περιμένουν σε ουρά.
Όρια και υπόλοιπο Μοντέλα & τιμές Κλειδιά & χρήση
Πεδία που εξαρτώνται από το μοντέλο
Κάθε μοντέλο δέχεται το ίδιο αίτημα. Μερικά πεδία ισχύουν μόνο σε ορισμένα μοντέλα· ο πίνακας ονομάζει πού. Οι σελίδες των endpoints απαριθμούν κάθε πεδίο.
| Πεδίο | Περιγραφή | Εφαρμόζεται από |
|---|---|---|
system | Οδηγίες για το μοντέλο: μήνυμα system στα Chat Completions, system στο Messages, instructions στο Responses. | Φιλοξενούμενα μοντέλα ανοιχτών βαρών, shannon-1.6-*, shannon-2-*, shannon-coder-1 |
temperature | Θερμοκρασία δειγματοληψίας. | Φιλοξενούμενα μοντέλα ανοιχτών βαρών, shannon-1.6-*, shannon-coder-1 |
top_p | Δειγματοληψία πυρήνα (nucleus). | Φιλοξενούμενα μοντέλα ανοιχτών βαρών |
seed | Σταθερό seed για τη δειγματοληψία. | Φιλοξενούμενα μοντέλα ανοιχτών βαρών |
stop | Έως 4 ακολουθίες διακοπής. | Φιλοξενούμενα μοντέλα ανοιχτών βαρών |
reasoning_effort | Πόσο συλλογίζεται το μοντέλο πριν απαντήσει. reasoning.effort στο Responses, thinking στο Messages. | Φιλοξενούμενα μοντέλα ανοιχτών βαρών |
web_search | Το true αφήνει το μοντέλο να αναζητήσει στον ιστό για αυτό το αίτημα. Πεδίο αυτού του API, στα Chat Completions και Messages. | Μοντέλα Shannon εκτός από το shannon-coder-1 |
max_tokens | Ο προϋπολογισμός εξόδου. Σε κάθε μοντέλο ορίζει το ποσό που δεσμεύεται από το υπόλοιπό σας. | Ως όριο στο μήκος της απάντησης: φιλοξενούμενα μοντέλα ανοιχτών βαρών, shannon-1.6-*, shannon-coder-1 |
Αν έρχεστε από SDK της OpenAI
- Ορίστε το base URL σε
https://api.shannon-ai.com/v1και το κλειδί στο κλειδί Shannon σας. Οι κλήσεις Chat Completions και Responses δουλεύουν τότε με το SDK ως έχει. - Το
modelπρέπει να είναι id Shannon. Ένα όνομα μοντέλου άλλου παρόχου, όπως τοgpt-4o, απαντάται με400καιunknown model. - Ο συλλογισμός έρχεται σε δικό του πεδίο:
reasoning_contentδίπλα στοcontent, στο μήνυμα και στα deltas του stream. - Ένα stream φέρει πάντα το
usageστο τελευταίο του chunk, μαζί με τοfinish_reason. - Μια κλήση εργαλείου σε stream φτάνει ως ένα chunk με ολόκληρο το string
arguments. - Μια απάντηση έχει μία επιλογή.
- Οι διαδρομές του API της OpenAI που δεν υπάρχουν στον παραπάνω πίνακα, όπως το
/v1/embeddings, απαντώνται με404.
Αν έρχεστε από SDK της Anthropic
- Ορίστε το base URL σε
https://api.shannon-ai.com, χωρίς/v1, και το κλειδί στο κλειδί Shannon σας. Το SDK το στέλνει ωςx-api-key. - Το
modelπρέπει να είναι id Shannon. - Το
max_tokensείναι προαιρετικό σε αυτό το API. Η προεπιλογή του είναι 4,096. - Μια απάντηση περιέχει blocks περιεχομένου τύπου
thinking,textκαιtool_use. Το πρώτο block δεν είναι πάντα το κείμενο: επιλέγετε blocks με βάση τοtype. - Το
stop_reasonείναιend_turnήtool_use. Ένα stream ενός μοντέλου Shannon μπορεί να τελειώσει και μεmax_tokens. - Τα
anthropic-versionκαιanthropic-betaγίνονται δεκτά, ώστε το SDK να δουλεύει αμετάβλητο. Ένα αίτημα δεν τα χρειάζεται. - Τα σφάλματα στο
/v1/messagesέχουν τη μορφή της Anthropic:{"type": "error", "error": {…}}.
Τα εργαλεία προγραμματισμού που μιλούν αυτές τις μορφές ρυθμίζονται με τον ίδιο τρόπο: base URL, κλειδί και ένα id Shannon ως μοντέλο. Εργαλεία CLI για προγραμματισμό