BazaarLink दस्तावेज़ीकरण
BazaarLink ताइवान के लिए एक एकीकृत AI API गेटवे है - जो एक एकल, OpenAI-संगत के माध्यम से OpenAI, Anthropic, Google, मेटा और अधिक से सैकड़ों मॉडलों तक पहुंच प्रदान करता है। API समापन बिंदु।
Read https://bazaarlink.ai/skill.md and follow the instructions to integrate BazaarLink into your app.मूल्य निर्धारण
BazaarLink मूल्य मॉडल उपयोग शून्य मार्कअप पर (प्रत्येक प्रदाता की आधिकारिक सूची मूल्य के समान)। प्लेटफ़ॉर्म शुल्क टॉप-अप (जमा) पर लिया जाता है: एक 10% लेनदेन शुल्क, साथ ही 5% ताइवान VAT TWD चैनलों पर। TWD उद्धरण और इलेक्ट्रॉनिक एकीकृत चालान के साथ USD में बिल किया गया। सेल्फ-सर्व पे-एज़-यू-टॉप-अप; उद्यम मासिक बिलिंग (नेट-30, परक्राम्य) की व्यवस्था कर सकते हैं।
यह कैसे काम करता है
- उपभोग (डेबिट): प्रत्येक API कॉल को प्रदाता के आधिकारिक USD सूची मूल्य पर वास्तविक टोकन उपयोग द्वारा बिल किया जाता है, जो आपके शेष से काटा जाता है - शून्य मार्कअप, उपभोग पर कोई अतिरिक्त शुल्क नहीं।
- टॉप-अप (जमा): TWD को वास्तविक समय बिक्री दर पर USD में परिवर्तित किया जाता है और आपके शेष में जोड़ा जाता है; टॉप-अप पर 10% लेनदेन शुल्क लिया जाता है।
- • भुगतान विधियाँ और चैनल-विशिष्ट शुल्क लाइव चेकआउट पर दिखते हैं।
- • पात्र TWD चैनल लागू कर और ताइवान ई-इनवॉइस की शर्तें भुगतान से पहले दिखाते हैं।
- • बैंक वायर ट्रांसफर: बड़े या एंटरप्राइज़ टॉप-अप के लिए, वायर ट्रांसफर और कस्टम इनवॉइसिंग की व्यवस्था करने के लिए हमसे संपर्क करें।
- इनवॉइस केवल वर्तमान में उपलब्ध पात्र चैनल या पुष्टि की गई एंटरप्राइज़ शर्तों से मिलता है। टैक्स आईडी, कोटेशन या मासिक बिलिंग के लिए भुगतान से पहले बिक्री टीम से संपर्क करें।
विनिमय दर के बारे में
विदेशी-विनिमय रूपांतरण वास्तविक समय दर का उपयोग करता है; मासिक बिलिंग बिलिंग (विवरण) समय पर दर का उपयोग करती है, जबकि प्रीपेड टॉप-अप टॉप-अप-टाइम दर पर परिवर्तित होते हैं। दर और टाइमस्टैम्प को बिलिंग रिकॉर्ड के साथ रखा जाता है।
विफल अनुरोधों के लिए बिलिंग सुरक्षा
यदि upstream अनुरोध बिना बिल योग्य usage के विफल होता है, तो BazaarLink आरक्षित पूरी राशि अपने-आप लौटा देता है। stream शुरू होने के बाद विफल होने पर भी उस प्रयास का शुल्क USD 0 रहता है।
- upstream से कनेक्शन न हो, अनुरोध अस्वीकार हो या कोई उपयोगी परिणाम न मिले
- अंतिम usage रिकॉर्ड मिलने से पहले stream रुक जाए, भले कुछ सामग्री मिल चुकी हो
- response में usage न हो या सभी मान 0 वाला खाली usage object हो
0 output tokens का अर्थ हमेशा निःशुल्क नहीं है
usage.cost इस अनुरोध पर ली गई USD राशि है। output tokens 0 होने पर भी input tokens का शुल्क लग सकता है; अंतिम राशि के लिए usage.cost या Activity रिकॉर्ड देखें।
क्विक स्टार्ट
इंटीग्रेट करने के तीन तरीके
5 मिनट से कम समय में आरंभ करें। BazaarLink OpenAI SDK के साथ पूरी तरह से संगत है - बस इसे बदलें
100 सेकंड से अधिक लंबे अनुरोधों के लिए stream:true का उपयोग करने की सलाह दी जाती है। non-streaming अनुरोधों में लगभग 12 सेकंड बाद (यह डिफ़ॉल्ट मान है, जिसे डिप्लॉयमेंट सेटिंग से बदला जा सकता है) पहले 200 लौटाया जाता है और keepalive whitespace भेजना शुरू होता है; बाद में कोई त्रुटि होने पर उसे 200 + error JSON के रूप में लौटाया जाता है। keepalive JSON body से पहले का whitespace है, जिसे मानक JSON पार्सर अनदेखा करते हैं।
Base URL
https://api.bazaarlink.ai/v1api.bazaarlink.ai एक केवल-API प्रवेश बिंदु है, जो वेबसाइट से अलग तैनात किया गया है। पिछला बेस URL https://bazaarlink.ai/api/v1 पूरी तरह समर्थित रहता है — मौजूदा एकीकरण को बदलने की आवश्यकता नहीं है।
OpenAI SDK का उपयोग करना
BazaarLink OpenAI SDK के साथ पूरी तरह से संगत है। बस आधार URL और API कुंजी बदलें - अन्य सभी कोड वही रहेंगे।
sk-bl-.अपनी अपस्ट्रीम कुंजी लाएँ (BYOK)
अपनी अपस्ट्रीम API कुंजी को खाते या संगठन से जोड़ें। योग्य अनुरोध पहले आपकी कुंजी का उपयोग करते हैं। अपस्ट्रीम त्रुटि के बाद कोई दूसरा उपलब्ध स्रोत आज़माया जा सकता है; उपलब्ध न हो तो त्रुटि लौटती है। व्यक्तिगत कुंजियाँ कुंजी पृष्ठ पर और संगठन की कुंजियाँ संगठन सेटिंग में प्रबंधित करें। BYOK सेटिंग्स पर जाएँ →
सामग्री फ़िल्टरिंग
आपके API ट्रैफ़िक के लिए दोतरफ़ा सामग्री सुरक्षा: प्रॉम्प्ट इंजेक्शन वाले अनुरोध ब्लॉक (400) होते हैं, और अनुरोध व प्रतिक्रिया में संवेदनशील डेटा (API कुंजियाँ, कार्ड नंबर, पहचान संख्याएँ आदि) अपने आप छिपा दिया जाता है। नियम और छूट सूची अनुकूलन योग्य हैं, उपयोग आँकड़े भी उपलब्ध हैं। सामग्री फ़िल्टर सेटिंग्स पर जाएँ →
वेब खोज (:online)
मॉडल के उत्तर देने से पहले वेब खोजता है और परिणामों को संदर्भ सामग्री के रूप में मॉडल को देता है। समाचार, कीमतों, हाल में जारी नीतियों या उत्पादों जैसी नवीनतम जानकारी वाले प्रश्नों के लिए उपयोगी है।
समर्थित एंडपॉइंट
POST /api/v1/chat/completionsPOST /api/v1/messagesPOST /api/v1/responses
स्ट्रीमिंग (stream: true) और गैर-स्ट्रीमिंग दोनों समर्थित हैं।
उपयोग
तरीका 1: मॉडल नाम के अंत में :online जोड़ें
curl https://bazaarlink.ai/api/v1/chat/completions \
-H "Authorization: Bearer $BAZAARLINK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.4-mini:online",
"messages": [{ "role": "user", "content": "आज ताइवान में AI से जुड़ी कौन-सी खबरें हैं?" }]
}'तरीका 2: plugins पैरामीटर का उपयोग करें
तरीका 3: web_search_options का उपयोग करें
{
"model": "gpt-5.4-mini",
"messages": [{ "role": "user", "content": "..." }],
"web_search_options": { "search_context_size": "high", "query_source": "conversation" }
}इनमें से कोई एक तरीका चुनें या इन्हें साथ में इस्तेमाल करें।
खोज पैरामीटर
इन पैरामीटर को plugins के web आइटम या web_search_options में रखा जा सकता है; दोनों जगह अलग मान होने पर plugins को प्राथमिकता मिलती है।
search_promptकोई भी टेक्स्ट—खोज क्वेरी सीधे तय करता है। दिए जाने पर query_source से पहले प्राथमिकता मिलती है।query_sourcelast_user, conversationlast_usersearch_prompt न होने पर खोज क्वेरी का स्रोत। last_user केवल अंतिम उपयोगकर्ता संदेश और conversation system संदेश को छोड़कर पूरी बातचीत का उपयोग करता है।countryलोअरकेस अंग्रेज़ी देश का नाम (जैसे taiwan, japan, united states)सभी क्षेत्रदिए गए देश के स्रोतों को प्राथमिकता देता है। न देने पर क्षेत्र की सीमा नहीं होती। country देने पर प्रकार सामान्य खोज (general) पर स्थिर रहता है; साथ में topic: "news" देने पर 400 लौटता है।topicgeneral, newsgeneralखोज प्रकार। न देने पर सामान्य खोज (general) उपयोग होती है; समाचार परिणामों के लिए topic: "news" स्पष्ट रूप से दें।search_queriesस्ट्रिंग ऐरे, 1–5 आइटम—एक साथ कई खोज क्वेरी देता है। हर क्वेरी एक बार खोजी जाती है और हर बार खोज शुल्क लगता है; परिणाम मिलाकर डुप्लिकेट URL हटाए जाते हैं। search_prompt के साथ नहीं इस्तेमाल कर सकते। कुछ विफल होने पर सफल परिणामों से उत्तर जारी रहता है और केवल सफल संख्या का शुल्क लगता है; सभी विफल होने पर 503 और बिना शुल्क लौटता है।time_rangeday, week, month, year (d/w/m/y, past_day, 24h, 7d, 30d, 365d जैसे रूप; नाम recency या search_recency_filter भी हो सकता है)कोई सीमा नहींकेवल दिए गए समय-काल की सामग्री खोजता है।languageISO 639-1 भाषा कोड (जैसे zh, en, ja), एकल या ऐरेकोई सीमा नहींदी गई भाषा की सामग्री को प्राथमिकता देता है। ऐरे देने पर फिलहाल केवल पहली भाषा उपयोग होती है।include_domainsवाइल्डकार्ड वाले डोमेन स्ट्रिंग का ऐरे (जैसे *.gov.tw)—केवल इन डोमेन पर खोजता है, अधिकतम 300 डोमेन और प्रति डोमेन 253 वर्ण।exclude_domainsवाइल्डकार्ड वाले डोमेन स्ट्रिंग का ऐरे—इन डोमेन को बाहर रखता है, अधिकतम 150 डोमेन।max_results1–10स्तर के अनुसारलौटाए जाने वाले संदर्भ स्रोतों की संख्या। num_results भी लिख सकते हैं।enginebasic, fast, ultra-fast, advancedस्तर के अनुसारखोज गहराई सीधे तय करता है और इसकी प्राथमिकता सबसे अधिक है। अन्य मान, अन्य प्लेटफ़ॉर्म के इंजन नामों सहित, डिफ़ॉल्ट गहराई लेते हैं और त्रुटि नहीं देते। (केवल plugins)modeturbo, instant, fast, basic, advanced, deep—गहराई तय करने का दूसरा तरीका: turbo/instant → अति तेज़, fast → तेज़, basic → मानक, advanced/deep → उन्नत। अज्ञात मान अनदेखे होते हैं।search_context_sizelow, medium, high, fastmediumखोज स्तर, नीचे की तालिका देखें। (केवल web_search_options)गहराई की प्राथमिकता: engine (ऊपर के चार मान)> mode > search_context_size > डिफ़ॉल्ट medium।
plugins और web_search_options का पैरामीटर प्रारूप OpenRouter के साथ संगत है, इसलिए मौजूदा अनुरोध सीधे इस्तेमाल किए जा सकते हैं।
Vercel AI Gateway के साथ संगत खोज टूल का प्रारूप
Chat Completions के tools में नीचे दिया खोज टूल प्रारूप भी स्वीकार होता है। इसे एक वेब खोज माना जाता है, इस प्लेटफ़ॉर्म की वेब खोज इसे संभालती है और शुल्क व उद्धरण प्रारूप ऊपर जैसा ही रहता है:
- स्वीकार्य
type:vercel:perplexity_search,vercel:exa_search,vercel:parallel_search,vercel:tako_search। इन सभीtypeका व्यवहार और शुल्क समान है। config.queryकोsearch_promptमाना जाता है;config.max_results(याnum_results),config.countryआदि समान नाम वाले पैरामीटर से जुड़े हैं; अज्ञात फ़ील्ड अनदेखे होते हैं।- ये खोज टूल मॉडल को फ़ॉरवर्ड नहीं किए जाते।
- एक अनुरोध में कई खोज टूल हों तो केवल पहला इस्तेमाल होता है।
`web_search_preview` टूल भी स्वीकार है
Responses आदि एंडपॉइंट के tools में { "type": "web_search_preview" } देने पर इसे भी एक वेब खोज माना जाता है और इस प्लेटफ़ॉर्म की वेब खोज संभालती है। शुल्क और उद्धरण प्रारूप ऊपर जैसा है। यह टूल मॉडल को फ़ॉरवर्ड नहीं होता।
कई प्रारूप साथ इस्तेमाल करने पर
:online, plugins, web_search_options और खोज टूल (web_search_preview समेत) साथ आ सकते हैं, लेकिन हर अनुरोध में केवल एक खोज और एक खोज शुल्क होगा; search_queries में संख्या के अनुसार शुल्क होगा। प्राथमिकता: search_queries > खोज टूल का config.query > search_prompt > query_source। अन्य पैरामीटर ऊपर दी प्राथमिकताओं के अनुसार मिलाए जाते हैं।
केवल पैरामीटर प्रकार की त्रुटि (जैसे engine में संख्या या include_domains में स्ट्रिंग ऐरे न होना) या सीमा से बाहर मान पर 400 invalid_web_search_options लौटता है।
खोज स्तर
lowमानकअधिकतम 5अधिक संक्षिप्तmediumमानकअधिकतम 10डिफ़ॉल्ट स्तरhighउन्नतअधिकतम 10गहरी खोज, अधिक इकाई मूल्यfastतेज़अधिकतम 10तेज़ प्रतिक्रियास्तर न देने पर medium इस्तेमाल होता है।
प्रतिक्रिया में उद्धृत स्रोत
खोजे गए स्रोत annotations में लौटते हैं और उद्योग-प्रचलित url_citation प्रारूप का उपयोग करते हैं:
- हर संदर्भ स्रोत का एक उद्धरण होता है।
- यदि मॉडल उत्तर में स्रोत का चिह्न (जैसे
[source-1]) लगाता है, तोstart_indexऔरend_indexउसकी स्थिति बताते हैं; चिह्न न होने पर दोनों0होते हैं।
एंडपॉइंट के अनुसार स्थान:
- Chat Completions: गैर-स्ट्रीमिंग में
choices[].message.annotations; स्ट्रीमिंग में[DONE]से पहले केवलdelta.annotationsवाला अतिरिक्त ब्लॉक भेजा जाता है। - Responses:
output_textकी सामग्री मेंannotations; स्ट्रीमिंग मेंresponse.output_text.doneजैसे पूर्णता इवेंट के साथ भेजे जाते हैं। - Messages: टेक्स्ट सामग्री ब्लॉक के
annotationsमें संलग्न; स्ट्रीमिंग में अंत से पहलेtext_deltaइवेंट में भेजे जाते हैं।
शुल्क व्यवस्था
- हर अनुरोध का शुल्क = मॉडल शुल्क + वेब खोज शुल्क।
- वेब खोज का प्रति खोज शुल्क लगता है और इकाई मूल्य प्लेटफ़ॉर्म मूल्य के अनुसार है; उन्नत गहराई (
highयाengine/modeसे उन्नत) का इकाई मूल्य अधिक है। - मुफ़्त मॉडल पर भी वेब खोज शुल्क लगता है, मॉडल स्वयं मुफ़्त रहता है।
- हर अनुरोध डिफ़ॉल्ट रूप से एक बार खोजता है।
search_queriesमें खोज संख्या क्वेरी संख्या के बराबर और शुल्क भी उसी अनुसार है। बैकएंड में पुनः प्रयास करने पर खोज या शुल्क दोहराया नहीं जाता। - इन स्थितियों में वेब खोज शुल्क नहीं लगता:
- खोज स्वयं विफल हो (503 लौटता है, नीचे देखें)।
search_queriesमें विफल क्वेरी (केवल सफल संख्या का शुल्क)।- खोज सफल हो लेकिन मॉडल अंत में प्रतिक्रिया बनाने में विफल हो।
- शेष राशि आरक्षित करते समय खोज शुल्क भी शामिल होता है। वास्तविक कटौती प्रतिक्रिया के
usage.costऔर लेखा रिकॉर्ड में दिखती है।
त्रुटियाँ और सीमाएँ
web_search_unavailableवेब खोज सेवा रुकी हुई है। बाद में फिर प्रयास करें।कोई शुल्क नहीं; मॉडल कॉल नहीं होताinsufficient_creditsशेष राशि अनुरोध (खोज शुल्क समेत) के लिए पर्याप्त नहीं है; खोज से पहले रोक दिया जाता है।कोई शुल्क नहींweb_search_rate_limitedवेब खोज अनुरोध बहुत अधिक हैं। बाद में फिर प्रयास करें।कोई शुल्क नहींinvalid_web_search_optionsअमान्य खोज पैरामीटर, जैसे असमर्थित country, स्ट्रिंग ऐरे न होने वाला include_domains, या search_queries और search_prompt को साथ देना।कोई शुल्क नहीं- सामान्य अनुरोध की दर सीमा, मॉडल अनुमति, सामग्री समीक्षा आदि जाँच खोज से पहले पूरी होती हैं; इनसे रोके गए अनुरोध खोज नहीं करते।
- खोज-संबंधी पैरामीटर और टूल (
:onlineप्रत्यय,pluginsका web आइटम,web_search_options, ऊपर के खोज टूल औरweb_search_preview) केवल यह प्लेटफ़ॉर्म संभालता है और उन्हें मॉडल को फ़ॉरवर्ड नहीं करता।
OpenRouter से माइग्रेट करें
BazaarLink का API OpenRouter-संगत है — अधिकांश इंटीग्रेशन केवल दो मान बदलकर स्विच हो जाते हैं: base URL को https://api.bazaarlink.ai/v1 और API key को sk-bl- से शुरू होने वाली BazaarLink key से।
- आधार URL: https://openrouter.ai/api/v1 → https://api.bazaarlink.ai/v1
- API key: sk-or-... → sk-bl-... (/keys पर एक बनाएँ)
- मॉडल ID: वही provider/model फॉर्मेट (जैसे anthropic/claude-sonnet-4.6); पूरा कैटलॉग GET /v1/models पर
- models[] फ़ॉलबैक, स्ट्रीमिंग, टूल कॉलिंग और स्ट्रक्चर्ड आउटपुट समान अनुरोध स्वरूप का उपयोग करते हैं
प्रमाणीकरण
सभी API अनुरोधों के लिए आपकी API कुंजी के साथ एक प्राधिकरण हेडर की आवश्यकता होती है।
Authorization: Bearer sk-bl-YOUR_API_KEYसे अपनी API कुंजी प्राप्त करें डैशबोर्ड. अपनी कुंजी सुरक्षित रखें - इसे क्लाइंट-साइड कोड में उजागर न करें।
वैकल्पिक शीर्षलेख
सिद्धांत
BazaarLink को तीन मुख्य सिद्धांतों के आधार पर डिज़ाइन किया गया है:
1. एकीकृत इंटरफ़ेस
One API, एक SDK, सैकड़ों मॉडल। अपना कोड बदले बिना OpenAI, Anthropic, Google मिथुन, मेटा लामा और अन्य के बीच स्विच करें - बस मॉडल आईडी बदलें।
2. मूल्य अनुकूलन
BazaarLink स्वचालित रूप से आपके चुने हुए मॉडल के लिए सबसे अधिक लागत प्रभावी प्रदाता तक पहुंच जाता है। आप केवल उसी के लिए भुगतान करते हैं जिसका आप उपयोग करते हैं, पूर्ण इनवॉइसिंग समर्थन के साथ USD में बिल किया जाता है।
3. अनुरोध प्रक्रिया
अपस्ट्रीम स्रोत में समस्या होने पर अनुरोध किसी दूसरे उपलब्ध स्रोत को आज़मा सकता है। कोई स्रोत उपलब्ध न हो तो अनुरोध में त्रुटि लौटती है।
मल्टीमॉडल
BazaarLink मल्टीमॉडल इनपुट का समर्थन करता है - उन मॉडलों को टेक्स्ट के साथ छवियां, ऑडियो और फ़ाइलें भेजें जो उनका समर्थन करते हैं। सामग्री अपस्ट्रीम प्रदाता को भेज दी जाती है।
समर्थित तौर-तरीके
उदाहरण:
छवियां भेज रहा हूं
image_url भागों के साथ सामग्री सरणी प्रारूप का उपयोग करें। समर्थित प्रारूप: PNG, JPEG, WebP, और GIF (एनिमेटेड सहित)। आप एक ही संदेश में एकाधिक छवियां शामिल कर सकते हैं - प्रत्येक एक अलग छवि_यूआरएल भाग के रूप में:
सीमाएँ
BazaarLink में दो स्वतंत्र सीमाएँ लागू होती हैं: requests per minute पर rate limit, और account spending पर credit limit। Rate limit पार होने पर HTTP 429 मिलता है; credits खत्म होने पर HTTP 402 मिलता है।
दर सीमा
Rate सीमाएं प्रति उपयोगकर्ता (प्रति कुंजी नहीं) हैं, प्रति मिनट अनुरोधों में मापी जाती हैं (RPM)। कोई दैनिक सीमा नहीं है. टियर आपके खाते के क्रेडिट बैलेंस द्वारा स्वचालित रूप से निर्धारित होता है।
जब दर सीमा पार हो जाती है तो आपको रिट्री-आफ्टर हेडर के साथ 429 प्रतिक्रिया प्राप्त होती है। अनुरोधों को पुनः प्रयास करते समय घातीय बैकऑफ़ लागू करें।
रिस्पॉन्स हेडर
Responses में x-request-id; non-streaming में x-generation-id; x-ratelimit-*; लागू होने पर retry-after; और auto या auto:free routing के लिए x-auto-resolved-model हो सकते हैं।
x-request-id: 85e6f35c71a31f19-SJC
x-generation-id: 85e6f35c71a31f19-SJC
x-ratelimit-limit: 200
x-ratelimit-remaining: 198
x-ratelimit-reset: 1740000060
retry-after: 5
x-auto-resolved-model: openai/gpt-4oक्रेडिट सीमा
402 response का मतलब है कि आपका account balance या key की spending cap शून्य पर पहुँच गई है — न कि आप बहुत तेज़ requests भेज रहे हैं। इन responses में rate limit headers नहीं होते, और अगर limit streaming के बीच में लगे तो HTTP status बदलने की बजाय SSE error event मिलेगा।
IP allowlist
हर API कुंजी के लिए अलग IP allowlist सेट की जा सकती है, ताकि केवल निर्धारित source IP से आने वाले अनुरोध ही उस कुंजी का उपयोग कर सकें।
कब उपयोग करें
यह fixed outbound IP वाले production server deployment के लिए उपयोगी है। यदि आपका application home network, mobile network या बदलते पते से अनुरोध भेजता है, तो पहले सुनिश्चित करें कि outbound IP स्थिर है; वरना आप खुद को बाहर lock कर सकते हैं।
कैसे सेट करें
इस पेज पर /keys खोलें, संबंधित कुंजी के "⋯" menu में "IP allowlist" चुनें, entries डालें और save करें।
वैकल्पिक रूप से, signed-in session या Management API key के साथ PATCH /api/v1/keys/:id का उपयोग करें:
Entry format
UI में हर line पर एक value डालें। API में इन्हीं values को `allowedCidrs` array में भेजें। Bare IPv4 address, IPv4 CIDR या IPv6 literal (केवल exact match) स्वीकार किए जाते हैं।
203.0.113.7
198.51.100.0/24
2001:db8::1व्यवहार
खाली छोड़ने (empty [] array भेजने) का अर्थ है सभी source IP को अनुमति देना। यह default है; मौजूदा कुंजियों का व्यवहार नहीं बदलता।
Source IP `cf-connecting-ip` header से लिया जाता है।
यदि list खाली नहीं है लेकिन source IP resolve नहीं हो पाता, तो request अस्वीकार कर दी जाती है (fail-closed)।
व्यक्तिगत सर्किट ब्रेकर
आपकी सभी API कुंजियों पर लागू होने वाली 1 मिनट और 1 घंटे की स्थिर (fixed) USD खर्च सीमा। जब विंडो की सीमा पार हो जाए तो नए अनुरोधों को HTTP 429 मिलता है; विंडो clock boundary पर स्वतः रीसेट हो जाती है।
खाता सुरक्षा
पासवर्ड के अलावा, BazaarLink साइन-इन पर सुरक्षा की एक अतिरिक्त परत के लिए दो-चरणीय सत्यापन का भी समर्थन करता है।
दो-चरणीय सत्यापन (TOTP) सक्षम करें
- "सेटिंग्स" पेज पर जाएं, "दो-चरणीय सत्यापन (TOTP)" सेक्शन खोजें और "दो-चरणीय सत्यापन सक्षम करें" पर क्लिक करें।
- किसी authenticator ऐप (जैसे Google Authenticator) से स्क्रीन पर दिख रहा QR कोड स्कैन करें, या नीचे दी गई सीक्रेट को मैन्युअल रूप से दर्ज करें।
- authenticator द्वारा जनरेट किया गया 6-अंकीय कोड दर्ज करें और पुष्टि करें — सक्षम करना पूरा हो जाएगा।
सक्षम करने के बाद सिस्टम 8 बैकअप कोड दिखाएगा (केवल एक बार दिखाए जाते हैं) — हर कोड 10 अक्षर का है और केवल एक बार काम करता है। इन्हें तुरंत लिख लें या कॉपी करके फ़ोन के अलावा किसी सुरक्षित जगह सहेजें; फ़ोन खोने या authenticator तक पहुंच न होने पर बैकअप कोड से साइन-इन करें।
खाते की सुरक्षा के अन्य तरीके
लीक हुई या गलत इस्तेमाल हुई कुंजी से होने वाले नुकसान को और कम करने के लिए इन्हें दो-चरणीय सत्यापन के साथ जोड़ें:
- IP allowlist — API कुंजी को केवल तय किए गए स्रोत IP से इस्तेमाल करने तक सीमित करता है।
- व्यक्तिगत सर्किट ब्रेकर — प्रति मिनट और प्रति घंटा खर्च की सीमा तय करता है, जो सीमा पार होने पर अपने आप रुक जाती है।
- प्रति-कुंजी खर्च सीमा — API कुंजी बनाते या अपडेट करते समय दैनिक, साप्ताहिक या मासिक खर्च सीमा तय करना।
Image जनरेशन
modalities:["image"] के साथ /v1/chat/completions या OpenAI DALL·E-संगत /v1/images/generations से इमेज जनरेट करें।
curl -N https://api.bazaarlink.ai/v1/chat/completions \
-H "Authorization: Bearer $BAZAARLINK_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"openai/gpt-5.4-image-2","messages":[{"role":"user","content":"a red cat on a sofa"}],"modalities":["image","text"],"stream":true}'पूरा फ़्लो (स्ट्रीमिंग, इमेज एडिट, SSE प्रोटोकॉल, मॉडल सूची) API रेफ़रेंस में देखें →
वीडियो जनरेशन
असिंक्रोनस 3-चरण फ़्लो (submit → poll → content). वीडियो जनरेशन में 30 सेकंड से 5 मिनट तक लगते हैं।
curl https://api.bazaarlink.ai/v1/videos \
-H "Authorization: Bearer $BAZAARLINK_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"bytedance/seedance-2.0","prompt":"a bird flying over mountains","duration":3}'
# → 202 { "id": "vjob_xxx", "status": "pending" }पूरा फ़्लो (पोलिंग, डाउनलोड, टास्क प्रकार, चेतावनियाँ) API रेफ़रेंस में देखें →
PDF इनपुट
PDF को नेटिव रूप से सपोर्ट करने वाले मॉडल (जैसे Claude, Gemini) को संदेशों में सीधे PDF दस्तावेज़ भेजें। BazaarLink फ़ाइल को सीधे मॉडल को भेजता है — सामान्य input tokens की तरह बिल होता है, कोई अतिरिक्त शुल्क या प्रोसेसिंग चरण नहीं।
समर्थित प्रारूप
- PDF दस्तावेज़ (पाठ, चित्र, तालिकाएँ, स्कैन किए गए)
- Base64-एन्कोडेड डेटा URL (`data:application/pdf;base64,...`)
- बहु-पृष्ठ दस्तावेज़ केवल
- पासवर्ड-मुक्त पीडीएफ
वीडियो इनपुट
वीडियो इनपुट सपोर्ट करने वाले मॉडल को वीडियो फ़ाइलें भेजें ताकि विश्लेषण, कैप्शन या दृश्यों और घटनाओं से जुड़े सवालों के जवाब पाए जा सकें। सीधे URL या base64 data URI से काम करता है — सार्वजनिक रूप से उपलब्ध वीडियो के लिए URL अधिक कुशल है; स्थानीय फ़ाइलों या निजी वीडियो के लिए base64।
समर्थित प्रारूप
MP4 (H.264)MPEGMOVWebMOAuth PKCE
OAuth 2.0 PKCE (कोड एक्सचेंज के लिए प्रूफ कुंजी) सार्वजनिक क्लाइंट ऐप्स (ब्राउज़र एसपीए, मोबाइल ऐप्स) को लंबे समय तक चलने वाले सर्वर गुप्त क्लाइंट-साइड को संग्रहीत किए बिना व्यक्तिगत उपयोगकर्ताओं की ओर से API कॉल करने देता है।
OAuth PKCE का उपयोग कब करें
- एक ब्राउज़र SPA या मोबाइल ऐप बनाना जिसके लिए प्रति-उपयोगकर्ता बिलिंग की आवश्यकता हो
- मल्टी-टेनेंट SaaS - प्रत्येक अंतिम-उपयोगकर्ता अपने स्वयं के API उपयोग के लिए भुगतान करता है
- आप साझा गुप्त क्लाइंट-साइड (सार्वजनिक क्लाइंट) संग्रहीत नहीं कर सकते
- आपको एकल साझा API कुंजी के बजाय प्रति-उपयोगकर्ता अलग, रद्द की जा सकने वाली कुंजी चाहिए (जो उपयोगकर्ता द्वारा रद्द किए जाने तक मान्य रहती है)
आपके उपयोगकर्ता क्या देखेंगे
अपनी साइन-इन स्क्रीन पर इन चरणों का वर्णन करें:
- आपके ऐप में वे "BazaarLink से साइन इन करें" चुनते हैं (या आप बटन का जो भी नाम रखें)।
- उनका ब्राउज़र BazaarLink का ऑथराइज़ेशन पेज खोलता है। यदि वे अभी साइन इन नहीं हैं, तो पहले साइन इन करते हैं और अपने आप इस पेज पर लौट आते हैं।
- पेज आपके ऐप का पता और अनुमति देने पर होने वाली बातें दिखाता है: ऐप के लिए एक नई API कुंजी बनती है, उपयोग का शुल्क उनके BazaarLink बैलेंस से कटता है, और वे कुंजी को किसी भी समय रद्द कर सकते हैं। वे कुंजी का नाम रख सकते हैं और मासिक खर्च सीमा तय कर सकते हैं (दोनों वैकल्पिक)।
- वे "अनुमति दें" पर क्लिक करते हैं और आपके ऐप पर वापस भेज दिए जाते हैं। यदि वे "अस्वीकार करें" पर क्लिक करते हैं, तो कोई कुंजी नहीं बनती, आपके ऐप को सूचित नहीं किया जाता और उन्हें "एक्सेस अस्वीकृत" पेज दिखता है।
- बाद में एक्सेस रद्द करने के लिए वे "API कुंजियाँ" पेज (https://bazaarlink.ai/keys) खोलते हैं और आपके ऐप के नाम वाली कुंजी को अक्षम या हटा देते हैं।
यह कैसे काम करता है
चरण 1 - प्रमाणीकरण आरंभ करें — एक यादृच्छिक कोड_सत्यापनकर्ता (एक लंबी यादृच्छिक स्ट्रिंग) और उसके SHA-256 हैश को कोड_चैलेंज के रूप में जेनरेट करें, फिर उपयोगकर्ता को BazaarLink प्रमाणीकरण पृष्ठ पर रीडायरेक्ट करें।
https://bazaarlink.ai/auth?callback_url=https://yourapp.com/callback&code_challenge=CODE_CHALLENGE&code_challenge_method=S256ऑथराइज़ेशन URL के पैरामीटर
- callback_url (आवश्यक) — अनुमति देने के बाद उपयोगकर्ता जहाँ लौटता है। नियम नीचे देखें।
- code_challenge (आवश्यक) — आपके code_verifier का base64url-एन्कोडेड SHA-256 (43 अक्षर, बिना पैडिंग)।
- code_challenge_method (आवश्यक) — S256 होना चाहिए।
- state (वैकल्पिक) — आपका अपना अपारदर्शी CSRF मान, 1 से 256 प्रिंट करने योग्य ASCII अक्षर। BazaarLink इसे code के ठीक बाद &state=… के रूप में बिना बदले लौटा देता है। गलत प्रारूप वाला state होने पर प्राधिकरण पेज "अमान्य प्राधिकरण अनुरोध" दिखाता है।
- key_label (वैकल्पिक) — अधिकतम 100 अक्षर। यह सहमति पेज पर कुंजी का नाम पहले से भर देता है (उपयोगकर्ता इसे बदल सकता है)। बहुत लंबे या खाली लेबल अनदेखे कर दिए जाते हैं।
- Headless tools (CLI / desktop, no callback_url) — omit callback_url. After the user allows, the page shows a one-time code (valid 5 minutes, single use) for them to enter into your tool; exchange it exactly like a redirected code. The page cannot show which app is asking, so tell users to enter the code only in a tool they started themselves.
समर्थित नहीं
- workspace_id और required_workspace_id — समर्थित नहीं। कुंजी हमेशा उपयोगकर्ता के अपने खाते की होती है।
- code_challenge_method=plain — समर्थित नहीं (केवल S256)।
callback_url के नियम
- यह https:// होना चाहिए। http:// केवल localhost, 127.0.0.1 और [::1] (किसी भी पोर्ट) के लिए स्वीकार किया जाता है; तब सहमति पेज स्थानीय विकास की चेतावनी दिखाता है।
- कोई फ्रैगमेंट (#) नहीं, URL में उपयोगकर्ता नाम या पासवर्ड नहीं, अधिकतम 2048 अक्षर।
- सहमति पेज आपके callback का होस्ट नाम दिखाता है ताकि उपयोगकर्ता देख सके कि कौन सा ऐप अनुरोध कर रहा है।
- उपयोगकर्ता के अनुमति देने के बाद ब्राउज़र code=… जुड़े हुए आपके callback_url पर भेजा जाता है (और यदि आपने state भेजा था तो state=… भी; मौजूदा क्वेरी स्ट्रिंग बनी रहती है)। code 10 मिनट तक मान्य रहता है और केवल एक बार काम करता है।
चरण 2 - API कुंजी के लिए एक्सचेंज कोड — उपयोगकर्ता द्वारा अनुरोध को अधिकृत करने के बाद, BazaarLink एक बार उपयोग होने वाले code के साथ आपके callback_url पर रीडायरेक्ट करता है। code 10 मिनट तक मान्य रहता है और केवल एक बार उपयोग हो सकता है; गलत code_verifier से वह रद्द हो जाता है। उपयोगकर्ता की API कुंजी पाने के लिए code, code_verifier और code_challenge_method (तीनों आवश्यक) POST करें।
चरण 3 - उपयोगकर्ता-स्कोप्ड कुंजी का उपयोग करें — लौटाई गई कुंजी एक सामान्य BazaarLink API कुंजी है जो अधिकृत करने वाले उपयोगकर्ता की है — उपयोग का शुल्क आपके नहीं, उस उपयोगकर्ता के बैलेंस से कटता है।
curl https://bazaarlink.ai/api/v1/chat/completions \
-H "Authorization: Bearer sk-bl-..." \
-H "Content-Type: application/json" \
-d '{"model": "google/gemini-3.5-flash", "messages": [{"role": "user", "content": "Hello"}]}'JavaScript उदाहरण (ब्राउज़र)
/auth पेज और POST /api/v1/auth/keys https://bazaarlink.ai से परोसे जाते हैं (api.bazaarlink.ai से नहीं)। मिली हुई कुंजी दोनों बेस URL पर काम करती है: https://bazaarlink.ai/api/v1 और https://api.bazaarlink.ai/v1।
यदि उपयोगकर्ता अधिकृत करते समय खर्च सीमा तय करता है, तो वह मासिक सीमा होती है और खाते की मासिक अवधि के साथ रीसेट होती है।
त्रुटियाँ
त्रुटियाँ OpenAI-शैली के प्रारूप {"error":{"message","type","code"}} में आती हैं। POST /api/v1/auth/keys ये लौटा सकता है:
- 400 invalid_code_challenge_method — code_challenge_method अनुपस्थित है, plain है, या S256 के अलावा कुछ और है।
- 400 — JSON बॉडी अमान्य है, या code / code_verifier अनुपस्थित है।
- 403 invalid_code — code अज्ञात, समाप्त या पहले ही उपयोग किया हुआ है, code_verifier गलत है, या खाते को अब अनुमति नहीं है। इन सभी में जानबूझकर एक ही संदेश लौटाया जाता है, ताकि कॉल करने वाला इन्हें अलग न पहचान सके। गलत code_verifier भी code को रद्द कर देता है: उपयोगकर्ता से दोबारा अधिकृत करने को कहें।
- 429 rate_limited — एक IP से 10 मिनट में 30 से अधिक एक्सचेंज प्रयास (Retry-After हेडर देखें)।
- 429 key_total_cap — खाते के पास पहले से अधिकतम 200 API कुंजियाँ हैं।
- 405 — केवल POST स्वीकार किया जाता है।
अपने सर्वर से कोड बनाएँ (प्रबंधन कुंजी)
व्यक्तिगत प्रबंधन कुंजी (Management Key) का स्वामी उपयोगकर्ता को ब्राउज़र पेज पर भेजे बिना सीधे POST /api/v1/auth/keys/code से प्रमाणीकरण कोड बना सकता है (OpenRouter-संगत)। कोड प्रबंधन कुंजी के स्वामी से जुड़ा होता है, इसलिए इसके बदले मिलने वाली कुंजी उसी स्वामी के खाते की मानक कुंजी होती है, जिसकी सीमा, अवधि, समाप्ति और नाम यहीं तय किए जाते हैं। इसका उपयोग तब करें जब आपके अपने टूल के पास पहले से प्रबंधन कुंजी हो और वह किसी ऐप को सीमित कुंजी देना चाहता हो। एक्सचेंज (POST /api/v1/auth/keys) ऊपर जैसा ही है।
- callback_url (आवश्यक) और code_challenge + code_challenge_method=S256 (आवश्यक) — नियम प्रमाणीकरण URL जैसे ही हैं।
- key_label (वैकल्पिक) — अधिकतम 100 अक्षर; कुंजी का नाम। डिफ़ॉल्ट: "App: <आपका callback होस्ट>"।
- limit (वैकल्पिक) — USD में खर्च सीमा, 0 या अधिक; 0 या न देने का मतलब कोई सीमा नहीं।
- usage_limit_type (वैकल्पिक) — daily, weekly या monthly: सीमा कितनी बार रीसेट होती है। केवल limit के साथ उपयोग होता है; डिफ़ॉल्ट monthly है।
- expires_at (वैकल्पिक) — कुंजी कब समाप्त होगी: भविष्य का ISO 8601 UTC समय, सेकंड सहित, जैसे 2026-12-31T23:59:59Z। केवल मिनट तक के मान अस्वीकार किए जाते हैं। न देने पर कुंजी रद्द किए जाने तक मान्य रहती है।
- workspace_id — समर्थित नहीं (400)। spawn_agent और spawn_cloud स्वीकार किए जाते हैं पर अनदेखे रहते हैं।
प्रतिक्रिया: { "data": { "id", "app_id", "created_at" } }। id वह एक-बार उपयोग वाला कोड है जिसे एक्सचेंज करना है (10 मिनट तक मान्य, केवल एक बार)। BazaarLink में ऐप रजिस्ट्री नहीं है, इसलिए app_id आपके callback पते से निकाला गया स्थिर पूर्णांक है: एक ही पते को हमेशा वही app_id मिलता है।
- 401 unauthorized — Bearer कुंजी नहीं दी गई, या कुंजी अज्ञात है।
- 403 management_key_required — कुंजी व्यक्तिगत प्रबंधन कुंजी नहीं है (मानक कुंजियाँ और संगठन की प्रबंधन कुंजियाँ अस्वीकार की जाती हैं)।
- 403 account_not_allowed — कुंजी का स्वामी निलंबित या हटाया गया है।
- 400 — invalid_callback_url, invalid_code_challenge_method, invalid_code_challenge, invalid_expires_at, workspace_not_supported, या गलत बॉडी।
- 429 rate_limited — एक स्वामी के लिए प्रति घंटे 30 से अधिक कोड, या एक IP से प्रति घंटे 120 से अधिक (Retry-After देखें)।
आपको मिलने वाली कुंजी
- एक मानक BazaarLink API कुंजी (sk-bl-…), ठीक वैसी ही जैसी "API कुंजियाँ" पेज पर बनाई गई कुंजी होती है। यह उपयोगकर्ता द्वारा रद्द किए जाने तक मान्य रहती है।
- उपयोग का शुल्क उपयोगकर्ता के BazaarLink बैलेंस से कटता है। यदि उपयोगकर्ता ने सहमति पेज पर खर्च सीमा तय की है, तो वह मासिक सीमा है।
- यह दोनों बेस URL पर काम करती है: https://bazaarlink.ai/api/v1 और https://api.bazaarlink.ai/v1।
- यह खाते की 200 कुंजियों की सीमा में गिनी जाती है और उपयोगकर्ता की "API कुंजियाँ" सूची में दिखती है, जहाँ वह इसे किसी भी समय अक्षम या हटा सकता है।
- निलंबित या हटाए गए खाते ऐप को अधिकृत नहीं कर सकते, और निलंबन से पहले जारी किया गया code एक्सचेंज के समय अस्वीकार कर दिया जाता है (403 invalid_code)।
आपको क्या मिलता है
- प्राधिकरण कोड + PKCE प्रवाह
- प्रति-उपयोगकर्ता बिलिंग: प्रत्येक उपयोगकर्ता अपने बैलेंस से अपने उपयोग का भुगतान करता है
- प्रत्येक उपयोगकर्ता के लिए अलग कुंजी, जो उपयोगकर्ता के "API कुंजियाँ" पेज पर सूचीबद्ध होती है और जिसे वह रद्द कर सकता है
प्रबंधन API कुंजी
प्रबंधन कुंजियाँ प्रोग्रामेटिक कुंजी प्रबंधन के लिए डिज़ाइन की गई हैं। वे मानक API कुंजियाँ बना सकते हैं, सूचीबद्ध कर सकते हैं, अद्यतन कर सकते हैं, अक्षम कर सकते हैं और हटा सकते हैं - लेकिन AI मॉडल कॉल नहीं कर सकते।
एक प्रबंधन कुंजी बनाना
पर जाएंप्रबंधन API कुंजी पृष्ठऔर "बनाएं" पर क्लिक करें - यह आपके मानक API कुंजियों से एक अलग पृष्ठ है, न कि उसी पृष्ठ पर एक प्रकार चयनकर्ता।
सूची कुंजियाँ
उप-कुंजी बनाएँ
Update Key
रिवोक कुंजी
DELETE https://api.bazaarlink.ai/v1/keys/:id
Authorization: Bearer sk-bl-YOUR_MGMT_KEY
# Returns 204 No Content on successQuery बैलेंस
Query उपयोग
GET https://api.bazaarlink.ai/v1/usage?period=month
Authorization: Bearer sk-bl-YOUR_MGMT_KEY
# period: day | week | month | yearApp एट्रिब्यूशन
उपयोग ट्रैकिंग, डैशबोर्ड दृश्यता और सूक्ष्म विश्लेषण सक्षम करने के लिए अनुरोध हेडर में अपने एप्लिकेशन की पहचान करें।
उपलब्ध हेडर
| Header | Description |
|---|---|
| HTTP-Referer | आपकी साइट URL, उपयोग ट्रैकिंग और विश्लेषण के लिए (वैकल्पिक) |
| X-Title | आपके ऐप का नाम, डैशबोर्ड में दिखाया गया है (वैकल्पिक) |
त्रुटि कोड
त्रुटि प्रतिक्रिया प्रारूप
Error envelope endpoint के अनुसार बदलता है। HTTP status और मौजूद होने पर error.type उपयोग करें। error.code string या numeric हो सकता है या अनुपस्थित; error.message केवल दिखाने के लिए है।
{
"error": {
"message": "Insufficient credits. Please top up to continue.",
"type": "invalid_request_error",
"code": "insufficient_credits"
}
}HTTP स्थिति और त्रुटि.कोड
Error envelope endpoint के अनुसार बदलता है। HTTP status और मौजूद होने पर error.type उपयोग करें। error.code string या numeric हो सकता है या अनुपस्थित; error.message केवल दिखाने के लिए है।
मशीन-पठनीय बिलिंग कोड
A 402 can represent different controls. Use these stable codes to choose the correct action.
Stable error.code catalog
These string codes are emitted by public inference and media paths. Branch on the string code when present; the HTTP status remains the broad failure class.
सामग्री मॉडरेशन
सभी अनुरोधों की मॉडल तक पहुँचने से पहले स्वचालित रूप से समीक्षा की जाती है। हमारी उपयोग नीति का उल्लंघन करने वाले अनुरोध मॉडल तक पहुँचने से पहले अस्वीकार कर दिए जाते हैं और 403 त्रुटि लौटाते हैं।
अवरुद्ध की जाने वाली सामग्री श्रेणियाँ
मॉडरेशन हमारी उपयोग नीति (Acceptable Use Policy) पर आधारित है और मुख्य रूप से निम्नलिखित श्रेणियों की सामग्री को अवरुद्ध करता है:
- यौन शोषण सामग्री
- हिंसक धमकियाँ
- अवैध कृत्यों के लिए संचालन संबंधी मार्गदर्शन
- जैविक खतरे से संबंधित सामग्री
403 प्रतिक्रिया प्रारूप
मॉडरेशन द्वारा अवरुद्ध किया गया अनुरोध इस प्रारूप में त्रुटि लौटाता है:
{
"error": {
"message": "Your prompt was blocked by content moderation.",
"type": "invalid_request_error",
"code": "content_filter"
}
}अवरुद्ध अनुरोधों के लिए शुल्क नहीं लिया जाता — अस्वीकृत अनुरोध के लिए आपसे कोई शुल्क नहीं लिया जाएगा।
गलत सकारात्मक की अपील
यदि आपको लगता है कि किसी अनुरोध को गलत तरीके से अवरुद्ध किया गया है, तो अनुरोध के समय और (यदि सुविधाजनक हो) request id के साथ सहायता टीम से संपर्क करें — हम इसकी समीक्षा करेंगे।
गोपनीयता
प्रत्येक अनुरोध की स्वचालित रूप से सामग्री समीक्षा की जाती है।
उल्लंघन के रूप में पाए गए अनुरोधों की सामग्री अनुपालन साक्ष्य के रूप में सुरक्षित रखी जाती है।
अन्य अनुरोधों की पूर्ण प्रॉम्प्ट सामग्री सुरक्षित नहीं रखी जाती।
दर सीमा, बजट और आपातकालीन ब्रेक
These controls can reject an otherwise valid request and require different recovery actions.
Error envelope endpoint के अनुसार बदलता है। HTTP status और मौजूद होने पर error.type उपयोग करें। error.code string या numeric हो सकता है या अनुपस्थित; error.message केवल दिखाने के लिए है।
वीडियो और मीडिया संसाधन स्थिति
Video validation commonly returns numeric code 400. Missing jobs return 404, retired models 410, unfinished video content 409, and invalid video byte ranges 416.
पुनः प्रयास नीति
Retry only failures that may recover without changing the request. Honor Retry-After or use exponential backoff with jitter. Do not stack SDK and manual retries.
हैंडलिंग त्रुटियाँ
स्ट्रीमिंग त्रुटि प्रारूप
त्रुटियां जो किसी भी टोकन को स्ट्रीम करने से पहले होती हैं, JSON बॉडी के साथ एक मानक HTTP त्रुटि प्रतिक्रिया लौटाती हैं।
stream शुरू होने के बाद HTTP response पहले से 200 होता है। हर SSE data frame को parse करें और शीर्ष-स्तर के error या choices[0].finish_reason === "error" को विफल, अधूरे response के रूप में मानें।
यदि stream शुरू होने के बाद विफल होता है, तो BazaarLink शीर्ष-स्तर के error ऑब्जेक्ट वाला अंतिम SSE event भेज सकता है, उसके बाद data: [DONE]। response को अधूरा मानें; आंशिक output को पूर्ण परिणाम के रूप में उपयोग न करें।
data: {"error":{"message":"The request could not be completed.","type":"upstream_error","code":502}}
data: [DONE]
// Branch on error.code; error.type can vary by failure path.टूल कॉलिंग
टूल कॉलिंग (जिसे फ़ंक्शन कॉलिंग के रूप में भी जाना जाता है) मॉडल को आपके द्वारा परिभाषित बाहरी फ़ंक्शन को लागू करने देता है। मॉडल तय करता है कि टूल को कब कॉल करना है और संरचित तर्क उत्पन्न करता है - आपका कोड फ़ंक्शन निष्पादित करता है और बातचीत जारी रखने के लिए परिणाम लौटाता है।
समर्थित मॉडल
अधिकांश फ्रंटियर मॉडल टूल कॉलिंग का समर्थन करते हैं। यहां कुछ लोकप्रिय विकल्प दिए गए हैं:
परिभाषित उपकरण
प्रत्येक उपकरण एक JSON ऑब्जेक्ट है जो एक फ़ंक्शन का वर्णन करता है जिसे मॉडल कॉल कर सकता है। पैरामीटर फ़ील्ड JSON स्कीमा का उपयोग करता है।
tool_choice विकल्प
पूर्ण प्रवाह
टूल कॉलिंग एक बहु-मोड़ प्रक्रिया है: (1) टूल के साथ अनुरोध भेजें → (2) मॉडल टूल_कॉल लौटाता है → (3) फ़ंक्शन निष्पादित करें → (4) परिणाम वापस भेजें → (5) मॉडल अंतिम प्रतिक्रिया उत्पन्न करता है।
समानांतर टूल कॉल
कुछ मॉडल एक ही प्रतिक्रिया में एकाधिक टूल को कॉल कर सकते हैं। प्रत्येक टूल कॉल को संभालें और सभी परिणाम लौटाएँ:
Streaming के दौरान Tool Calls
Streaming में tool calls position के अनुसार indexed partial deltas में आते हैं — हर delta का argument string index के हिसाब से जोड़ते जाएं, जब तक finish_reason "tool_calls" न बन जाए, जो call पूरा होने का संकेत है।
साधारण Agent Loop
जब तक model tools माँगता रहे तब तक call करते रहने और final answer मिलते ही रुक जाने वाला generic pattern — infinite loop रोकने के लिए max_iterations इस्तेमाल करें।
Function Definition की Best Practices
- specific, descriptive names इस्तेमाल करें — सिर्फ weather नहीं, get_weather_forecast जैसा।
- function क्या करता है और कब इस्तेमाल करना है यह साफ description में लिखें — model सिर्फ इसी text के आधार पर call करने का फैसला करता है।
- जहाँ हो सके enum से values सीमित करें और description में example दें ताकि गलत arguments बनने की संभावना कम हो।
- सिर्फ वाकई जरूरी fields को required बनाएं, optional fields सच में छोड़े जा सकने योग्य होने चाहिए।
संरचित आउटपुट
मॉडल को स्कीमा से मेल खाते हुए वैध JSON वापस करने के लिए बाध्य करें। विश्वसनीय अनुप्रयोगों के निर्माण के लिए यह आवश्यक है जो मॉडल आउटपुट को प्रोग्रामेटिक रूप से पार्स करता है।
विधि 1: प्रतिक्रिया_प्रारूप (JSON स्कीमा)
सख्त JSON स्कीमा अनुपालन लागू करने के लिए:
टिप्स
- स्पष्ट, वर्णनात्मक संपत्ति नामों का उपयोग करें - मॉडल उन्हें संदर्भ के रूप में उपयोग करता है।
- मॉडल का मार्गदर्शन करने के लिए स्कीमा गुणों में विवरण जोड़ें।
- Set सख्त: गारंटीकृत स्कीमा अनुपालन के लिए सही (विलंबता को थोड़ा बढ़ा सकता है)।
- स्कीमा को सरल रखें - गहराई से नेस्टेड स्कीमा आउटपुट गुणवत्ता को कम कर सकते हैं।
- विभिन्न मॉडलों के साथ परीक्षण - कुछ दूसरों की तुलना में जटिल स्कीमा को बेहतर ढंग से संभालते हैं।
असिस्टेंट प्रीफ़िल
संगत मॉडल रूट पर आगे का उत्तर माँगने के लिए messages ऐरे के अंत में एक अधूरा assistant संदेश जोड़ें।
मैसेज ट्रांसफॉर्म
The client-supplied transforms field is ignored and removed before an upstream request. It cannot enable or disable message transformations. BazaarLink may apply context handling under its own server-side rules; shorten the input or select a model with a larger context window when needed.
transforms values such as middle-out; they do not change how this request is routed or processed.Zero डेटा प्रतिधारण
BazaarLink आपके संदेश सामग्री को डिफ़ॉल्ट रूप से संग्रहीत नहीं करता है। यह पृष्ठ बताता है कि आपका डेटा कैसे प्रबंधित किया जाता है। संवेदनशील डेटा संसाधित करने वाले अनुप्रयोगों के लिए उपयुक्त।
वर्तमान डेटा हैंडलिंग
- संदेश सामग्री: डिफ़ॉल्ट रूप से संग्रहीत नहीं, प्रसंस्करण के बाद मेमोरी से हटा दी गई
- बिलिंग मेटाडेटा: टोकन गिनती, टाइमस्टैम्प, मॉडल आईडी
- Uउपयोग लॉग: केवल अनुरोध आँकड़े, कोई संदेश सामग्री नहीं
- अपस्ट्रीम फ़ॉरवर्डिंग: अपस्ट्रीम प्रदाताओं को भेजे गए संदेश - उनकी गोपनीयता नीतियों के अधीन
प्रॉम्प्ट कैशिंग
प्रॉम्प्ट कैशिंग पहले से गणना किए गए शीघ्र टोकन का पुन: उपयोग करता है, जिससे लागत और विलंबता में काफी कमी आती है - विशेष रूप से बड़े, दोहराए गए सिस्टम संकेतों वाले अनुप्रयोगों के लिए।
यह कैसे काम करता है
कॉन्फ़िगरेशन की ज़रूरत है या नहीं, यह प्रोवाइडर पर निर्भर करता है। OpenAI परिवार के मॉडल लंबे, दोहराए गए प्रॉम्प्ट प्रीफ़िक्स को अपने-आप कैश कर लेते हैं — रिक्वेस्ट बदलने की ज़रूरत नहीं। Claude (Anthropic) मॉडल तभी कैश करते हैं जब रिक्वेस्ट में स्पष्ट cache_control ब्रेकपॉइंट हो; BazaarLink यह आपकी तरफ से नहीं जोड़ता, इसलिए बिना मार्कर वाली Claude रिक्वेस्ट कभी कैश नहीं होगी। BazaarLink आपके भेजे गए कैश मार्कर को जस-का-तस आगे भेजता है और usage रिस्पॉन्स में असली कैश रीड/राइट टोकन गिनती बताता है।
रीज़निंग टोकन
रीज़निंग मॉडल (उदाहरण के लिए, डीपसीक आर1, ओ1 सीरीज़) अपना अंतिम उत्तर देने से पहले आंतरिक रूप से सोचते हैं। इन आंतरिक टोकन को रीज़निंग टोकन कहा जाता है और इन्हें अलग से बिल किया जाता है।
प्रतिक्रियाओं से रीजनिंग टोकन पढ़ना
थिंकिंग मोड नियंत्रण
कुछ मॉडल अपने "सोच" मोड को टॉगल करने का समर्थन करते हैं। थिंकिंग मोड अंतिम उत्तर देने से पहले आंतरिक तर्क टोकन उत्पन्न करता है, जिससे अधिक टोकन की कीमत पर गुणवत्ता में सुधार होता है।
| मॉडल परिवार | पैरामीटर | डिफॉल्ट |
|---|---|---|
| qwen3-* | enable_thinking: boolean | झूठा (प्लेटफ़ॉर्म डिफ़ॉल्ट) |
| openai/gpt-5.5, gpt-5.6-sol, gpt-5.4 | reasoning_effort: "low" | "medium" | "high" | medium |
| deepseek/deepseek-r1 | — | हमेशा सक्षम (अक्षम नहीं किया जा सकता) |
एकीकृत तर्क वस्तु (नया प्रारूप)
BazaarLink एकीकृत तर्क वस्तु का भी समर्थन करता है, जो एक सुसंगत API के साथ सभी मॉडल परिवारों पर काम करता है:
| फ़ील्ड | मान | पर लागू होता है |
|---|---|---|
| reasoning.effort | "xhigh" | "high" | "medium" | "low" | "none" | OpenAI o-series, Grok |
| reasoning.max_tokens | integer | Anthropic Claude, Gemini |
| reasoning.exclude | boolean | प्रतिक्रिया से सोच छुपाएं (मॉडल अभी भी कारण) |
सोच की सामग्री पढ़ना
रीज़निंग मॉडल उत्तर के साथ अपनी सोच की सामग्री लौटा सकता है। नीचे सूचीबद्ध मॉडलों में सोच डिफ़ॉल्ट रूप से चालू है: कोई रीज़निंग पैरामीटर न भेजने वाला अनुरोध सोच चालू करके चलता है, सोच की सामग्री लौटाता है, और वास्तव में उपयोग हुए सोच टोकन का बिल बनता है। इसे बंद करने के लिए reasoning: { exclude: true } या include_reasoning: false भेजें। बाकी सभी मॉडल सोच की सामग्री तभी लौटाते हैं जब आप माँगें: reasoning_effort, reasoning ऑब्जेक्ट, include_reasoning: true, thinking या enable_thinking भेजें।
डिफ़ॉल्ट रूप से सोचने वाले मॉडल: gemini-4-argon, deepseek-v4.1-flash, deepseek-v4.1-flash-1017
इसे कैसे माँगें
अनुरोध में इनमें से कोई एक भेजें: reasoning_effort (low, medium या high), reasoning ऑब्जेक्ट (effort, max_tokens), include_reasoning: true, thinking: { type: "enabled" } या enable_thinking: true। reasoning.exclude: true या include_reasoning: false भेजने पर सोच की सामग्री बंद हो जाती है (मॉडल फिर भी reasoning करता है)।
| फ़ील्ड | स्थान | अर्थ |
|---|---|---|
| reasoning | choices[].message.reasoning | सोच की सामग्री (स्ट्रिंग) |
| reasoning_details | choices[].message.reasoning_details | सोच की सामग्री आइटमों की सूची के रूप में, हर आइटम में केवल type और text |
| reasoning | choices[].delta.reasoning | स्ट्रीमिंग: सोच की सामग्री टुकड़ों में आती है (delta.reasoning और delta.reasoning_details), delta.content के उत्तर-पाठ से पहले |
GET /v1/models से देखें कि कौन-सा मॉडल कौन-से स्तर सपोर्ट करता है: हर reasoning मॉडल reasoning.supported_efforts, reasoning.default_effort और reasoning.mandatory सूचीबद्ध करता है (उदाहरण: gemini-4-argon high, medium और low सपोर्ट करता है)।
उदाहरण: gemini-4-argon
/v1/responses पर reasoning: { effort, summary: "auto" } से माँगें; सोच की सामग्री output ऐरे के reasoning आइटम में लौटती है। /v1/messages पर thinking: { type: "enabled", budget_tokens } भेजने से thinking ब्लॉक मिलते हैं।
विलंबता और प्रदर्शन
एआई API प्रतिक्रिया विलंबता को अनुकूलित करना उपयोगकर्ता अनुभव के लिए महत्वपूर्ण है। नीचे मुख्य कारक दिए गए हैं जो BazaarLink आर्किटेक्चर में विलंबता और अनुकूलन के लिए सर्वोत्तम प्रथाओं को प्रभावित करते हैं।
कारक जो विलंबता को प्रभावित करते हैं
- मॉडल का आकार: बड़े मॉडल (70B+) आमतौर पर उत्पन्न करने में धीमे होते हैं
- प्रदाता लोड: प्रदाताओं और दिन के समय के अनुसार भिन्न होता है
- टोकन गिनती: उच्च max_tokens का मतलब है पूरा होने में लंबा समय
- स्ट्रीमिंग बनाम नॉन-स्ट्रीमिंग: स्ट्रीम: ट्रू पहला टोकन तेजी से वितरित करता है
- Context लंबाई: बहुत लंबे संदर्भ प्री-प्रोसेसिंग समय को बढ़ाते हैं
अनुकूलन युक्तियाँ
- कथित विलंबता में सुधार के लिए स्ट्रीमिंग (स्ट्रीम: सत्य) को प्राथमिकता दें
- विलंबता-संवेदनशील परिदृश्यों के लिए छोटे मॉडल (flash/mini/haiku) चुनें
- बार-बार अनुरोधों के लिए विलंबता को कम करने के लिए शीघ्र कैशिंग सक्षम करें
अपटाइम अनुकूलन
अपस्ट्रीम त्रुटि के बाद अनुरोध दूसरा उपलब्ध स्रोत आज़मा सकता है। कोई स्रोत उसे न संभाल सके तो त्रुटि लौटती है। सर्किट ब्रेकर बार-बार प्रयास सीमित करते हैं और प्रदाता की स्थिति मॉनिटर की जाती है।
उपलब्धता तंत्र
- सर्किट ब्रेकर: विफल प्रदाताओं का स्वत: पता लगाता है और उन्हें अलग करता है
- अपस्ट्रीम स्रोत में समस्या होने पर अनुरोध किसी दूसरे उपलब्ध स्रोत को आज़मा सकता है। कोई स्रोत उपलब्ध न हो तो अनुरोध में त्रुटि लौटती है।
- प्रदाता स्वास्थ्य निगरानी: प्रति प्रदाता त्रुटि दर और विलंबता को लगातार ट्रैक करता है
- Retry तर्क: क्षणिक त्रुटियाँ (5xx) स्वचालित रूप से पुनः प्रयास की जाती हैं
सर्किट ब्रेकर
गार्डरेल
Harmful content filter करने और compliance policies लागू करने के लिए API requests में content-safety mechanism जोड़ें। BazaarLink अभी सिर्फ organization level पर customizable content-filter guardrails देता है; personal (non-org) API keys के लिए कोई equivalent setting नहीं है — content safety पूरी तरह upstream model provider के अपने built-in safety systems पर निर्भर करती है।
Planned Features (personal और org keys दोनों में अभी तक उपलब्ध नहीं)
वर्तमान व्यवहार
Personal API keys: सभी upstream providers के अपने content safety systems हैं — content filter trigger करने वाले model responses finish_reason: "content_filter" के साथ आते हैं, और BazaarLink कोई additional filtering नहीं करता। Organization API keys: org_admin "Content Filter Guardrails" में custom rules (block/redact/flag) set कर सकते हैं, जो text model तक पहुँचने से पहले लागू होते हैं।
Cursor IDE एकीकरण
BazaarLink को Cursor के OpenAI Override URL के रूप में सेट करें। Responses API ऑटो-कन्वर्जन, टूल फॉर्मेट सामान्यीकरण और Claude मॉडल के लिए bz- प्रीफिक्स सम्मेलन के साथ ड्रॉप-इन सेटअप।
त्वरित सेटअप
Cursor में Settings → Models खोलें, फिर:
- Override OpenAI Base URL को https://api.bazaarlink.ai/v1 पर सेट करें
- Override OpenAI API Key को अपनी sk-bl-... BazaarLink key पर सेट करें
- अपना मॉडल नाम जोड़ें — Claude के लिए नीचे bz- prefix देखें।
bz- prefix (Claude मॉडल के लिए)
Cursor की client-side validation claude- से शुरू होने वाले किसी भी मॉडल नाम को Cursor की अपनी Anthropic integration से होकर भेजती है, आपके Override URL को बायपास करती है। Cursor को BazaarLink पर भेजने के लिए, मॉडल नाम के सामने bz- जोड़ें। Server prefix हटा देता है और alias map से बाकी resolve करता है।
Dot vs hyphen variants normalize होते हैं: bz-claude-sonnet-4.6 और bz-claude-sonnet-4-6 दोनों एक ही मॉडल पर resolve होते हैं।
CURSOR_MODEL_MAP env var (ऑपरेटर ओवरराइड)
स्व-होस्टेड BazaarLink परिनियोजन के लिए, यह env var सेट करके Cursor-साइड मॉडल नामों को कैटलॉग canonical id पर री-मैप करें:
CURSOR_MODEL_MAP=gpt-claude-sonnet:anthropic/claude-sonnet-4.6,gpt-opus:anthropic/claude-opus-4.7अब Cursor में टाइप किया gpt-claude-sonnet server-side पर anthropic/claude-sonnet-4.6 पर map होता है। यह तब उपयोगी है जब आप चाहते हैं कि Cursor को मॉडल GPT-family लगे (ताकि Override URL से route हो) लेकिन आप वास्तव में Claude serve करें।
जो स्वचालित रूप से होता है
जब request /v1/chat/completions पर पहुंचता है, BazaarLink ये compatibility transforms transparently apply करता है — client-side पर कुछ नहीं करना है:
- Responses API bodies auto-detect — अगर body में messages के बजाय input है, इसे Chat Completions shape में convert किया जाता है (Cursor GPT-family models के लिए Responses API format भेजता है)।
- Flat tool definitions wrap करता है — Cursor Agent { name, description, parameters } बिना function wrapper के भेजता है। हम wrap करते हैं ताकि Anthropic Tool '' not found in provided tools के साथ reject न करे।
- Malformed tool_choice को coerce करता है — Cursor { type: "auto" } भेजता है (object form, function नहीं)। OpenAI spec auto/none/required के लिए string form चाहता है, इसलिए हम coerce करते हैं।
- Non-OpenAI providers पर route करते समय OpenAI-only fields हटाता है — parallel_tool_calls, logprobs, top_logprobs, logit_bias, service_tier, user को forward करने से पहले हटा दिया जाता है (अन्यथा Anthropic 400 लौटाता है)।
- max_output_tokens → max_tokens map करता है और Responses-API-only fields (previous_response_id, truncation, background, store) हटाता है। reasoning field Chat-Completions-native bodies के लिए preserve होता है।
Cursor Agent मोड
Tool calling standard Chat Completions tool-call flow से काम करता है। Cursor tools (Shell, Read, Write, Grep, आदि) tool_choice: "auto" के साथ भेजता है; BazaarLink आपके चुने provider को forward करता है, जो tool call करना है या नहीं तय करता है। Tool calls standard OpenAI tool_calls deltas के रूप में return होते हैं; Cursor locally execute करता है और conversation जारी रखता है। gpt-4o (native OpenAI) या bz-claude-sonnet-4.6 चुनें, दोनों एक जैसे काम करते हैं।
मॉडल रूटिंग
BazaarLink अनुरोधों को सही अपस्ट्रीम प्रदाता तक रूट करने के लिए provider/model-name प्रारूप का उपयोग करता है। यह आपको एकल API एंडपॉइंट के माध्यम से सभी प्रमुख मॉडलों तक पहुंच प्रदान करता है।
मॉडल आईडी प्रारूप
{provider}/{model-name}
# Examples
openai/gpt-5.4-mini
anthropic/claude-sonnet-4.6
google/gemini-3-flash-preview
deepseek/deepseek-v4.1-flashरूटिंग प्राथमिकता
जब आप एक अनुरोध भेजते हैं, तो BazaarLink अपस्ट्रीम प्रदाता को इस क्रम में हल करता है:
- सटीक मिलान - पूर्ण मॉडल आईडी से मेल खाने वाले मॉडल मार्ग की तलाश करता है
- Provider वाइल्डकार्ड - प्रदाता/* मार्गों पर वापस आ जाता है (उदा. openai/*)
- वैश्विक वाइल्डकार्ड - *वाइल्डकार्ड मार्गों पर वापस आ जाता है
- Default provider key — केवल ज्ञात catalog model के लिए enabled और default चिह्नित key का उपयोग
पर सभी उपलब्ध मॉडल ब्राउज़ करें मॉडल पेज.
ऑटो राउटर
Auto Router v3 अनुरोध को 14 task tiers में से एक में score करता है और उस tier की मौजूदा primary तथा fallback chain उपयोग करता है। Paid और free tables admin console में अलग-अलग प्रबंधित होते हैं।
- auto — paid routing table; सफल वास्तविक model के published price पर billing होती है।
- auto:free — free routing table; free quota के भीतर cost $0 है। quota समाप्त होने पर balance वाले accounts paid fallback बंद न होने पर paid auto पर जा सकते हैं।
कैसे उपयोग करें
स्वचालित रूटिंग सक्षम करने के लिए मॉडल को "ऑटो" (भुगतान) या "ऑटो: फ्री" (फ्री) पर सेट करें:
curl https://api.bazaarlink.ai/v1/chat/completions \
-H "Authorization: Bearer $BAZAARLINK_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"auto","messages":[{"role":"user","content":"Review this TypeScript function"}]}'v3 tier कैसे चुनता है
General tiers simple, standard, complex और reasoning हैं। Specialized tiers coding, vision, image, video, data, search, social, email, calendar और trading हैं। Low-confidence boundary result एक स्तर ऊपर किया जाता है।
- Tier scoring: messages, tools, length, keywords और structure से 14 tiers में से एक चुना जाता है
- Hard overrides: vision, formal reasoning और specialized tasks सीधे tier चुन सकते हैं
- Route lookup: मौजूदा primary और अधिकतम पाँच fallbacks पढ़ता है; disabled tier 503 लौटाता है
- Execution: primary के बाद configured fallback chain क्रम से आज़माई जाती है
- Response ट्रैकिंग: हल किया गया मॉडल प्रतिक्रिया निकाय और X-ऑटो-रिज़ॉल्व्ड-मॉडल हेडर में लौटाया जाता है
वर्तमान model tables
नीचे वही live configuration है जो inference और admin उपयोग करते हैं। हर tier की primary, fallback order और enabled state बिना deployment बदली जा सकती है।
auto
auto:free
चुनिंदा मॉडल दर-सीमित मुफ़्त टियर प्रदान करते हैं। मुफ़्त पात्रता प्लेटफ़ॉर्म द्वारा प्रति मॉडल दी जाती है — मॉडल को उसकी सामान्य ID से कॉल करें; :free प्रत्यय एक वैकल्पिक उपनाम है (सशुल्क मॉडल में जोड़ने से वह मुफ़्त नहीं होता)।
मॉडल वेरिएंट
स्वतंत्र मॉडल आईडी
:free, :extended और :thinking जैसे कैटलॉग वैरिएंट अलग क्षमताओं या कैटलॉग कीमत वाले आइटम पहचान सकते हैं। अपस्ट्रीम रूट और ग्राहक मूल्य BazaarLink कैटलॉग तथा सर्वर-साइड नियमों से तय होते हैं।
:free
:extended
:thinking:nitro
:floor
:exacto:onlineमुफ़्त मॉडल
चुनिंदा मॉडल दर-सीमित मुफ़्त टियर प्रदान करते हैं। मुफ़्त पात्रता प्लेटफ़ॉर्म द्वारा प्रति मॉडल दी जाती है — मॉडल को उसकी सामान्य ID से कॉल करें; :free प्रत्यय एक वैकल्पिक उपनाम है (सशुल्क मॉडल में जोड़ने से वह मुफ़्त नहीं होता)।
- सामान्य मॉडल ID (जैसे deepseek/deepseek-v4-flash) से कॉल करें। मुफ़्त कोटा के भीतर अनुरोध स्वतः निःशुल्क सेवित होते हैं।
- मुफ़्त उपयोग प्रति उपयोगकर्ता प्रति मिनट अनुरोध और दैनिक सीमा से सीमित है। सीमाएँ खाता स्तर (बिना क्रेडिट / क्रेडिट सहित) के अनुसार बदलती हैं।
- मुफ़्त कोटा पार करने पर यदि आपके पास क्रेडिट है, तो अनुरोध सूचीबद्ध कीमत पर सशुल्क टियर पर स्वतः जारी रहते हैं। स्वचालित फ़ॉलबैक बंद करने और 429 पाने के लिए X-Free-Fallback: false भेजें। क्रेडिट न होने पर कोटा-पार अनुरोध 429 लौटाते हैं।
- GET /v1/models हर मुफ़्त-टियर मॉडल के लिए एक :free प्रविष्टि सूचीबद्ध करता है; auto:free हमेशा किसी मुफ़्त मॉडल पर रूट होता है।
अभी मुफ़्त कोटा वाले मॉडल
मुफ़्त कोटा इस्तेमाल करने के लिए इन मॉडल ID को सीधे कॉल करें। सूची बदलती रहती है — नवीनतम सेट के लिए API से पूछें।
qwen/qwen3.7-flash
reflection/beam-free
nvidia/nemotron-3.5-lightning-free
reflection/beam
stealth/glyph-cluster
deepseek/deepseek-v4-flash-0731freeमुफ़्त कोटा सीमाएँ
आपका दैनिक बजट = ऊपर दिया दैनिक अनुरोध बजट × आपका खाता स्तर गुणक, हर मुफ़्त मॉडल के लिए अलग गिना जाता है। auto:free पर अतिरिक्त रूप से प्रति-IP समानांतर सीमा भी लागू होती है। अलग-अलग मॉडलों पर प्लेटफ़ॉर्म सख़्त या ढीली सीमाएँ रख सकता है; प्रभावी मान मॉडल पेज के "मुफ़्त कोटा" खंड में दिखते हैं। मुफ़्त कोटा "यूनिट" में गिना जाता है, केवल अनुरोधों की संख्या में नहीं: एक अनुरोध द्वारा खपत की गई यूनिटें prompt की context लंबाई के साथ बढ़ती हैं। इसलिए समान दैनिक कोटा में, लंबे context वाले अनुरोधों की वास्तविक उपयोग संख्या छोटे prompt की तुलना में काफ़ी कम होती है।
मुफ़्त कोटा खत्म होने के बाद
मुफ़्त कोटा समाप्त होने के बाद, खाते में शेष राशि होने पर अतिरिक्त अनुरोध मॉडल की बताई गई सशुल्क दर पर बिल किए जाते हैं। इसके बजाय 429 पाने के लिए `X-Free-Fallback: false` भेजें या key सेटिंग में सशुल्क स्तर पर जाने का विकल्प बंद करें। शेष राशि न होने पर अतिरिक्त अनुरोध 429 लौटाते हैं।
जब कोई अनुरोध वाकई इस तरह डाउनग्रेड होता है, तो प्रतिक्रिया में x-bl-free-fallback: daily या x-bl-free-fallback: rpm हेडर आता है जो बताता है कि कौन-सी सीमा ट्रिगर हुई — इससे आप बिल देखने से पहले ही अनुरोध के समय स्विच का पता लगा सकते हैं। जो अनुरोध डाउनग्रेड नहीं हुआ, उसमें यह हेडर नहीं होगा।
# Return 429 instead of switching to paid routing
-H "X-Free-Fallback: false"संगठन प्रबंधन
BazaarLink organizations use a three-tier architecture: Organization → Team → Member. Credits are stored at the org level; each Team and member can have a monthly spend cap. API requests check member → team → org credits in sequence.
त्रि-स्तरीय बजट प्रणाली
On every API request, three budget layers are checked in order. Exceeding any layer returns HTTP 429:
- सदस्य का मासिक बजट (OrgMember.monthlyBudget)
- टीम मासिक बजट (टीम.मासिक बजट)
- Org क्रेडिट शेष (संगठन.क्रेडिट)
Usage रिपोर्ट
The Reports page in the org portal provides monthly spend analytics across four dimensions:
- अवलोकन: कुल खर्च, मार्जिन दर, दैनिक रुझान चार्ट
- टीम द्वारा: प्रति-टीम खर्च, शेयर%, मॉडल विश्लेषण, बजट उपयोग
- By मॉडल: प्रति-मॉडल खर्च, औसत मूल्य ($/1M टोकन)
- By सदस्य: प्रति सदस्य खर्च - केवल org_admin
सभी दृश्य प्रत्यक्ष एक्सेल संगतता के लिए BOM उपसर्ग के साथ CSV निर्यात का समर्थन करते हैं।
संगठन बनाएं और प्रबंधित करें
- Go to Settings → Organizations → Create New Organization
- Create Teams in the org portal (optional: cost center code and monthly budget)
- Invite members by email, assign a role and Team
- Issue API keys for members — usage is automatically tagged to the correct Team / member
- View the Reports page for monthly spend broken down by Team, Model, or Member
- टीम, मॉडल या सदस्य द्वारा विभाजित मासिक खर्च के लिए रिपोर्ट पृष्ठ देखें
सदस्य भूमिकाएँ
एक संगठन और क्या प्रबंधित कर सकता है?
सदस्यों और टीमों से परे, संगठन प्रबंधन क्षेत्र प्रदान करता है:
- API keys and model restrictions
- Content filtering before text reaches a model
- Allowed Models by organization, team, member, or key
- Monthly budgets and spend emergency brakes
- Reports and billing
- Change logs and security logs
सामग्री फ़िल्टरिंग
Organization-owned rules inspect text before it reaches a model. An org_admin can enable, edit, and test them in Settings.
- block: reject with HTTP 403
- redact: replace matches with [REDACTED]
- flag: send unchanged and record an audit event
- Built-in sensitive-data and prompt-injection templates plus custom keyword or regex rules
- Up to 100 safety-checked rules with a test preview
प्रबंधन API (v1)
The /v1/orgs/ endpoints accept both Bearer management key (sk-bl-...) and session cookie, enabling server-to-server org management without a browser session.
संगठन
/v1/orgsउन सभी organizations को list करें जिनसे caller belong करता है, role और joinedAt के साथ।
/v1/orgs/:orgIdOrg detail प्राप्त करें जिसमें team और member counts शामिल हैं।
curl https://api.bazaarlink.ai/v1/orgs \
-H "Authorization: Bearer sk-bl-YOUR_MANAGEMENT_KEY"टीम
/v1/orgs/:orgId/teamsTeams को member counts के साथ list करें, name के अनुसार ordered।
/v1/orgs/:orgId/teams/v1/orgs/:orgId/teams/:teamIdPartial update — केवल वे fields शामिल करें जिन्हें change करना है।
/v1/orgs/:orgId/teams/:teamId# Create a team
curl https://api.bazaarlink.ai/v1/orgs/{orgId}/teams \
-X POST \
-H "Authorization: Bearer sk-bl-YOUR_MANAGEMENT_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "Engineering", "costCenterCode": "ENG-001", "monthlyBudget": 500}'सदस्य
/v1/orgs/:orgId/membersसभी members को nested user (id/name/email) और team info के साथ list करें।
/v1/orgs/:orgId/members404 यदि ईमेल पते में कोई BazaarLink खाता नहीं है। 409 यदि पहले से ही सदस्य है। डिफ़ॉल्ट भूमिका: सदस्य. यदि लक्ष्य अंतिम org_admin है तो
/v1/orgs/:orgId/members/:memberIdrole, teamId, या monthlyBudget का Partial update।
/v1/orgs/:orgId/members/:memberId400 लौटाता है।
रिपोर्ट API
Query monthly spend data programmatically. Accessible to org_admin and billing_viewer. Accepts both web session and Bearer management key.
Query params: year (default current), month (default current, 1–12).
Error Response Reference
अनुमत मॉडल (Whitelist)
नियंत्रित करें कि आपके संगठन, टीमें या व्यक्तिगत सदस्य कौन-से मॉडल call कर सकते हैं। महंगे या unvetted मॉडल block करने, मॉडल standards लागू करने, या किसी टीम को एक ही provider तक सीमित करने के लिए उपयोगी।
यह कैसे काम करता है
- तीन स्वतंत्र layers — Organization, Team, Member — प्रत्येक की अपनी list होती है (database में String[])।
- जब तीनों layers खाली हों, तो हर मॉडल अनुमत है (default behavior)।
- जब एक या अधिक layers non-empty हों, तो effective list non-empty layers का intersection होती है — मॉडल को pass करने के लिए हर restricted layer पर अनुमत होना चाहिए।
- बदलाव कुछ ही seconds में प्रभावी होते हैं (60s in-memory + 5min Redis cache; update पर दोनों clear हो जाते हैं)।
पैटर्न प्रारूप
- Exact match — जैसे openai/gpt-4o (केवल यह exact मॉडल)।
- Provider wildcard — जैसे openai/* (openai/ prefix के अंतर्गत कोई भी मॉडल)।
- केवल lowercase। प्रति list अधिकतम 200 entries, प्रति entry 100 chars।
कहाँ manage करें
Org Portal → Allowed Models। org_admin org / team / member lists edit कर सकते हैं; team_admin अपनी टीम और उसके सदस्यों को edit कर सकते हैं।
Block होने पर Error response
किसी disallowed मॉडल को call करने पर HTTP 403 इस body के साथ return होता है:
प्रबंधन API
सभी endpoints Web Session या Bearer Management Key (sk-bl-...) accept करते हैं। PATCH पूरी list को replace करता है; clear करने के लिए [] pass करें।
सर्किट ब्रेकर (खर्च किल स्विच)
एक dual-window spend cap जो upstream cost spike होने पर आगे की requests को block कर देता है। runaway scripts, infinite loops, या stolen-key abuse को असली पैसे खर्च करने से पहले रोकने के लिए designed है।
यह कैसे काम करता है
- प्रत्येक scope के लिए Redis में दो fixed windows track होती हैं: 1-minute और 1-hour upstream cost (USD)।
- यदि किसी भी window का spend उसके threshold तक पहुँच जाए, तो उस scope की सभी आगामी requests reject कर दी जाती हैं जब तक window रीसेट नहीं हो जाती।
- Defaults: $5 / minute, $20 / hour. Default रूप से disabled है — enable करने के लिए khud चालू करना होगा।
- Counters Redis में TTL के साथ रहते हैं — recovery automatic है, org/team/member trips के लिए manual reset की ज़रूरत नहीं।
Scopes (member, team को override करता है; team, org को override करता है)
हर layer अपने thresholds set कर सकती है। Resolution order है member → team → org → platform default — प्रत्येक field (cbEnabled, cbMinuteUsd, cbHourlyUsd) के लिए पहला non-null value जीतता है।
- Org level — संगठन के अंतर्गत सभी keys पर लागू। Org Portal → Circuit Breaker में set करें।
- Team level — उस team को tagged सभी keys पर लागू। उन keys के लिए org को override करता है।
- Member level — केवल उस member को tagged keys पर लागू। team और org दोनों को override करता है।
ट्रिप व्यवहार
Trip होने पर requests fail fast हो जाती हैं (कोई upstream call नहीं किया जाता)। Response HTTP 429 इस body के साथ होता है:
ऑडिट लॉग
हर trip event और हर configuration change record होता है:
- Trip events — actions org.cb.tripped / team.cb.tripped / org_member.cb.tripped। प्रति scope+window प्रति घंटे एक entry तक deduplicated, ताकि सतत trip log में बाढ़ न ला दे।
- Config changes — actions org.cb.update / team.cb.update / org_member.cb.update। before/after values के साथ-साथ actor capture करते हैं।
प्रबंधन API
Org admins API के माध्यम से settings पढ़ और update कर सकते हैं। सभी endpoints Web Session या Bearer Management Key (sk-bl-...) accept करते हैं। PATCH body में fields का कोई भी subset भेजें; null किसी field को clear करता है और parent layer पर fall back करता है।
API कुंजी घूर्णन
API कुंजियों को नियमित रूप से बदलना सुरक्षा का अच्छा अभ्यास है। नई कुंजी बनाएँ, अपने इंटीग्रेशन को अपडेट करके जाँचें, फिर पुरानी कुंजी रद्द करें। इस प्रक्रिया में शून्य डाउनटाइम की गारंटी नहीं है।
रोटेशन चरण
- एक नई API कुंजी बनाएं
- नई कुंजी का उपयोग करने के लिए अपने अनुप्रयोग या पर्यावरण चर अपडेट करें
- सत्यापित करें कि नई कुंजी सही ढंग से काम कर रही है
- पुरानी कुंजी अक्षम करें या हटाएँ
एक्टिविटी निर्यात
वित्तीय ऑडिट, लागत विश्लेषण, या अनुपालन रिपोर्टिंग के लिए अपना पूरा API उपयोग इतिहास CSV के रूप में डाउनलोड करें।
CSV निर्यात
लॉग इन करें और लॉग्स पेज पर जाएं। अपना पूरा इतिहास CSV फ़ाइल के रूप में डाउनलोड करने के लिए ऊपरी-दाएँ कोने में निर्यात CSV बटन पर क्लिक करें। कोई API कॉल की आवश्यकता नहीं है।
CSV कॉलम
JSON उपयोग API
प्रोग्रामेटिक एक्सेस के लिए, अवधि, मॉडल या कुंजी द्वारा समूहीकृत क्वेरी एकत्रित आँकड़े:
Usage लेखांकन
Query API के माध्यम से विस्तृत उपयोग आँकड़े, जिसमें टोकन खपत, लागत विश्लेषण और अनुरोध इतिहास शामिल है।
रिस्पॉन्स फ़ील्ड संदर्भ
| Field | Type | Description |
|---|---|---|
| model | string | Model ID used (e.g., openai/gpt-4o) |
| provider | string | स्थिर BazaarLink मान: bazaarlink |
| prompt_tokens | number | Input tokens consumed |
| completion_tokens | number | Output tokens generated |
| total_tokens | number | Total tokens (prompt + completion) |
| reasoning_tokens | number | Reasoning tokens (for thinking models) |
| cached_tokens | number | Prompt tokens served from cache |
| cost | number | इस अनुरोध के लिए ग्राहक से ली गई USD राशि |
| duration_ms | number | End-to-end latency in milliseconds |
| throughput | number | Generation speed in tokens/sec |
| finish_reason | string | stop | length | content_filter | error |
| status | number | BazaarLink response status code |
| app_name | string | null | Application name (X-Title header) |
| key_name | string | API key name used for the request |
रिपोर्ट फीडबैक
समस्याओं, बगों या सुझावों की रिपोर्ट करके BazaarLink को बेहतर बनाने में हमारी सहायता करें। हम सभी फीडबैक चैनलों की सक्रिय रूप से निगरानी करते हैं।
रिपोर्ट कैसे करें
क्या शामिल करें
- Request ID (प्रतिक्रिया आईडी फ़ील्ड से)
- मॉडल का उपयोग किया गया और पैरामीटर भेजे गए
- अपेक्षित बनाम वास्तविक व्यवहार
- टाइमस्टैम्प और जारी करने की आवृत्ति
- त्रुटि संदेश या HTTP स्थिति कोड
सोशल डेटा (
:social)जब आपका सवाल किसी सोशल प्लेटफ़ॉर्म से जुड़ा हो, तो मॉडल नाम के अंत में
:socialजोड़ें। मॉडल के जवाब देने से पहले BazaarLink उस प्लेटफ़ॉर्म से मेल खाने वाली पोस्ट, प्रोफ़ाइल या टिप्पणियाँ लाकर संदर्भ सामग्री के रूप में देता है। यदि प्लेटफ़ॉर्म का डेटा समय पर नहीं मिल पाता, तो अनुरोध सामान्य वेब खोज पर फ़ॉलबैक हो जाता है, इसलिए आपको जवाब फिर भी मिलता है।उदाहरण
curl https://bazaarlink.ai/api/v1/chat/completions \ -H "Authorization: Bearer $BAZAARLINK_API_KEY" \ -H "Content-Type: application/json" \ --max-time 60 \ -d '{ "model": "gpt-5.4-mini:social", "messages": [{ "role": "user", "content": "GPT-6 के बारे में X पर हाल की पोस्ट" }] }'ध्यान रखने योग्य बातें
:socialअनुरोध में जवाब शुरू होने से पहले 20 से 40 सेकंड लग सकते हैं। 40 सेकंड के बाद वेब खोज पर फ़ॉलबैक हो जाता है। क्लाइंट टाइमआउट कम से कम 60 सेकंड रखें।:onlineतेज़ रहता है क्योंकि वह सामान्य वेब खोज है।:onlineजैसा ही खोज का दैनिक निःशुल्क कोटा इस्तेमाल करती हैं (बिना बैलेंस के प्रतिदिन 5, बैलेंस या सब्सक्रिप्शन के साथ 10, UTC 00:00 पर रीसेट)। कोटा पूरा होने के बाद हर क्वेरी का बिल Data API की मूल्य तालिका (देखेंGET /v1/data/catalog) के अनुसार बनता है, जो मॉडल के अपने टोकन शुल्क के अतिरिक्त है। वेब खोज पर फ़ॉलबैक होने वाली क्वेरी का बिल:onlineकी तरह बनता है।:socialकेवल कुछ सोशल प्लेटफ़ॉर्म पढ़ता है और सूची चालू सेटिंग पर निर्भर करती है; मौजूदा सूची/solutions/data-api#social-suffixपर है। जो प्लेटफ़ॉर्म Data API कैटलॉग में है पर उस सूची में नहीं, उसे:socialनहीं पढ़ता, इसलिए उसके बारे में या किसी प्लेटफ़ॉर्म के बिना पूछी गई क्वेरी का जवाब वेब खोज से दिया जाता है।POST /api/v1/chat/completions,/api/v1/messagesऔर/api/v1/responsesपर काम करता है, स्ट्रीमिंग और गैर-स्ट्रीमिंग दोनों में,:onlineजैसे ही उद्धरणों के साथ।:onlineऔर:socialको एक मॉडल नाम में एक साथ इस्तेमाल नहीं किया जा सकता (400invalid_web_search_options)।