PagsisimulaGabay
Lumipat mula OpenRouter patungong CheapTokens: base_url, key, model id
Palitan ang base_url, API key at model id sa OpenAI SDK (Python at JavaScript), magpadala ng unang request at tiyakin na gumana ito.

Sa pahinang ito
Ang iyong app ay tumatawag na sa OpenRouter sa pamamagitan ng OpenAI SDK, at gusto mong tumawag ito sa CheapTokens sa halip. Binabago mo ang tatlong value — base_url, ang API key at ang model id — at tinatanggal ang dalawang opsyonal na header. Ang natitirang code ay nananatiling gaya ng dati.
Nasa ibaba ang eksaktong mga linya para sa Python, JavaScript at curl, isang mabilis na paraan upang kumpirmahin na gumana ang paglipat, at isang talahanayan kung aling modelo ang angkop sa aling gawain. Kung hindi ka pa nagpadala ng request sa CheapTokens, ang unang gabay sa API request ay sumasaklaw sa account at key; ang docs ay may buong reference.
Ano ang aktwal na nagbabago#
Ang quickstart ng OpenRouter (sinuri noong 27 Oktubre 2026) ay nag-configure ng OpenAI client gamit ang base URL na https:/ at pinangalanan ang mga modelo bilang provider/. Ang CheapTokens ay nagsasalita ng parehong OpenAI Chat Completions format sa https:/. Kaya ang client class, chat. at ang paraan ng pagbasa mo ng sagot ay hindi gumagalaw.

Iyon ay isang palitan bawat linya:
- base URL —
https:/sa halip na ang OpenRouter address;/ api. cheaptokens. dev/ v1 - API key — isang key mula sa iyong CheapTokens account, binabasa mula sa environment variable;
- model id — ang buong CheapTokens id, halimbawa
deepseek-. Kunin ang mga id mula sa CheapTokens docs: iba't ibang provider ang nagpapangalan sa parehong modelo nang iba, at ang mga maiikling id mula sa mga price label ay hindi tinatanggap.ai/ DeepSeek- V4- Flash- 0731
At isang pagtanggal. Ang HTTP-Referer at X- headers ng OpenRouter ay opsyonal at nagpapakain lamang sa mga leaderboard ng OpenRouter. Alisin ang mga ito mula sa default_headers / defaultHeaders; hindi mo kailangan ang mga ito dito.
Ang code pagkatapos ng paglipat#
Parehong request, tatlong runtime. Piliin ang ginagamit ng iyong app.
Ang iyong code pagkatapos ng paglipat
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}'Isa pang bagay bago mo ito patakbuhin. Kung ang iyong request ay may mga field na para lamang sa OpenRouter — routing o fallback lists, provider preferences, ~alias model ids — ang mga iyon ay pag-aari ng OpenRouter. Panatilihin ang request sa mga standard na Chat Completions field: model, messages, temperature, max_tokens, stream.
Tiyakin na gumana ito#
Hindi sapat na patunay ang isang sagot. I-print ang tatlong bagay sa tabi nito: aling modelo ang sumagot, bakit ito tumigil, at magkano ang sinisingil nito sa tokens.
print(resp.model)
print(resp.choices[0].finish_reason)
print(resp.usage.prompt_tokens, resp.usage.completion_tokens)
Ang finish_reason ng stop ay nangangahulugang ang modelo ay natapos nang kusa. Ang length ay nangangahulugang pinutol ng max_tokens ang sagot. Ang usage ay nagpapakita ng input at output tokens nang hiwalay, at iyon ang dalawang numero na bumubuo sa iyong bill — pareho ng dalawang sinusubaybayan mo sa OpenRouter.
Subukan mo mismoSubukan: ano ang sinasabi ng finish_reason kung itinakda mo ang max_tokens sa 1?Ipakita ang sagot
Sinasabi nito na length — ang sagot ay pinutol ng max_tokens. Magandang pagsubok na hinahawakan ng iyong code ang isang putol na sagot.
Aling modelo ang pumapalit sa ano#
Piliin ang modelo ayon sa gawain, hindi ayon sa pangalan na ginamit mo sa OpenRouter. Ang mga katotohanan sa ibaba ay mula sa listahan ng presyo ng CheapTokens na sinuri noong 27 Oktubre 2026; isang balanse ang sumasaklaw sa lahat ng tatlong modelo at ang presyo ay hindi nagbabago sa oras ng araw.
I-scroll ang table pakanan →
| Modelo | model id |
Konteksto | Max na sagot |
|---|---|---|---|
| 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 |
Hindi sigurado kung aling row ang sa iyo? Magsimula sa ginagawa ng app:
Piliin ang iyong kaso
Ano ang kadalasang ginagawa ng iyong app?
Pumili ng opsyon upang makita ang sagot
Maikli, madalas na request — classification, extraction, support replies
Subukan ang zai-: 390K context, sagot hanggang 8,192 tokens, at mas mura ito kaysa OpenRouter sa kabuuan, input at output na pinagsama.
Mahahabang sagot, code, agent loops
Subukan ang deepseek-: sagot hanggang 32,768 tokens, 380K context, isang presyo sa anumang oras ng araw.
Tuloy-tuloy na workload na binabayaran mo ng mataas na OpenRouter rate
Subukan ang MiniMaxAI/: 180K context, sagot hanggang 8,192 tokens, at sa kabuuan ay lumalabas na mas mura kaysa OpenRouter.
Magkano ang parehong traffic#
Sabihin nating ang iyong bot ay nagpapadala ng 1,000 request, bawat isa ay may humigit-kumulang 500 input tokens at 300 output tokens. Iyon ay isang assumption — palitan ng sarili mong numero mula sa usage. Ang talahanayan sa ibaba ay live: ang aming mga presyo at ang OpenRouter column ay mula sa kasalukuyang listahan ng presyo, input at output na pinagsama.
| Modelo | Input $/1M | Output $/1M | Bawat kahilingan | 1,000 mga kahilingan | OpenRouter, 1,000 mga kahilingan |
|---|---|---|---|---|---|
| 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 input at 300 output na token bawat kahilingan. Ang mga presyo kada 1M token ay kasalukuyan at nagbabago kasabay ng aming mga taripa; ang column ng OpenRouter ay nagpapakita ng reference na presyo para sa parehong workload.
Sa DeepSeek-V4-Flash ang 1,000 request na iyon ay umabot sa $0.0375. Ang buong presyo ay nasa pricing page; ang ideya ng sinisingil sa iyo ay nasa input vs output tokens.
Kung hindi ito gumana#
Pagkatapos ng paglipat, tatlong error ang sumasaklaw sa karamihan ng problema. Itugma ang mensahe sa sanhi:
Itugma ang mga pares
Itugma ang bawat sintomas sa sanhi nito
I-tap ang isang item sa kaliwa, pagkatapos ang pares nito
- 401 UnauthorizedNawawala ang key, mali ang pagkakasulat, o OpenRouter pa rin ang gamit
- 404 Not FoundMali ang base URL path o ang model id ay hindi buong CheapTokens id
- Putol ang sagot sa gitna ng pangungusapMas mababa ang max_tokens kaysa kailangan ng sagot; sinasabi ng finish_reason na length
Ang artikulo sa 401 at 404 troubleshooting ay dumadaan sa bawat isa kasama ang eksaktong mga mensahe, at ang ano ang base_url ay nagpapaliwanag kung bakit isang maling slash ang sumisira sa path.
Bago mo i-ship#
Listahan ng dapat gawin
Checklist ng paglipat



