شروعاتگائیڈ
OpenRouter سے CheapTokens پر سوئچ کریں: base_url، key، model id
OpenAI SDK (Python اور JavaScript) میں base_url، API key اور model id تبدیل کریں، پہلی درخواست بھیجیں اور تصدیق کریں کہ یہ کام کر گئی۔

اس صفحہ پر
آپ کی ایپ پہلے ہی OpenAI SDK کے ذریعے OpenRouter کو کال کرتی ہے، اور آپ چاہتے ہیں کہ یہ CheapTokens کو کال کرے۔ آپ تین ویلیوز بدلتے ہیں — base_url، API key اور model id — اور دو اختیاری ہیڈرز حذف کر دیتے ہیں۔ باقی کوڈ ویسا ہی رہتا ہے۔
نیچے Python، JavaScript اور curl کے لیے عین وہی لائنیں ہیں، یہ تصدیق کرنے کا ایک تیز طریقہ کہ سوئچ کام کر گیا، اور ایک ٹیبل کہ کون سا ماڈل کس کام کے لیے موزوں ہے۔ اگر آپ نے کبھی CheapTokens کو درخواست نہیں بھیجی، تو پہلی API درخواست گائیڈ اکاؤنٹ اور key کا احاطہ کرتی ہے؛ docs میں مکمل حوالہ موجود ہے۔
اصل میں کیا بدلتا ہے#
OpenRouter کا quickstart (27 اکتوبر 2026 کو چیک کیا گیا) OpenAI کلائنٹ کو base URL https:/ کے ساتھ کنفیگر کرتا ہے اور ماڈلز کو provider/ کے طور پر نام دیتا ہے۔ CheapTokens https:/ پر وہی OpenAI Chat Completions فارمیٹ بولتا ہے۔ لہٰذا کلائنٹ کلاس، chat. اور جواب پڑھنے کا طریقہ نہیں بدلتا۔

یہ فی لائن ایک تبدیلی ہے:
- base URL — OpenRouter کے پتے کی بجائے
https:/؛/ api. cheaptokens. dev/ v1 - API key — آپ کے CheapTokens اکاؤنٹ کی key، جو environment variable سے پڑھی جاتی ہے؛
- model id — مکمل CheapTokens id، مثلاً
deepseek-۔ ids CheapTokens docs سے لیں: مختلف providers ایک ہی ماڈل کو مختلف نام دیتے ہیں، اور قیمت کے لیبلز سے مختصر ids قبول نہیں کیے جاتے۔ai/ DeepSeek- V4- Flash- 0731
اور ایک حذف۔ OpenRouter کے HTTP-Referer اور X- ہیڈرز اختیاری ہیں اور صرف OpenRouter کے leaderboards کو فیڈ کرتے ہیں۔ انہیں default_headers / defaultHeaders سے ہٹا دیں؛ یہاں آپ کو ان کی ضرورت نہیں۔
سوئچ کے بعد کوڈ#
وہی درخواست، تین runtimes۔ وہ چنیں جو آپ کی ایپ استعمال کرتی ہے۔
سوئچ کے بعد آپ کا کوڈ
Python
import os
from openai import OpenAI
client = OpenAI(
base_url='https://api.cheaptokens.dev/v1',
api_key=os.environ['CHEAPTOKENS_API_KEY'],
)
resp = client.chat.completions.create(
model='deepseek-ai/DeepSeek-V4-Flash-0731',
messages=[{'role': 'user', 'content': 'Reply with one word: ready'}],
max_tokens=20,
)
print(resp.choices[0].message.content)JavaScript
import OpenAI from 'openai';
const client = new OpenAI({
baseURL: 'https://api.cheaptokens.dev/v1',
apiKey: process.env.CHEAPTOKENS_API_KEY,
});
const resp = await client.chat.completions.create({
model: 'deepseek-ai/DeepSeek-V4-Flash-0731',
messages: [{ role: 'user', content: 'Reply with one word: ready' }],
max_tokens: 20,
});
console.log(resp.choices[0].message.content);curl
curl https://api.cheaptokens.dev/v1/chat/completions \
-H "Authorization: Bearer $CHEAPTOKENS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "deepseek-ai/DeepSeek-V4-Flash-0731", "messages": [{"role": "user", "content": "Reply with one word: ready"}], "max_tokens": 20}'چلانے سے پہلے ایک اور بات۔ اگر آپ کی درخواست میں صرف OpenRouter کے فیلڈز ہیں — routing یا fallback lists، provider preferences، ~alias model ids — تو وہ OpenRouter کے ہیں۔ درخواست کو معیاری Chat Completions فیلڈز تک محدود رکھیں: model، messages، temperature، max_tokens، stream۔
تصدیق کریں کہ یہ کام کر گیا#
جواب کافی ثبوت نہیں ہے۔ اس کے ساتھ تین چیزیں پرنٹ کریں: کس ماڈل نے جواب دیا، کیوں رکا، اور اس نے کتنے tokens بل کیے۔
print(resp.model)
print(resp.choices[0].finish_reason)
print(resp.usage.prompt_tokens, resp.usage.completion_tokens)
stop کا finish_reason کا مطلب ہے کہ ماڈل خود مکمل ہوا۔ length کا مطلب ہے کہ max_tokens نے جواب کاٹ دیا۔ usage input اور output tokens الگ الگ دکھاتا ہے، اور یہی وہ دو نمبر ہیں جن سے آپ کا بل بنتا ہے — وہی دو جو آپ OpenRouter پر ٹریک کر رہے تھے۔
خود آزمائیںآزمائیں: اگر آپ max_tokens کو 1 پر سیٹ کریں تو finish_reason کیا کہتا ہے؟جواب دکھائیں
یہ length کہتا ہے — جواب max_tokens نے کاٹ دیا۔ یہ اچھا ٹیسٹ ہے کہ آپ کا کوڈ truncated جواب کو سنبھالتا ہے۔
کون سا ماڈل کس کی جگہ لیتا ہے#
ماڈل کو کام کے لحاظ سے چنیں، نہ کہ اس نام کے لحاظ سے جو آپ OpenRouter پر استعمال کرتے تھے۔ نیچے دیے گئے حقائق CheapTokens کی قیمت کی فہرست سے ہیں جو 27 اکتوبر 2026 کو چیک کی گئی؛ ایک بیلنس تینوں ماڈلز کو کور کرتا ہے اور قیمت دن کے وقت کے ساتھ نہیں بدلتی۔
ٹیبل کو دائیں طرف اسکرول کریں →
| ماڈل | model id |
Context | زیادہ سے زیادہ جواب |
|---|---|---|---|
| DeepSeek-V4-Flash | deepseek- |
380K | 32,768 tokens |
| GLM-5.3-Flash | zai- |
390K | 8,192 tokens |
| MiniMax-M2.7 | MiniMaxAI/ |
180K | 8,192 tokens |
یقین نہیں کہ کون سی قطار آپ کی ہے؟ اس سے شروع کریں کہ ایپ کیا کرتی ہے:
اپنا کیس منتخب کریں
آپ کی ایپ زیادہ تر کیا کرتی ہے؟
جواب دیکھنے کے لیے ایک آپشن منتخب کریں
مختصر، بار بار آنے والی درخواستیں — classification، extraction، support replies
zai- آزمائیں: 390K context، 8,192 tokens تک جوابات، اور مجموعی طور پر، input اور output ملا کر، یہ OpenRouter سے سستا ہے۔
لمبے جوابات، کوڈ، agent loops
deepseek- آزمائیں: 32,768 tokens تک جوابات، 380K context، دن کے کسی بھی وقت ایک ہی قیمت۔
ایک مستقل workload جس پر آپ فی الحال OpenRouter کی اونچی قیمت ادا کرتے ہیں
MiniMaxAI/ آزمائیں: 180K context، 8,192 tokens تک جوابات، اور مجموعی طور پر یہ OpenRouter سے سستا پڑتا ہے۔
وہی ٹریفک کتنی لاگت آتی ہے#
فرض کریں آپ کا بوٹ 1,000 درخواستیں بھیجتا ہے، ہر ایک میں تقریباً 500 input tokens اور 300 output tokens۔ یہ ایک مفروضہ ہے — usage سے اپنے نمبر ڈالیں۔ نیچے دیا گیا ٹیبل لائیو ہے: ہماری قیمتیں اور OpenRouter کا کالم موجودہ قیمت کی فہرست سے ہیں، input اور output ملا کر۔
| ماڈل | ان پٹ $/1M | آؤٹ پٹ $/1M | فی درخواست | 1,000 درخواستیں | OpenRouter، 1,000 درخواستیں |
|---|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.000022 | $0.022 | $0.0434 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.000038 | $0.0375 | $0.0708 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.00007 | $0.07 | $0.51 |
فی درخواست 500 ان پٹ اور 300 آؤٹ پٹ ٹوکنز۔ فی 1M ٹوکنز کی قیمتیں موجودہ ہیں اور ہمارے ٹیرف کے ساتھ تبدیل ہوتی ہیں؛ OpenRouter کالم اسی ورک لوڈ کے لیے حوالہ جاتی قیمتیں دکھاتا ہے۔
DeepSeek-V4-Flash پر وہ 1,000 درخواستیں $0.0375 بنتی ہیں۔ مکمل قیمتیں pricing page پر ہیں؛ آپ سے کس چیز کا بل لیا جاتا ہے اس کا تصور input vs output tokens میں ہے۔
اگر یہ کام نہ کرے#
سوئچ کے بعد، تین errors زیادہ تر مشکلات کا احاطہ کرتے ہیں۔ پیغام کو وجہ سے ملائیں:
جوڑے ملائیں
ہر علامت کو اس کی وجہ سے ملائیں
بائیں طرف کسی آئٹم پر ٹیپ کریں، پھر اس کا جوڑا
- 401 Unauthorizedkey غائب ہے، غلط ٹائپ ہوئی ہے، یا اب بھی OpenRouter والی ہے
- 404 Not Foundbase URL کا path غلط ہے یا model id مکمل CheapTokens id نہیں ہے
- جواب درمیان میں کٹ گیاmax_tokens جواب کی ضرورت سے کم ہے؛ finish_reason length کہتا ہے
401 اور 404 troubleshooting مضمون ہر ایک کو عین پیغامات کے ساتھ بیان کرتا ہے، اور base_url کیا ہے بتاتا ہے کہ ایک غلط slash path کیوں توڑ دیتا ہے۔
شپ کرنے سے پہلے#
چیک لسٹ
سوئچ چیک لسٹ



