सारांश
API का नक्शा: हर endpoint, अनुरोध और एरर कैसे दिखते हैं, कॉल का भुगतान कैसे होता है, और OpenAI या Anthropic SDK से आने पर क्या जानना चाहिए।
Endpoints
हर endpoint एक बेस URL के नीचे है और HTTPS पर परोसा जाता है।
https://api.shannon-ai.com | एंडपॉइंट | फ़ॉर्मेट | यह किसलिए है |
|---|---|---|
POST /v1/chat/completions | OpenAI Chat Completions | बातचीत भेजें, अगला उत्तर पाएँ। स्ट्रीमिंग के साथ या उसके बिना। |
POST /v1/messages | Anthropic Messages | वही, Anthropic SDK के अनुरोध और उत्तर के रूप में। |
POST /v1/responses | OpenAI Responses | वही, Responses के रूप में। endpoint कोई स्टेट नहीं रखता: हर अनुरोध के साथ पूरी बातचीत भेजें। |
GET /v1/models | OpenAI मॉडल सूची | मॉडल की सूची कॉन्टेक्स्ट विंडो, कीमतों और क्षमताओं के साथ। key की ज़रूरत नहीं। |
POST /v1/tokenize | Shannon API | होस्टेड ओपन-वेट मॉडल के लिए किसी टेक्स्ट या चैट अनुरोध के टोकन गिनें। मुफ़्त। |
POST /v1/messages/count_tokens | Anthropic टोकन गिनती | होस्टेड ओपन-वेट मॉडल के लिए Messages अनुरोध के इनपुट टोकन गिनें। मुफ़्त। |
टेक्स्ट बनाने वाले तीनों endpoints एक ही मॉडल तक पहुँचते हैं। वह चुनें जिसका फ़ॉर्मेट आपका कोड पहले से इस्तेमाल करता है।
अनुरोध की मूल बातें
| हेडर | विवरण |
|---|---|
Authorization: Bearer <key> | आपकी API key। GET /v1/models को छोड़कर हर endpoint पर ज़रूरी, जब तक आप x-api-key न भेजें। |
x-api-key: <key> | वही key उस हेडर में जो Anthropic SDK भेजते हैं। हर endpoint पर पढ़ी जाती है। |
Content-Type: application/json | हर POST पर ज़रूरी। इसके बिना उत्तर 415 होता है। |
x-request-id: <your id> | वैकल्पिक। अनुरोध के लिए आपका अपना id; वह उत्तर के हेडर x-request-id में लौट आता है। इसके बिना API 12 हेक्साडेसिमल अक्षरों का एक id बना देती है। |
- हर
POSTकी बॉडी एक JSON ऑब्जेक्ट होती है, अधिकतम 32 MiB। - जो फ़ील्ड API नहीं जानती, उससे कोई एरर नहीं होता और उसका कोई असर नहीं होता। किसी दूसरे प्रोवाइडर के लिए लिखा अनुरोध अतिरिक्त फ़ील्ड की वजह से विफल नहीं होता।
- ज्ञात फ़ील्ड का गलत JSON प्रकार, या ज़रूरी फ़ील्ड का न होना,
422से उत्तरित होता है। जो बॉडी वैध JSON नहीं है, उसका उत्तर400से दिया जाता है। modelModels & pricing पर दिए id में से एक है। अपरकेस और लोअरकेस से फ़र्क नहीं पड़ता।
उत्तर JSON होता है, या सर्वर-सेंट इवेंट्स की स्ट्रीम, जब अनुरोध stream को true पर सेट करता है। हर endpoint अपने फ़ॉर्मेट में उत्तर देता है। हर उत्तर में हेडर x-request-id होता है।
अनुरोध किन जाँचों से गुज़रता है
मॉडल चलने से पहले अनुरोध एक तय क्रम में जाँचा जाता है। जो पहली जाँच विफल होती है वही उत्तर देती है, इसलिए 401 से अभी बॉडी के बारे में कुछ पता नहीं चलता।
| जाँच, इसी क्रम में | विफल होने पर स्टेटस |
|---|---|
| API key | 401 |
| बॉडी: आकार, कंटेंट टाइप, JSON, फ़ील्ड के प्रकार | 413 · 415 · 400 · 422 |
| मॉडल id | 400 |
| Flood protection: प्रति अकाउंट प्रति मिनट 120 अनुरोध | 429 |
| बैलेंस: अनुरोध का आउटपुट बजट समाना चाहिए | 429 |
एरर का रूप
एरर एक JSON ऑब्जेक्ट है जिसमें error होता है, जिसके भीतर type और message होते हैं। /v1/messages उसे उस तरह लपेटता है जैसा Anthropic SDK अपेक्षा करते हैं; बाकी हर पाथ 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होता है।- स्ट्रीम शुरू होने के बाद स्टेटस पहले ही
200हो चुका होता है। तब विफलता स्ट्रीम के भीतर एक एरर फ़्रेम के रूप में आती है। - हर एरर उत्तर में हेडर
x-request-idहोता है।
| स्टेटस | प्रकार | कब |
|---|---|---|
400 | invalid_request_error | बॉडी वैध JSON नहीं है, मॉडल id अज्ञात है, या मॉडल आपके भेजे किसी प्रकार के इनपुट को नहीं लेता। |
401 | authentication_error | key नहीं है या वैध नहीं है। |
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 हो सकता है। |
बिलिंग और बैलेंस
- हर अकाउंट का एक बैलेंस होता है, और चैट और API उसे साझा करते हैं: पहले आज का प्लान अलाउंस, फिर खरीदा गया क्रेडिट। API का अपना कोई कोटा नहीं है।
- अनुरोध अपना आउटपुट बजट (
max_tokens, डिफ़ॉल्ट 4,096) रिज़र्व करता है और फिर जितने टोकन उसने सच में इस्तेमाल किए उनका शुल्क मॉडल की कीमत पर लगता है। - हर उत्तर अपनी टोकन गिनती
usageमें बताता है। Keys & usage पेज बैलेंस और हर अनुरोध की लागत दिखाता है। - हर अनुरोध समान रूप से पूरा किया जाता है। अनुरोध दर पर एकमात्र सीमा flood protection है: प्रति अकाउंट प्रति मिनट 120 अनुरोध। समानांतर भेजे गए अनुरोध कतार में इंतज़ार करते हैं।
सीमाएँ और बैलेंस मॉडल और कीमतें Keys और उपयोग
मॉडल पर निर्भर फ़ील्ड
हर मॉडल एक ही अनुरोध लेता है। कुछ फ़ील्ड केवल कुछ मॉडल पर असर करते हैं; तालिका बताती है कि कहाँ। endpoint पेज हर फ़ील्ड की सूची देते हैं।
| फ़ील्ड | विवरण | लागू करने वाले |
|---|---|---|
system | मॉडल के लिए निर्देश: Chat Completions पर system संदेश, Messages पर system, Responses पर instructions। | होस्टेड ओपन-वेट मॉडल, shannon-1.6-*, shannon-2-*, shannon-coder-1 |
temperature | सैंपलिंग तापमान। | होस्टेड ओपन-वेट मॉडल, shannon-1.6-*, shannon-coder-1 |
top_p | न्यूक्लियस सैंपलिंग। | होस्टेड ओपन-वेट मॉडल |
seed | सैंपलिंग के लिए एक तय सीड। | होस्टेड ओपन-वेट मॉडल |
stop | अधिकतम 4 स्टॉप सीक्वेंस। | होस्टेड ओपन-वेट मॉडल |
reasoning_effort | उत्तर देने से पहले मॉडल कितनी रीज़निंग करता है। Responses पर reasoning.effort, Messages पर thinking। | होस्टेड ओपन-वेट मॉडल |
web_search | true मॉडल को इस अनुरोध के लिए वेब खोजने देता है। इस API का एक फ़ील्ड, Chat Completions और Messages पर। | shannon-coder-1 को छोड़कर Shannon मॉडल |
max_tokens | आउटपुट बजट। हर मॉडल पर यह तय करता है कि आपके बैलेंस से कितना रिज़र्व हो। | उत्तर की लंबाई की सीमा के रूप में: होस्टेड ओपन-वेट मॉडल, shannon-1.6-*, shannon-coder-1 |
OpenAI SDK से आ रहे हैं
- बेस URL को
https://api.shannon-ai.com/v1पर सेट करें और key को अपनी Shannon key पर। तब Chat Completions और Responses कॉल SDK के साथ जैसी हैं वैसी काम करती हैं। modelShannon id होना चाहिए।gpt-4oजैसे किसी दूसरे प्रोवाइडर के मॉडल नाम का उत्तर400औरunknown modelसे दिया जाता है।- रीज़निंग अपने अलग फ़ील्ड में आती है: संदेश में और स्ट्रीम डेल्टा में
contentके बगल मेंreasoning_content। - स्ट्रीम के अंतिम चंक में हमेशा
usageहोता है,finish_reasonके साथ। - स्ट्रीम में टूल कॉल एक चंक के रूप में पूरी
argumentsस्ट्रिंग के साथ आती है। - उत्तर में एक ही choice होता है।
- OpenAI API के जो पाथ ऊपर की तालिका में नहीं हैं, जैसे
/v1/embeddings, उनका उत्तर404से दिया जाता है।
Anthropic SDK से आ रहे हैं
- बेस URL को
https://api.shannon-ai.comपर सेट करें,/v1के बिना, और key को अपनी Shannon key पर। SDK इसेx-api-keyके रूप में भेजता है। modelShannon id होना चाहिए।- इस API पर
max_tokensवैकल्पिक है। इसका डिफ़ॉल्ट 4,096 है। - उत्तर में प्रकार
thinking,textऔरtool_useके कंटेंट ब्लॉक होते हैं। पहला ब्लॉक हमेशा टेक्स्ट नहीं होता: ब्लॉकtypeसे चुनें। stop_reasonend_turnयाtool_useहोता है। Shannon मॉडल की स्ट्रीमmax_tokensपर भी खत्म हो सकती है।anthropic-versionऔरanthropic-betaस्वीकार किए जाते हैं, इसलिए SDK बिना बदलाव काम करता है। अनुरोध को इनकी ज़रूरत नहीं है।/v1/messagesपर एरर का रूप Anthropic जैसा है:{"type": "error", "error": {…}}।
जो कोडिंग टूल इन फ़ॉर्मेट को बोलते हैं, वे उसी तरह सेट होते हैं: बेस URL, key, और मॉडल के रूप में एक Shannon id। CLI कोडिंग टूल्स