Gemini API: BetterToken से टेक्स्ट और वीडियो का उपयोग
BetterToken पर OpenAI Chat Completions या Gemini के नेटिव API से Gemini कॉल करें। प्रमाणीकरण, SDK, स्ट्रीमिंग, टूल, वीडियो इनपुट और त्रुटि समाधान के उदाहरण।
अपनी BetterToken API Key से gemini-3.8-flash और gemini-4-argon कॉल करें। दोनों इंटरफ़ेस टेक्स्ट, वीडियो, स्ट्रीमिंग और टूल कॉल के साथ उनके परिणाम वापस भेजने का समर्थन करते हैं।
इंटरफ़ेस चुनें
| इंटरफ़ेस | Base URL | कब उपयोग करें |
|---|---|---|
| OpenAI-संगत | https://bettertoken.ai/v1 | आपका ऐप Chat Completions या OpenAI SDK का उपयोग करता है। |
| Gemini नेटिव | https://bettertoken.ai | आपका ऐप Gemini के अनुरोध फ़ील्ड या Google GenAI SDK का उपयोग करता है। |
सभी उदाहरण gemini-3.8-flash का उपयोग करते हैं। दूसरा मॉडल उपयोग करने के लिए इसे gemini-4-argon से बदलें। मौजूदा कीमतें मॉडल प्लाज़ा में देखें। इमेज बनाने के लिए अलग Nano Banana गाइड देखें।
प्रमाणीकरण
BetterToken API Key बनाएँ, फिर नीचे YOUR_API_KEY बदलें। इसे उसी टर्मिनल में चलाएँ जिसमें उदाहरण चलाएँगे।
export BETTERTOKEN_API_KEY="YOUR_API_KEY"| इंटरफ़ेस | प्रमाणीकरण |
|---|---|
| OpenAI-संगत | Authorization: Bearer $BETTERTOKEN_API_KEY |
| Gemini नेटिव | x-goog-api-key: $BETTERTOKEN_API_KEY (अनुशंसित), या Authorization: Bearer $BETTERTOKEN_API_KEY |
Google AI Studio की कुंजी यहाँ काम नहीं करती। अपनी BetterToken API Key उपयोग करें। नेटिव इंटरफ़ेस ?key= भी स्वीकार करता है, लेकिन इससे बचें क्योंकि URL लॉग में दर्ज हो सकते हैं।
OpenAI-संगत इंटरफ़ेस
अनुरोध POST https://bettertoken.ai/v1/chat/completions पर भेजें। SDK में Base URL https://bettertoken.ai/v1 रखें; SDK स्वयं /chat/completions जोड़ता है।
curl: सामान्य अनुरोध
curl --fail-with-body "https://bettertoken.ai/v1/chat/completions" \ -H "Authorization: Bearer $BETTERTOKEN_API_KEY" \ -H "Content-Type: application/json" \ --data '{ "model": "gemini-3.8-flash", "messages": [{"role": "user", "content": "Explain why the sky is blue."}] }'टेक्स्ट choices[0].message.content से पढ़ें। curl से स्ट्रीमिंग के लिए JSON बॉडी में "stream": true जोड़ें और curl --no-buffer उपयोग करें।
Python: सामान्य अनुरोध और स्ट्रीमिंग
अपने Python परिवेश में OpenAI SDK इंस्टॉल करें, फिर Python उदाहरण चलाएँ।
python -m pip install openaiस्ट्रीमिंग अनुरोध stream=True उपयोग करता है। हर खंड के choices[0].delta.content से टेक्स्ट पढ़ें।
import osfrom openai import OpenAI
client = OpenAI( api_key=os.environ["BETTERTOKEN_API_KEY"], base_url="https://bettertoken.ai/v1",)messages = [{"role": "user", "content": "Explain why the sky is blue."}]
response = client.chat.completions.create( model="gemini-3.8-flash", messages=messages,)print(response.choices[0].message.content)
stream = client.chat.completions.create( model="gemini-3.8-flash", messages=messages, stream=True,)for chunk in stream: if chunk.choices: print(chunk.choices[0].delta.content or "", end="", flush=True)print()टूल कॉल
tools में type: "function", फ़ंक्शन का name और parameters में JSON Schema देकर फ़ंक्शन घोषित करें। assistant से tool_calls मिलने पर अपने ऐप में अनुरोधित फ़ंक्शन चलाएँ।
tool_calls सहित assistant का पूरा संदेश बातचीत में रखें। हर परिणाम के लिए role: "tool" संदेश जोड़ें। tool_call_id में संबंधित कॉल ID और content में परिणाम रखें। अपडेट किए गए messages और tools फिर से Chat Completions को भेजें।
इस इंटरफ़ेस पर इमेज इनपुट के लिए अन्य मॉडल की तरह HTTP URL या data URL वाला image_url कंटेंट भाग उपयोग करें।
Gemini नेटिव इंटरफ़ेस
Google GenAI SDK के लिए Base URL https://bettertoken.ai रखें। /v1beta न जोड़ें: SDK इसे जोड़ता है। सीधे HTTP अनुरोधों के लिए नीचे दिए पूरे पथ उपयोग करें।
curl: generateContent
curl --fail-with-body \ "https://bettertoken.ai/v1beta/models/gemini-3.8-flash:generateContent" \ -H "x-goog-api-key: $BETTERTOKEN_API_KEY" \ -H "Content-Type: application/json" \ --data '{ "contents": [{"role": "user", "parts": [{"text": "Explain why the sky is blue."}]}] }'टेक्स्ट candidates[].content.parts[].text से पढ़ें।
curl: स्ट्रीमिंग
streamGenerateContent?alt=sse से Server-Sent Events (SSE) मिलते हैं। --no-buffer इवेंट आते ही दिखाता है।
curl --fail-with-body --no-buffer \ "https://bettertoken.ai/v1beta/models/gemini-3.8-flash:streamGenerateContent?alt=sse" \ -H "x-goog-api-key: $BETTERTOKEN_API_KEY" \ -H "Content-Type: application/json" \ --data '{ "contents": [{"role": "user", "parts": [{"text": "Explain why the sky is blue."}]}] }'Python: Google GenAI SDK
अपने Python परिवेश में google-genai इंस्टॉल करें। उदाहरण पहले सामान्य अनुरोध और फिर स्ट्रीमिंग अनुरोध भेजता है।
python -m pip install google-genaiimport osfrom google import genaifrom google.genai import types
client = genai.Client( api_key=os.environ["BETTERTOKEN_API_KEY"], http_options=types.HttpOptions(base_url="https://bettertoken.ai"),)
response = client.models.generate_content( model="gemini-3.8-flash", contents="Explain why the sky is blue.",)print(response.text)
for chunk in client.models.generate_content_stream( model="gemini-3.8-flash", contents="Explain why the sky is blue.",): print(chunk.text or "", end="", flush=True)print()Node.js: Google GenAI SDK
@google/genai इंस्टॉल करें। JavaScript उदाहरण को gemini.mjs में सहेजें, फिर node gemini.mjs चलाएँ।
npm install @google/genaiimport { GoogleGenAI } from "@google/genai";
const client = new GoogleGenAI({ apiKey: process.env.BETTERTOKEN_API_KEY, httpOptions: { baseUrl: "https://bettertoken.ai" },});
const response = await client.models.generateContent({ model: "gemini-3.8-flash", contents: "Explain why the sky is blue.",});console.log(response.text);
const stream = await client.models.generateContentStream({ model: "gemini-3.8-flash", contents: "Explain why the sky is blue.",});for await (const chunk of stream) { process.stdout.write(chunk.text ?? "");}console.log();टूल कॉल
tools[].functionDeclarations में फ़ंक्शन घोषित करें। मॉडल के उत्तर के भागों में functionCall से फ़ंक्शन और आर्ग्युमेंट पढ़ें, फिर अपने ऐप में फ़ंक्शन चलाएँ।
मॉडल का पूरा कंटेंट contents में रखें। role: "user" प्रविष्टि जोड़ें, जिसके parts में functionResponse हो। इसमें संबंधित फ़ंक्शन का name और परिणाम वाला response ऑब्जेक्ट रखें। अपडेट किए गए contents और tools फिर से generateContent को भेजें।
मॉडल सूची
मॉडल की सूची के लिए GET https://bettertoken.ai/v1beta/models उपयोग करें।
curl --fail-with-body "https://bettertoken.ai/v1beta/models" \ -H "x-goog-api-key: $BETTERTOKEN_API_KEY"वीडियो इनपुट
कोई भी उदाहरण भेजने से पहले REPLACE_WITH_VIDEO_BASE64 को अपने वीडियो के एक पंक्ति वाले base64 से बदलें। उदाहरण MP4 क्लिप उपयोग करते हैं। दूसरे फ़ॉर्मैट के लिए MIME प्रकार और फ़ाइल नाम भी बदलें।
स्वीकृत MIME प्रकार: video/mp4, video/mpeg, video/mpg, video/mov, video/avi, video/wmv, video/flv, video/mpegps।
वीडियो को अनुरोध की बॉडी में इनलाइन base64 के रूप में भेजें। Base64 से आकार फ़ाइल की तुलना में लगभग एक तिहाई बढ़ता है। छोटी या संपीड़ित क्लिप उपयोग करें; बहुत बड़े अनुरोध HTTP 413 लौटा सकते हैं।
OpenAI-संगत file.file_data में data:video/mp4;base64, प्रीफ़िक्स शामिल होता है। नेटिव inlineData.data में इस प्रीफ़िक्स के बिना केवल base64 रखें।
Chat Completions: इनलाइन फ़ाइल
curl --fail-with-body "https://bettertoken.ai/v1/chat/completions" \ -H "Authorization: Bearer $BETTERTOKEN_API_KEY" \ -H "Content-Type: application/json" \ --data-binary @- <<'JSON'{ "model": "gemini-3.8-flash", "messages": [{ "role": "user", "content": [ {"type": "file", "file": { "filename": "clip.mp4", "file_data": "data:video/mp4;base64,REPLACE_WITH_VIDEO_BASE64" }}, {"type": "text", "text": "Describe what happens in this video."} ] }]}JSONGemini नेटिव: inlineData
curl --fail-with-body \ "https://bettertoken.ai/v1beta/models/gemini-3.8-flash:generateContent" \ -H "x-goog-api-key: $BETTERTOKEN_API_KEY" \ -H "Content-Type: application/json" \ --data-binary @- <<'JSON'{ "contents": [{ "role": "user", "parts": [ {"inlineData": {"mimeType": "video/mp4", "data": "REPLACE_WITH_VIDEO_BASE64"}}, {"text": "Describe what happens in this video."} ] }]}JSONउपयोग और बिलिंग
Chat Completions: तर्क/सोच के टोकन completion_tokens में शामिल हैं और आउटपुट के रूप में बिल किए जाते हैं।
Gemini नेटिव: usageMetadata.thoughtsTokenCount का बिल आउटपुट के रूप में बनता है। cachedContentTokenCount कैश किए गए इनपुट को दिखाता है। वीडियो इनपुट टोकन में गिना जाता है; promptTokensDetails इसे मोडैलिटी VIDEO से पहचानता है।
सीमाएँ
POST /v1/responsesइन Gemini मॉडल का समर्थन नहीं करता। Codex CLI और केवल Responses API उपयोग करने वाले अन्य क्लाइंट इन्हें कॉल नहीं कर सकते। Chat Completions या नेटिव इंटरफ़ेस उपयोग करें।file_idसंदर्भ औरfileData.fileUriवाले Google File API अपलोड समर्थित नहीं हैं। वीडियो इनलाइन base64 में भेजें।
त्रुटि समाधान
| त्रुटि | क्या करें |
|---|---|
401 | BetterToken API Key और प्रमाणीकरण हेडर जाँचें। गायब कुंजी जोड़ें या गलत कुंजी बदलें। |
413 | अनुरोध की बॉडी बहुत बड़ी है। वीडियो छोटा या संपीड़ित करें। |
429 | रेट लिमिट या अपस्ट्रीम क्षमता की अस्थायी कमी। बढ़ते अंतराल के साथ दोबारा कोशिश करें। |
503 और कोड model_not_found | अभी क्षमता उपलब्ध नहीं है। बाद में दोबारा कोशिश करें। |
अन्य त्रुटियों के लिए API त्रुटियाँ देखें।

