OpenAI-संगत API
अंतिम अपडेट: 11 नव॰ 2026
यह क्या है
OpenAI-संगत API, OpenAI के chat completions फ़ॉर्मेट को समझने वाले टूल को ToRun के चैट मॉडल इस्तेमाल करने देता है, जिनका भुगतान आपके ToRun खाते से होता है। opencode जैसा कोडिंग एजेंट ToRun के MCP टूल के साथ-साथ ToRun को अपने मॉडल प्रदाता के रूप में इस्तेमाल कर सकता है।
पता और साइन-इन
| बेस URL | https://mcp.torun.ai/v1 |
| साइन-इन | Authorization: Bearer <your developer key> |
वही डेवलपर कुंजी इस्तेमाल करें जो MCP सर्वर के लिए करते हैं: देखें डेवलपर कुंजियाँ। OpenAI-संगत API जुड़ने से पहले बनाई गई कुंजी को 403 insufficient_scope जवाब मिलता है। कुंजी की अनुमतियाँ कभी नहीं बदलतीं, इसलिए नई कुंजी बनाएँ।
API के दो एंडपॉइंट हैं, GET /v1/models और POST /v1/chat/completions। /v1 के अंदर कोई भी दूसरा पाथ 404 not_found जवाब देता है।
मॉडल
GET /v1/models सबसे पहले torun/auto दिखाता है, फिर हर वह टेक्स्ट मॉडल जिसे आपका प्लान इस्तेमाल कर सकता है, उसकी मॉडल आईडी के साथ। हर मॉडल बताता है:
- वह कितना टेक्स्ट पढ़ सकता है (
context_length) और कितना लंबा जवाब लिख सकता है (max_completion_tokens), - क्या वह टूल कॉल कर सकता है (
supports_tools) और इमेज पढ़ सकता है (supports_vision), - प्रति दस लाख टोकन Runs में उसकी कीमत (
pricing:inputऔरoutput)।
torun/auto ToRun को हर अनुरोध के लिए मॉडल चुनने देता है: अनुरोध में इमेज होने पर इमेज पढ़ने वाला मॉडल, और tools भेजे जाने पर टूल कॉल करने वाला मॉडल।
Chat completions
POST /v1/chat/completions ये स्वीकार करता है:
messages,system,developer(systemकी तरह माना जाता है),user,assistantऔरtoolभूमिकाओं के साथ,toolsऔरtool_choice(auto,none,requiredया एक नामित फ़ंक्शन): आपके टूल के अपने टूल उसे टूल कॉल के रूप में वापस मिलते हैं, और ToRun उन्हें कभी नहीं चलाता,json_objectके साथresponse_format।json_schemaस्वीकार किया जाता है और जवाब JSON में आता है, लेकिन स्कीमा खुद लागू नहीं की जाती,temperature(0 से 2),top_p(0 से 1),max_completion_tokensयाmax_tokens,stop(4 सीक्वेंस तक),seedऔरreasoning_effort,streamऔरstream_options.include_usage।
1 से ज़्यादा n, logprobs, top_logprobs, ऑडियो और टेक्स्ट के अलावा कोई भी आउटपुट अनदेखा करने के बजाय 400 unsupported_parameter के साथ अस्वीकार किया जाता है।
इमेज
इमेज को इनलाइन भेजें, image_url हिस्से में data:image/...;base64,... के रूप में, प्रति अनुरोध 20 MB तक। लिंक के रूप में भेजी गई इमेज 400 image_url_not_supported के साथ अस्वीकार की जाती है: ToRun उसे डाउनलोड नहीं करता। ऐप की तरह, इमेज की सुरक्षा जाँच होती है।
स्ट्रीमिंग
"stream": true के साथ जवाब chat.completion.chunk रूप में server-sent events के तौर पर आता है:
- पहले चंक में
assistantभूमिका होती है, और टूल कॉल अपनेindexके साथ स्ट्रीम होते हैं। - जब भेजने को कुछ नहीं होता, तो हर 15 सेकंड में
: keepaliveटिप्पणी लाइन आती है; SSE पार्सर उसे छोड़ देते हैं। data: [DONE]सफल स्ट्रीम को खत्म करता है।stream_options.include_usageके साथ, आखिरी चंक में खालीchoicesहोता है और उसमेंusageहोता है।- स्ट्रीम शुरू होने के बाद की विफलता एक
data: {"error": ...}इवेंट के रूप में आती है, बिना[DONE]के।
बिना स्ट्रीमिंग वाली कॉल 110 सेकंड के बाद 504 timeout के साथ रोक दी जाती है। लंबे अनुरोध "stream": true के साथ भेजें।
उपयोग
usage में prompt_tokens, completion_tokens, total_tokens, prompt_tokens_details.cached_tokens और completion_tokens_details.reasoning_tokens होते हैं, साथ ही torun_credits: कॉल की लागत, Runs में।
opencode में इसका इस्तेमाल करें
डेवलपर पेज पर दिया गया opencode कॉन्फ़िगरेशन MCP सर्वर के साथ ToRun को मॉडल प्रदाता के रूप में जोड़ता है:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"torun": {
"npm": "@ai-sdk/openai-compatible",
"name": "ToRun",
"options": { "baseURL": "https://mcp.torun.ai/v1", "apiKey": "{env:TORUN_API_KEY}" },
"models": { "torun/auto": { "name": "ToRun Auto" } }
}
}
}
OpenAI चैट API को समझने वाला कोई भी दूसरा टूल इसी तरह काम करता है। पेज का OpenAI API टैब यह कॉल दिखाता है:
curl https://mcp.torun.ai/v1/chat/completions \
-H "Authorization: Bearer $TORUN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "torun/auto", "messages": [{"role": "user", "content": "Hello"}]}'
कॉल का भुगतान कैसे होता है
API कॉल में उतने ही Runs लगते हैं जितने ऐप में उसी इस्तेमाल में लगते हैं। इनका भुगतान केवल सशुल्क राशि से होता है: पहले आपके सशुल्क प्लान का अलाउंस, फिर आपका वॉलेट, अगर आपने कुंजी पर इसकी अनुमति दी है। मुफ़्त अलाउंस कभी भी API कॉल का भुगतान नहीं करता। कुंजी की मासिक और दैनिक सीमाएँ लागू होती हैं, और चैट जवाबों की तरह जवाबों की सुरक्षा जाँच होती है।
सीमाएँ
हर कुंजी इस API को प्रति मिनट 60 अनुरोध भेज सकती है और एक साथ 4 completions चला सकती है। इससे ऊपर, API Retry-After हेडर के साथ 429 rate_limit_exceeded जवाब देता है।
त्रुटियाँ
हर त्रुटि का रूप {"error": {"message": ..., "type": ..., "param": ..., "code": ...}} होता है। message उस भाषा में होता है जो अनुरोध का Accept-Language हेडर माँगता है।
| स्थिति | कोड | मतलब |
|---|---|---|
| 400 | invalid_json, missing_parameter, invalid_parameter, unsupported_parameter |
अनुरोध गलत बना है, या ऐसे पैरामीटर का इस्तेमाल करता है जिसे ToRun सपोर्ट नहीं करता। |
| 400 | image_url_not_supported |
इमेज लिंक के रूप में भेजी गई; उसे इनलाइन भेजें। |
| 400 | content_blocked |
सुरक्षा जाँच ने सामग्री को रोक दिया। |
| 400 | upstream_rejected |
मॉडल प्रदाता ने अनुरोध अस्वीकार कर दिया; संदेश में कारण लिखा होता है। |
| 401 | invalid_api_key |
कुंजी मौजूद नहीं है, गलत लिखी गई है या रद्द कर दी गई है। |
| 402 | insufficient_credits, wallet_spend_not_allowed, spending_cap_reached |
खाता या कुंजी कॉल का भुगतान नहीं कर सकती। |
| 403 | insufficient_scope |
कुंजी यह API जुड़ने से पहले बनाई गई थी; नई कुंजी बनाएँ। |
| 403 | model_not_available |
मॉडल आपके प्लान में नहीं है। |
| 403 | account_suspended, no_developer_access |
खाता निलंबित है, या उसके पास डेवलपर एक्सेस नहीं है। |
| 404 | model_not_found |
यह मॉडल आईडी GET /v1/models की सूची में नहीं है। |
| 404 | not_found |
/v1 के अंदर ऐसा कोई पाथ नहीं है। |
| 429 | rate_limit_exceeded |
बहुत ज़्यादा कॉल; Retry-After में दिए समय तक इंतज़ार करें। |
| 500 | internal_error |
ToRun की तरफ़ कुछ गड़बड़ हो गई। |
| 502 | upstream_error, empty_reply |
मॉडल प्रदाता विफल रहा, या उसने खाली जवाब भेजा। |
| 503 | upstream_error, cap_unreadable, scan_unavailable |
कॉल के लिए ज़रूरी सेवा कुछ देर के लिए उपलब्ध नहीं है; फिर कोशिश करें। |
| 504 | timeout |
बिना स्ट्रीमिंग वाली कॉल 110 सेकंड से ज़्यादा चली। |
जिस अनुरोध का भुगतान नहीं हो सकता, उसे 429 नहीं बल्कि 402 जवाब मिलता है, ताकि क्लाइंट उसे बार-बार दोहराता न रहे।