Ringkasan
Peta API: setiap endpoint, seperti apa permintaan dan error, bagaimana panggilan dibayar, dan apa yang perlu diketahui jika Anda datang dari SDK OpenAI atau Anthropic.
Endpoint
Setiap endpoint berada di bawah satu base URL dan dilayani melalui HTTPS.
https://api.shannon-ai.com | Endpoint | Format | Kegunaannya |
|---|---|---|
POST /v1/chat/completions | OpenAI Chat Completions | Kirim percakapan, dapatkan jawaban berikutnya. Dengan atau tanpa streaming. |
POST /v1/messages | Anthropic Messages | Sama, dalam bentuk permintaan dan balasan SDK Anthropic. |
POST /v1/responses | OpenAI Responses | Sama, dalam bentuk Responses. Endpoint ini tidak menyimpan state: kirim percakapan pada setiap permintaan. |
GET /v1/models | Daftar model OpenAI | Daftar model beserta jendela konteks, harga, dan kemampuan. Tidak memerlukan kunci. |
POST /v1/tokenize | Shannon API | Hitung token suatu teks atau permintaan chat untuk model open-weight hosted. Gratis. |
POST /v1/messages/count_tokens | Penghitungan token Anthropic | Hitung token input permintaan Messages untuk model open-weight hosted. Gratis. |
Ketiga endpoint yang menghasilkan teks menjangkau model yang sama. Pilih yang formatnya sudah dipakai kode Anda.
Dasar-dasar permintaan
| Header | Deskripsi |
|---|---|
Authorization: Bearer <key> | Kunci API Anda. Wajib pada setiap endpoint kecuali GET /v1/models, kecuali Anda mengirim x-api-key. |
x-api-key: <key> | Kunci yang sama di header yang dikirim SDK Anthropic. Dibaca pada setiap endpoint. |
Content-Type: application/json | Wajib pada setiap POST. Tanpa header ini balasannya 415. |
x-request-id: <your id> | Opsional. Id Anda sendiri untuk permintaan; id itu kembali di header balasan x-request-id. Tanpa header ini, API membuat satu yang terdiri dari 12 karakter heksadesimal. |
- Body setiap
POSTadalah satu objek JSON, hingga 32 MiB. - Field yang tidak dikenal API tidak menimbulkan error dan tidak berpengaruh. Permintaan yang ditulis untuk penyedia lain tidak gagal karena field tambahan.
- Field yang dikenal dengan tipe JSON yang salah, atau field wajib yang hilang, dijawab dengan
422. Body yang bukan JSON valid dijawab dengan400. modeladalah salah satu id di Models & pricing. Huruf besar dan kecil tidak berpengaruh.
Balasan berupa JSON, atau stream server-sent events ketika permintaan menyetel stream ke true. Setiap endpoint menjawab dalam formatnya sendiri. Setiap balasan memiliki header x-request-id.
Apa yang dilalui permintaan
Permintaan diperiksa dalam urutan tetap sebelum model berjalan. Pemeriksaan pertama yang gagal akan menjawab, jadi 401 belum memberi tahu apa pun tentang body.
| Diperiksa, dalam urutan ini | Status saat gagal |
|---|---|
| Kunci API | 401 |
| Body: ukuran, content type, JSON, tipe field | 413 · 415 · 400 · 422 |
| Id model | 400 |
| Flood protection: 120 permintaan per menit per akun | 429 |
| Saldo: anggaran output permintaan harus muat | 429 |
Bentuk error
Error adalah objek JSON dengan error yang berisi type dan message. /v1/messages membungkusnya sesuai harapan SDK Anthropic; semua path lain memakai 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 ada pada sebagian error: anggap keduanya opsional.paramselalunull. - Setelah stream dimulai, statusnya sudah
200. Kegagalan kemudian datang sebagai error frame di dalam stream. - Setiap balasan error membawa header
x-request-id.
| Status | Tipe | Kapan |
|---|---|---|
400 | invalid_request_error | Body bukan JSON valid, id model tidak dikenal, atau model tidak menerima jenis input yang Anda kirim. |
401 | authentication_error | Kunci tidak ada atau tidak valid. |
404 | not_found_error | Path tidak ada. |
405 | api_error | Path ada, tetapi metodenya salah. |
413 | invalid_request_error | Body lebih besar dari 32 MiB. |
415 | invalid_request_error | Content-Type bukan application/json. |
422 | invalid_request_error | Sebuah field bertipe JSON salah atau field wajib hilang. |
429 | rate_limit_error | Saldo tidak mencukupi untuk permintaan, lebih dari 120 permintaan masuk dalam satu menit, panggilan Shannon Coder pada jendela waktu sudah habis, atau model sedang sibuk. Pesannya menyebutkan yang mana. |
5xx | api_error | Status 500, 502, 503, atau 504: permintaan valid tetapi tidak dapat dijawab. Kirim ulang. 500 dapat membawa type server_error. |
Penagihan dan saldo
- Ada satu saldo per akun, dan chat serta API berbagi saldo itu: kuota paket hari ini lebih dulu, lalu kredit yang dibeli. API tidak memiliki kuota sendiri.
- Permintaan mencadangkan anggaran outputnya (
max_tokens, bawaan 4,096) lalu ditagih sesuai token yang benar-benar dipakai, dengan harga model. - Setiap balasan melaporkan jumlah tokennya di
usage. Halaman Keys & usage menampilkan saldo dan biaya setiap permintaan. - Setiap permintaan dilayani secara setara. Satu-satunya batas laju permintaan adalah flood protection: 120 permintaan per menit per akun. Permintaan yang dikirim paralel menunggu dalam antrean.
Batas dan saldo Model & harga Keys & usage
Field yang bergantung pada model
Setiap model menerima permintaan yang sama. Beberapa field hanya berlaku pada sebagian model; tabel menyebutkan di mana. Halaman endpoint mencantumkan setiap field.
| Field | Deskripsi | Diterapkan oleh |
|---|---|---|
system | Instruksi untuk model: pesan system pada Chat Completions, system pada Messages, instructions pada Responses. | Model open-weight hosted, shannon-1.6-*, shannon-2-*, shannon-coder-1 |
temperature | Temperature sampling. | Model open-weight hosted, shannon-1.6-*, shannon-coder-1 |
top_p | Nucleus sampling. | Model open-weight hosted |
seed | Seed tetap untuk sampling. | Model open-weight hosted |
stop | Hingga 4 stop sequence. | Model open-weight hosted |
reasoning_effort | Seberapa banyak model bernalar sebelum menjawab. reasoning.effort pada Responses, thinking pada Messages. | Model open-weight hosted |
web_search | true mengizinkan model mencari di web untuk permintaan ini. Field milik API ini, pada Chat Completions dan Messages. | Model Shannon kecuali shannon-coder-1 |
max_tokens | Anggaran output. Pada setiap model, ia menentukan jumlah yang dicadangkan dari saldo Anda. | Sebagai batas panjang jawaban: model open-weight hosted, shannon-1.6-*, shannon-coder-1 |
Datang dari SDK OpenAI
- Setel base URL ke
https://api.shannon-ai.com/v1dan kuncinya ke kunci Shannon Anda. Panggilan Chat Completions dan Responses kemudian berfungsi dengan SDK apa adanya. modelharus berupa id Shannon. Nama model penyedia lain, sepertigpt-4o, dijawab dengan400danunknown model.- Penalaran hadir di field tersendiri:
reasoning_contentdi sampingcontent, di dalam pesan dan di delta stream. - Stream selalu membawa
usagedi chunk terakhirnya, bersamafinish_reason. - Pemanggilan tool dalam stream datang sebagai satu chunk dengan string
argumentsyang lengkap. - Balasan memiliki satu choice.
- Path API OpenAI yang tidak ada di tabel di atas, seperti
/v1/embeddings, dijawab dengan404.
Datang dari SDK Anthropic
- Setel base URL ke
https://api.shannon-ai.com, tanpa/v1, dan kuncinya ke kunci Shannon Anda. SDK mengirimnya sebagaix-api-key. modelharus berupa id Shannon.max_tokensbersifat opsional pada API ini. Nilai bawaannya 4,096.- Balasan berisi blok konten bertipe
thinking,text, dantool_use. Blok pertama tidak selalu berupa teks: pilih blok berdasarkantype. stop_reasonadalahend_turnatautool_use. Stream dari model Shannon juga dapat berakhir denganmax_tokens.anthropic-versiondananthropic-betaditerima, sehingga SDK berfungsi tanpa perubahan. Permintaan tidak memerlukannya.- Error pada
/v1/messagesberbentuk Anthropic:{"type": "error", "error": {…}}.
Tool coding yang memakai format-format ini disiapkan dengan cara yang sama: base URL, kunci, dan id Shannon sebagai model. Tool coding CLI