Gambaran keseluruhan
Peta API: setiap endpoint, rupa permintaan dan ralat, cara panggilan dibayar, dan apa yang perlu diketahui apabila anda datang daripada SDK OpenAI atau Anthropic.
Endpoint
Setiap endpoint berada di bawah satu base URL dan dihidangkan melalui HTTPS.
https://api.shannon-ai.com | Endpoint | Format | Kegunaannya |
|---|---|---|
POST /v1/chat/completions | OpenAI Chat Completions | Hantar perbualan, dapatkan jawapan seterusnya. Dengan atau tanpa streaming. |
POST /v1/messages | Anthropic Messages | Perkara yang sama, dalam bentuk permintaan dan balasan SDK Anthropic. |
POST /v1/responses | OpenAI Responses | Perkara yang sama, dalam bentuk Responses. Endpoint ini tidak menyimpan keadaan: hantar perbualan bersama setiap permintaan. |
GET /v1/models | Senarai model OpenAI | Senaraikan model dengan tetingkap konteks, harga dan keupayaan. Tidak memerlukan kunci. |
POST /v1/tokenize | API Shannon | Kira token bagi teks atau permintaan sembang untuk model open-weight yang dihoskan. Percuma. |
POST /v1/messages/count_tokens | Pengiraan token Anthropic | Kira token input bagi permintaan Messages untuk model open-weight yang dihoskan. Percuma. |
Tiga endpoint yang menghasilkan teks mencapai model yang sama. Pilih yang formatnya sudah digunakan oleh kod anda.
Asas permintaan
| Header | Penerangan |
|---|---|
Authorization: Bearer <key> | Kunci API anda. Wajib pada setiap endpoint kecuali GET /v1/models, melainkan anda menghantar x-api-key. |
x-api-key: <key> | Kunci yang sama dalam header yang dihantar oleh SDK Anthropic. Dibaca pada setiap endpoint. |
Content-Type: application/json | Wajib pada setiap POST. Tanpanya, balasannya 415. |
x-request-id: <your id> | Pilihan. Id anda sendiri untuk permintaan; ia dikembalikan dalam header balasan x-request-id. Tanpanya, API mencipta satu yang terdiri daripada 12 aksara heksadesimal. |
- Badan setiap
POSTialah satu objek JSON, sehingga 32 MiB. - Medan yang tidak dikenali oleh API tidak menyebabkan ralat dan tidak mempunyai kesan. Permintaan yang ditulis untuk penyedia lain tidak gagal kerana medan tambahan.
- Medan yang dikenali dengan jenis JSON yang salah, atau medan wajib yang tiada, dijawab dengan
422. Badan yang bukan JSON yang sah dijawab dengan400. modelialah salah satu id pada Model & harga. Huruf besar dan kecil tidak penting.
Balasan ialah JSON, atau stream server-sent events apabila permintaan menetapkan stream kepada true. Setiap endpoint menjawab dalam formatnya sendiri. Setiap balasan mempunyai header x-request-id.
Apa yang dilalui oleh permintaan
Permintaan disemak mengikut urutan tetap sebelum model berjalan. Semakan pertama yang gagal akan menjawab, jadi 401 belum memberitahu anda apa-apa tentang badan.
| Disemak, mengikut urutan ini | Status apabila gagal |
|---|---|
| Kunci API | 401 |
| Badan: saiz, jenis kandungan, JSON, jenis medan | 413 · 415 · 400 · 422 |
| Id model | 400 |
| Flood protection: 120 permintaan seminit bagi setiap akaun | 429 |
| Baki: bajet output permintaan mesti muat | 429 |
Bentuk ralat
Ralat ialah objek JSON dengan error yang memegang type dan message. /v1/messages membungkusnya seperti yang dijangka oleh SDK Anthropic; setiap laluan lain menggunakan bentuk OpenAI.
{
"error": {
"type": "invalid_request_error",
"message": "unknown model: gpt-4o"
}
} {
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "unknown model: gpt-4o"
}
} - Baca
typedanmessage.codedanparamhanya wujud pada sesetengah ralat: anggap ia pilihan.paramsentiasanull. - Selepas stream bermula, statusnya sudah
200. Kegagalan kemudian tiba sebagai bingkai ralat di dalam stream. - Setiap balasan ralat membawa header
x-request-id.
| Status | Jenis | Bila |
|---|---|---|
400 | invalid_request_error | Badan bukan JSON yang sah, id model tidak dikenali, atau model tidak menerima jenis input yang anda hantar. |
401 | authentication_error | Kunci tiada atau tidak sah. |
404 | not_found_error | Laluan tidak wujud. |
405 | api_error | Laluan wujud, kaedahnya salah. |
413 | invalid_request_error | Badan lebih besar daripada 32 MiB. |
415 | invalid_request_error | Content-Type bukan application/json. |
422 | invalid_request_error | Medan mempunyai jenis JSON yang salah atau medan wajib tiada. |
429 | rate_limit_error | Baki tidak menampung permintaan, lebih daripada 120 permintaan tiba dalam satu minit, panggilan Shannon Coder bagi tetingkap telah habis, atau model sibuk. Mesej menyatakan yang mana satu. |
5xx | api_error | Status 500, 502, 503 atau 504: permintaan sah dan tidak dapat dijawab. Hantar semula. 500 boleh membawa jenis server_error. |
Pengebilan dan baki
- Terdapat satu baki bagi setiap akaun, dan sembang serta API berkongsinya: kuota pelan hari ini dahulu, kemudian kredit yang dibeli. API tidak mempunyai kuota sendiri.
- Permintaan menempah bajet outputnya (
max_tokens, lalai 4,096) dan kemudian dicaj untuk token yang benar-benar digunakannya, pada harga model. - Setiap balasan melaporkan bilangan tokennya dalam
usage. Halaman Kunci & penggunaan menunjukkan baki dan kos setiap permintaan. - Setiap permintaan dilayan sama rata. Satu-satunya had pada kadar permintaan ialah flood protection: 120 permintaan seminit bagi setiap akaun. Permintaan yang dihantar secara selari menunggu dalam barisan.
Had dan baki Model & harga Kunci & penggunaan
Medan yang bergantung pada model
Setiap model menerima permintaan yang sama. Beberapa medan hanya berkesan pada sesetengah model; jadual menamakan tempatnya. Halaman endpoint menyenaraikan setiap medan.
| Medan | Penerangan | Dilaksanakan oleh |
|---|---|---|
system | Arahan untuk model: mesej system pada Chat Completions, system pada Messages, instructions pada Responses. | Model open-weight yang dihoskan, shannon-1.6-*, shannon-2-*, shannon-coder-1 |
temperature | Suhu pensampelan. | Model open-weight yang dihoskan, shannon-1.6-*, shannon-coder-1 |
top_p | Pensampelan nukleus. | Model open-weight yang dihoskan |
seed | Seed tetap untuk pensampelan. | Model open-weight yang dihoskan |
stop | Sehingga 4 jujukan henti. | Model open-weight yang dihoskan |
reasoning_effort | Sejauh mana model bernalar sebelum menjawab. reasoning.effort pada Responses, thinking pada Messages. | Model open-weight yang dihoskan |
web_search | true membolehkan model mencari di web untuk permintaan ini. Medan API ini, pada Chat Completions dan Messages. | Model Shannon kecuali shannon-coder-1 |
max_tokens | Bajet output. Pada setiap model, ia menetapkan jumlah yang ditempah daripada baki anda. | Sebagai had pada panjang jawapan: model open-weight yang dihoskan, shannon-1.6-*, shannon-coder-1 |
Datang daripada SDK OpenAI
- Tetapkan base URL kepada
https://api.shannon-ai.com/v1dan kunci kepada kunci Shannon anda. Panggilan Chat Completions dan Responses kemudian berfungsi dengan SDK seadanya. modelmestilah id Shannon. Nama model penyedia lain, sepertigpt-4o, dijawab dengan400danunknown model.- Penaakulan datang dalam medan tersendiri:
reasoning_contentdi sebelahcontent, dalam mesej dan dalam delta stream. - Stream sentiasa membawa
usagedalam chunk terakhirnya, bersamafinish_reason. - Panggilan alat dalam stream tiba sebagai satu chunk dengan rentetan
argumentsyang lengkap. - Balasan mempunyai satu choice.
- Laluan API OpenAI yang tiada dalam jadual di atas, seperti
/v1/embeddings, dijawab dengan404.
Datang daripada SDK Anthropic
- Tetapkan base URL kepada
https://api.shannon-ai.com, tanpa/v1, dan kunci kepada kunci Shannon anda. SDK menghantarnya sebagaix-api-key. modelmestilah id Shannon.max_tokensadalah pilihan pada API ini. Nilai lalainya 4,096.- Balasan memegang blok kandungan berjenis
thinking,textdantool_use. Blok pertama tidak selalunya teks: pilih blok mengikuttype. stop_reasonialahend_turnatautool_use. Stream model Shannon juga boleh berakhir denganmax_tokens.anthropic-versiondananthropic-betaditerima, jadi SDK berfungsi tanpa perubahan. Permintaan tidak memerlukannya.- Ralat pada
/v1/messagesmempunyai bentuk Anthropic:{"type": "error", "error": {…}}.
Alat pengekodan yang menggunakan format ini disediakan dengan cara yang sama: base URL, kunci dan id Shannon sebagai model. Alat pengekodan CLI