TokenMaster APITokenMaster APITokenMaster APITokenMaster APITokenMaster API
一个 OpenAI 兼容接口,调用海外与国产主流大模型。换掉 base URL 和 API Key,现有代码、SDK 和客户端工具就能直接使用。One OpenAI-compatible API for leading global and Chinese models. Swap the base URL and API key and your existing code, SDKs and tools keep working.Satu API yang kompatibel dengan OpenAI untuk model-model global dan Tiongkok terkemuka. Ganti base URL dan API key, dan kode, SDK, serta tools Anda yang sudah ada tetap berfungsi.글로벌 및 중국 주요 모델을 하나의 OpenAI 호환 API로 제공합니다. base URL과 API 키만 바꾸면 기존 코드, SDK, 도구를 그대로 사용할 수 있습니다.世界と中国の主要モデルに対応した、OpenAI 互換の単一 API です。ベース URL と API キーを差し替えるだけで、既存のコード、SDK、ツールがそのまま動作します。
Chat Completions 协议,支持流式、工具调用、结构化输出、图像输入。Chat Completions protocol with streaming, tools, structured output and images.Protokol Chat Completions dengan streaming, tools, output terstruktur, dan gambar.스트리밍, 도구, 구조화된 출력, 이미지를 지원하는 Chat Completions 프로토콜.Chat Completions プロトコルに対応。ストリーミング、ツール、構造化出力、画像入力をサポートします。
改 model 参数即可在 GPT、Claude、Gemini、DeepSeek、Qwen、Kimi 等之间切换。Change model to switch between GPT, Claude, Gemini, DeepSeek, Qwen, Kimi and more.Ubah model untuk beralih antara GPT, Claude, Gemini, DeepSeek, Qwen, Kimi, dan lainnya.model만 바꾸면 GPT, Claude, Gemini, DeepSeek, Qwen, Kimi 등을 전환할 수 있습니다.model を変更するだけで、GPT、Claude、Gemini、DeepSeek、Qwen、Kimi などを切り替えられます。
每次请求实时扣费,余额不足自动拦截,不会产生欠费。Charged in real time per request; requests stop before your balance runs out.Ditagih secara real-time per permintaan; permintaan dihentikan sebelum saldo Anda habis.요청마다 실시간으로 과금되며, 잔액이 소진되기 전에 요청이 중단됩니다.リクエストごとにリアルタイムで課金されます。残高が尽きる前にリクエストは停止します。
快速开始QuickstartMulai cepat빠른 시작クイックスタート
三步发出第一个请求,全程约 3 分钟。Three steps, about three minutes.Tiga langkah, sekitar tiga menit.3단계, 약 3분이면 됩니다.3ステップ、約3分で完了します。
注册并充值Sign up & top upDaftar & isi saldo가입 및 충전登録とチャージ
在控制台注册,充值最低 $10。Create an account in the console and add at least $10.Buat akun di konsol dan isi saldo minimal $10.콘솔에서 계정을 만들고 $10 이상 충전하세요.コンソールでアカウントを作成し、$10 以上をチャージします。
创建 API KeyCreate an API keyBuat API keyAPI 키 생성API キーを作成
控制台 → API Keys → 创建新 Key。Key 只显示一次,请立即保存。Console → API keys → Create key. It is shown once — save it right away.Konsol → API key → Buat key. Key hanya ditampilkan sekali — segera simpan.콘솔 → API 키 → 키 생성. 키는 한 번만 표시되니 바로 저장하세요.コンソール → API キー → キーを作成。キーは一度しか表示されないため、すぐに保存してください。
发送请求Send a requestKirim permintaan요청 보내기リクエストを送信
把 Key 存为环境变量,用下面任意一种方式调用。Store the key in an environment variable and call the API.Simpan key di variabel lingkungan (environment variable) dan panggil API.키를 환경 변수에 저장하고 API를 호출하세요.キーを環境変数に保存し、API を呼び出します。
设置环境变量Set the environment variableAtur variabel lingkungan환경 변수 설정環境変数を設定
export TOKENMASTER_API_KEY="tm-your-key"
$env:TOKENMASTER_API_KEY = "tm-your-key"
发送第一个请求First requestPermintaan pertama첫 요청最初のリクエスト
curl {{BASE}}/v1/chat/completions \
-H "Authorization: Bearer $TOKENMASTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-6-luna",
"messages": [{"role": "user", "content": "Introduce yourself in one sentence"}]
}'
# pip install openai
import os
from openai import OpenAI
client = OpenAI(base_url="{{BASE}}/v1", api_key=os.environ["TOKENMASTER_API_KEY"])
resp = client.chat.completions.create(
model="openai/gpt-6-luna",
messages=[{"role": "user", "content": "Introduce yourself in one sentence"}],
)
print(resp.choices[0].message.content)
print(resp.usage)
// npm install openai
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "{{BASE}}/v1", apiKey: process.env.TOKENMASTER_API_KEY });
const resp = await client.chat.completions.create({
model: "openai/gpt-6-luna",
messages: [{ role: "user", content: "Introduce yourself in one sentence" }],
});
console.log(resp.choices[0].message.content, resp.usage);
model,例如 anthropic/claude-sonnet-5.5、deepseek/deepseek-v4-pro、moonshotai/kimi-k2.6。完整列表见模型广场或 GET /v1/models。To switch models, change only model — e.g. anthropic/claude-sonnet-5.5, deepseek/deepseek-v4-pro, moonshotai/kimi-k2.6. See the catalog or GET /v1/models.Untuk beralih model, cukup ubah model — mis. anthropic/claude-sonnet-5.5, deepseek/deepseek-v4-pro, moonshotai/kimi-k2.6. Lihat katalog atau GET /v1/models.모델을 바꾸려면 model만 변경하세요 — 예: anthropic/claude-sonnet-5.5, deepseek/deepseek-v4-pro, moonshotai/kimi-k2.6. 카탈로그 또는 GET /v1/models를 참고하세요.モデルを切り替えるには model だけを変更します(例:anthropic/claude-sonnet-5.5、deepseek/deepseek-v4-pro、moonshotai/kimi-k2.6)。カタログまたは GET /v1/models を参照してください。身份认证AuthenticationAutentikasi인증認証
所有 /v1/* 请求都在 Authorization 请求头里携带 API Key:Every /v1/* request sends your API key in the Authorization header:Setiap permintaan /v1/* mengirimkan API key Anda di header Authorization:모든 /v1/* 요청은 Authorization 헤더에 API 키를 담아 보냅니다:すべての /v1/* リクエストでは、Authorization ヘッダーで API キーを送信します:
Authorization: Bearer tm-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- Key 以
tm-开头,创建时只显示一次;平台只保存哈希,无法找回,丢失请新建。Keys start withtm-and are shown once at creation. We store only a hash, so a lost key cannot be recovered — create a new one.Key diawali dengantm-dan hanya ditampilkan sekali saat dibuat. Kami hanya menyimpan hash-nya, sehingga key yang hilang tidak dapat dipulihkan — buat key baru.키는tm-로 시작하며 생성 시 한 번만 표시됩니다. 해시만 저장하므로 분실한 키는 복구할 수 없습니다. 새 키를 생성하세요.キーはtm-で始まり、作成時に一度だけ表示されます。保存しているのはハッシュのみのため、紛失したキーは復元できません。新しいキーを作成してください。 - 同一账户可创建多个 Key(例如按环境或项目区分),共享同一个余额;用量明细可按 Key 区分。One account can hold many keys (per environment or project). They share one balance.Satu akun dapat memiliki banyak key (per environment atau proyek). Semuanya berbagi satu saldo.하나의 계정에 여러 키(환경 또는 프로젝트별)를 둘 수 있으며, 모든 키가 하나의 잔액을 공유합니다.1つのアカウントで複数のキー(環境やプロジェクトごと)を保持できます。残高はすべてのキーで共有されます。
- 发现泄露立即在控制台「吊销」,吊销后立刻失效。Revoke a leaked key in the console; it stops working immediately.Cabut key yang bocor di konsol; key tersebut langsung berhenti berfungsi.유출된 키는 콘솔에서 폐기하세요. 즉시 사용이 중지됩니다.漏洩したキーはコンソールで失効させてください。直ちに使用できなくなります。
SDK 与工具接入SDKs & toolsSDK & toolsSDK 및 도구SDK とツール
任何支持「OpenAI 兼容接口」的 SDK、框架或客户端都可以接入,统一填写三项:Anything that supports an "OpenAI-compatible" endpoint works. Configure three values:Semua yang mendukung endpoint "OpenAI-compatible" dapat digunakan. Konfigurasikan tiga nilai:"OpenAI 호환" 엔드포인트를 지원하는 도구라면 모두 사용할 수 있습니다. 다음 세 가지 값을 설정하세요:「OpenAI 互換」エンドポイントに対応したものであれば何でも使えます。設定するのは次の3項目です:
| 配置项SettingPengaturan설정設定項目 | 填写ValueNilai값値 |
|---|---|
| Base URL / API Base | {{BASE}}/v1 |
| API Key | 控制台创建的 tm-…Your tm-… keyKey tm-… Andatm-… 키お客様の tm-… キー |
| Model | 模型 ID,如 anthropic/claude-sonnet-5.5A model ID such as anthropic/claude-sonnet-5.5ID model seperti anthropic/claude-sonnet-5.5anthropic/claude-sonnet-5.5 같은 모델 IDanthropic/claude-sonnet-5.5 などのモデル ID |
LangChain
# pip install langchain-openai
import os
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
base_url="{{BASE}}/v1",
api_key=os.environ["TOKENMASTER_API_KEY"],
model="deepseek/deepseek-v4-pro",
max_tokens=1024,
)
print(llm.invoke("Write a haiku about Manila").content)
// npm install @langchain/openai
import { ChatOpenAI } from "@langchain/openai";
const llm = new ChatOpenAI({
model: "deepseek/deepseek-v4-pro",
apiKey: process.env.TOKENMASTER_API_KEY,
configuration: { baseURL: "{{BASE}}/v1" },
maxTokens: 1024,
});
console.log((await llm.invoke("Write a haiku about Manila")).content);
桌面客户端与低代码平台Desktop clients & low-code platformsKlien desktop & platform low-code데스크톱 클라이언트 및 로우코드 플랫폼デスクトップクライアントとローコードプラットフォーム
Cherry Studio、LobeChat、Dify、Continue 等工具:在模型服务商设置里选择「OpenAI 兼容」或「自定义 OpenAI」,按上表填写 Base URL、API Key,并手动添加要使用的模型 ID。部分工具要求 Base URL 不带 /v1,如果连接失败,请两种写法都试一次。Cherry Studio, LobeChat, Dify, Continue and similar tools: pick the "OpenAI-compatible" or "Custom OpenAI" provider, fill in the base URL and key from the table, then add the model IDs you want. Some tools expect the base URL without /v1; try both if the connection test fails.Cherry Studio, LobeChat, Dify, Continue, dan tools serupa: pilih penyedia "OpenAI-compatible" atau "Custom OpenAI", isi base URL dan key dari tabel, lalu tambahkan ID model yang Anda inginkan. Beberapa tools mengharapkan base URL tanpa /v1; coba keduanya jika uji koneksi gagal.Cherry Studio, LobeChat, Dify, Continue 등의 도구에서는 "OpenAI 호환" 또는 "Custom OpenAI" 제공업체를 선택하고, 표의 base URL과 키를 입력한 뒤 원하는 모델 ID를 추가하세요. 일부 도구는 /v1이 없는 base URL을 요구하므로, 연결 테스트에 실패하면 두 가지 모두 시도해 보세요.Cherry Studio、LobeChat、Dify、Continue などのツールでは、「OpenAI 互換」または「カスタム OpenAI」プロバイダーを選び、表のベース URL とキーを入力してから、使いたいモデル ID を追加します。ツールによってはベース URL に /v1 を含めない形式を求めるものがあります。接続テストに失敗する場合は両方をお試しください。
GET/v1/models
返回当前可调用的模型。只有已开售(有价格)的模型才会出现;价格见模型广场。Lists the models you can call right now. Only models with published prices appear; see the catalog for prices.Menampilkan daftar model yang dapat Anda panggil saat ini. Hanya model dengan harga yang telah dipublikasikan yang muncul; lihat katalog untuk harga.지금 호출할 수 있는 모델 목록을 반환합니다. 가격이 공개된 모델만 표시되며, 가격은 카탈로그에서 확인하세요.現在呼び出し可能なモデルを一覧表示します。価格が公開されているモデルのみが表示されます。価格はカタログをご覧ください。
curl {{BASE}}/v1/models -H "Authorization: Bearer $TOKENMASTER_API_KEY"
{
"object": "list",
"data": [
{ "id": "tokenmaster/auto", "object": "model", "owned_by": "tokenmaster" },
{ "id": "anthropic/claude-sonnet-5.5", "object": "model", "owned_by": "Anthropic" },
{ "id": "openai/gpt-6-sol", "object": "model", "owned_by": "OpenAI" },
{ "id": "deepseek/deepseek-v4-pro", "object": "model", "owned_by": "DeepSeek" },
{ "id": "moonshotai/kimi-k2.6", "object": "model", "owned_by": "Moonshot AI" }
]
}
模型 ID 规则Model IDsID model모델 IDモデル ID
- 格式为
厂商/模型,全小写,例如google/gemini-3.8-flash、alibaba/qwen3.7-plus、zhipu/glm-5.2。Format isvendor/model, lowercase — e.g.google/gemini-3.8-flash,alibaba/qwen3.7-plus,zhipu/glm-5.2.Formatnyavendor/model, huruf kecil — mis.google/gemini-3.8-flash,alibaba/qwen3.7-plus,zhipu/glm-5.2.형식은 소문자vendor/model입니다 — 예:google/gemini-3.8-flash,alibaba/qwen3.7-plus,zhipu/glm-5.2.形式は小文字のvendor/modelです(例:google/gemini-3.8-flash、alibaba/qwen3.7-plus、zhipu/glm-5.2)。 - 特殊 ID
tokenmaster/auto:由平台自动挑选模型,见智能路由。Special IDtokenmaster/autolets us pick the model — see Smart routing.ID khusustokenmaster/automembiarkan kami memilih model — lihat Perutean pintar.특수 IDtokenmaster/auto는 모델을 자동 선택합니다 — 스마트 라우팅 참고.特別な IDtokenmaster/autoを使うとモデルを自動で選びます(スマートルーティング参照)。 - 模型广场里标注「即将开售」的模型暂不可调用,会返回 400。Models marked "Coming soon" in the catalog cannot be called yet and return 400.Model yang ditandai "Segera hadir" di katalog belum dapat dipanggil dan mengembalikan 400.카탈로그에서 "출시 예정"으로 표시된 모델은 아직 호출할 수 없으며 400을 반환합니다.カタログで「近日公開」と表示されているモデルはまだ呼び出せず、400 を返します。
- 目前
/v1/chat/completions支持文本类(含多模态输入)模型;图像生成、视频、语音、向量模型接口即将开放。/v1/chat/completionscurrently serves text models (including multimodal input). Image, video, speech and embedding endpoints are coming./v1/chat/completionssaat ini melayani model teks (termasuk input multimodal). Endpoint gambar, video, suara, dan embedding akan segera hadir./v1/chat/completions는 현재 텍스트 모델(멀티모달 입력 포함)을 지원합니다. 이미지, 영상, 음성, 임베딩 엔드포인트는 준비 중입니다./v1/chat/completionsは現在テキストモデル(マルチモーダル入力を含む)に対応しています。画像、動画、音声、埋め込みのエンドポイントは今後提供予定です。 - 部分海外厂商有服务地区限制,详见安全与合规。Some providers restrict regions — see Security & compliance.Beberapa penyedia membatasi wilayah — lihat Keamanan & kepatuhan.일부 제공업체는 지역을 제한합니다 — 보안 및 규정 준수를 참고하세요.一部のプロバイダーは提供地域を制限しています。セキュリティとコンプライアンスを参照してください。
智能路由Smart routingPerutean pintar스마트 라우팅スマートルーティング tokenmaster/auto
不知道该选哪个模型?让平台替你选:简单问题交给便宜模型,复杂任务交给强模型,同样的预算能跑更多请求。Not sure which model to pick? Let us choose per request: simple asks go to cheaper models, hard tasks to stronger ones — the same budget goes further.Bingung memilih model? Biarkan kami memilih per permintaan: pertanyaan sederhana ke model yang lebih murah, tugas sulit ke model yang lebih kuat — anggaran yang sama jadi lebih awet.어떤 모델을 골라야 할지 모르겠다면 저희가 요청마다 골라 드립니다. 간단한 질문은 저렴한 모델, 어려운 작업은 강력한 모델로 보내 같은 예산으로 더 많이 처리합니다.どのモデルを選べばいいか迷ったら、リクエストごとにお任せください。簡単な質問は安いモデル、難しいタスクは高性能モデルに回すので、同じ予算でより多く処理できます。
- 用法:把
model写成tokenmaster/auto(简写auto也可以),其余参数不变,流式、工具调用、图像输入都照常支持。Usage: setmodeltotokenmaster/auto(or justauto). Everything else stays the same — streaming, tools and image input all work.Cara pakai: isimodeldengantokenmaster/auto(atau cukupauto). Parameter lain tetap sama — streaming, tool calling, dan input gambar tetap berfungsi.사용법:model을tokenmaster/auto(또는auto)로 지정하세요. 나머지는 그대로이며 스트리밍, 도구 호출, 이미지 입력 모두 지원됩니다.使い方:modelにtokenmaster/auto(またはauto)を指定するだけです。ストリーミング、ツール呼び出し、画像入力もそのまま使えます。 - 怎么选:先判断任务类型和难度,再在候选模型里权衡质量和价格,选性价比最高的一个;所选模型不可用时自动换下一个。当前候选:How it picks: it classifies the task and its difficulty, then weighs quality against price across the candidates and picks the best value; if that model is unavailable it falls back to the next. Current candidates: Cara memilih: jenis dan tingkat kesulitan tugas dinilai, lalu kualitas dan harga ditimbang di antara kandidat untuk memilih yang paling sepadan; bila model itu tidak tersedia, beralih ke berikutnya. Kandidat saat ini: 선택 방식: 작업 유형과 난이도를 판단한 뒤 후보 모델 중 품질과 가격을 비교해 가장 효율적인 모델을 고릅니다. 해당 모델을 쓸 수 없으면 다음 모델로 전환합니다. 현재 후보: 選び方:タスクの種類と難易度を判定し、候補モデルの品質と価格を比較して最もコスパの良いモデルを選びます。利用できない場合は次のモデルに切り替えます。現在の候補:
- 计费:按实际回答的那个模型的单价计费,智能路由本身不收费。响应里的
model字段和x-tm-routed-model响应头会告诉你用了哪个模型;控制台「用量明细」里这类请求带 auto 标记。Billing: you pay the per-token price of the model that actually answered; routing itself is free. The responsemodelfield and thex-tm-routed-modelheader name that model, and these requests carry an auto tag under Usage in the console.Penagihan: Anda membayar harga per token dari model yang benar-benar menjawab; peruteannya gratis. Fieldmodelpada respons dan headerx-tm-routed-modelmenyebut model tersebut, dan permintaan ini bertanda auto di Penggunaan pada konsol.과금: 실제로 답한 모델의 토큰 단가로 청구되며 라우팅 자체는 무료입니다. 응답의model필드와x-tm-routed-model헤더로 사용된 모델을 알 수 있고, 콘솔 사용 내역에는 auto 표시가 붙습니다.課金:実際に回答したモデルのトークン単価で課金され、ルーティング自体は無料です。レスポンスのmodelフィールドとx-tm-routed-modelヘッダーで使用モデルがわかり、コンソールの利用明細には auto が付きます。 - 预授权:请求前按候选模型中的最高单价冻结金额,结束后按实际模型结算、多退少补,所以需要的可用余额会比直接指定便宜模型略高。Holds: the pre-authorisation uses the highest price among the candidates and is settled to the actual model afterwards, so it needs a little more available balance than calling a cheap model directly.Penahanan saldo: pra-otorisasi memakai harga tertinggi di antara kandidat lalu diselesaikan sesuai model yang dipakai, jadi butuh saldo tersedia sedikit lebih besar dibanding memanggil model murah secara langsung.사전 승인: 요청 전 후보 중 가장 높은 단가로 금액을 보류하고, 완료 후 실제 모델 기준으로 정산합니다. 그래서 저렴한 모델을 직접 호출할 때보다 사용 가능 잔액이 조금 더 필요합니다.事前与信:リクエスト前に候補の最高単価で金額を保留し、終了後に実際のモデルで精算します。そのため安いモデルを直接呼ぶより少し多めの利用可能残高が必要です。
- 多轮对话:加请求头
x-tm-session-id(任意字符串,最长 64 位),同一会话会尽量保持同一个模型,缓存命中率更高、更省钱。Conversations: send anx-tm-session-idheader (any string, up to 64 chars) and a conversation stays on one model where possible — better cache hits, lower cost.Percakapan: kirim headerx-tm-session-id(string bebas, maks. 64 karakter) agar satu percakapan sebisa mungkin tetap di satu model — cache lebih sering kena, biaya lebih rendah.다중 턴 대화:x-tm-session-id헤더(임의 문자열, 최대 64자)를 보내면 한 대화는 가능한 한 같은 모델을 유지해 캐시 적중률이 높아지고 비용이 줄어듭니다.会話:x-tm-session-idヘッダー(任意の文字列、最大 64 文字)を付けると、同じ会話はできるだけ同じモデルを使い続け、キャッシュが効いて安くなります。 - 地区:候选模型会按你的国家 / 地区过滤;没有可用模型时返回
403 region_restricted。Regions: candidates are filtered by your country / region; if none remain you get403 region_restricted.Wilayah: kandidat disaring sesuai negara / wilayah Anda; bila tidak ada yang tersisa, Anda menerima403 region_restricted.지역: 후보 모델은 국가 / 지역에 따라 걸러지며, 남는 모델이 없으면403 region_restricted를 반환합니다.地域:候補はお客様の国・地域で絞り込まれ、利用できるモデルがない場合は403 region_restrictedを返します。 - 什么时候别用:需要固定的输出风格、可复现的结果,或者对质量要求极高的关键任务,请直接指定模型。When not to use it: if you need a fixed style, reproducible output, or top quality on a critical task, name the model explicitly.Kapan sebaiknya tidak dipakai: bila Anda butuh gaya keluaran tetap, hasil yang dapat direproduksi, atau kualitas tertinggi untuk tugas penting, sebutkan modelnya secara langsung.사용하지 않는 것이 좋은 경우: 고정된 출력 스타일, 재현 가능한 결과, 또는 중요한 작업에서 최고 품질이 필요하면 모델을 직접 지정하세요.使わない方がよい場合:出力スタイルを固定したい、結果を再現したい、重要なタスクで最高品質が必要、といった場合はモデルを直接指定してください。
resp = client.chat.completions.with_raw_response.create(
model="tokenmaster/auto",
messages=[{"role": "user", "content": "Summarise this paragraph in one sentence: ..."}],
extra_headers={"x-tm-session-id": "conv-42"}, # optional: keep one model per conversation
)
print(resp.headers["x-tm-routed-model"]) # e.g. openai/gpt-6-luna
print(resp.parse().choices[0].message.content)
curl -i {{BASE}}/v1/chat/completions \
-H "Authorization: Bearer $TOKENMASTER_API_KEY" \
-H "Content-Type: application/json" \
-H "x-tm-session-id: conv-42" \
-d '{"model": "tokenmaster/auto", "messages": [{"role": "user", "content": "Hello"}]}'
# x-tm-routed-model: openai/gpt-6-luna
# x-tm-cost-usd: 0.000034
# { "model": "openai/gpt-6-luna", "choices": [ ... ] }
联网搜索Web searchPencarian web웹 검색ウェブ検索
模型的知识有截止日期。打开联网搜索后,模型会在需要时自己上网查最新信息,并告诉你出处。适合新闻、价格、版本号、政策等会变的问题。Models have a knowledge cut-off. With web search on, the model looks things up when it needs to and tells you where the facts came from — ideal for news, prices, versions, policies and anything that changes.Pengetahuan model punya batas waktu. Dengan pencarian web, model mencari informasi terbaru saat perlu dan menyebutkan sumbernya — cocok untuk berita, harga, versi, kebijakan, dan hal yang sering berubah.모델의 지식에는 기준 시점이 있습니다. 웹 검색을 켜면 모델이 필요할 때 최신 정보를 찾아보고 출처를 알려 줍니다. 뉴스, 가격, 버전, 정책처럼 바뀌는 정보에 적합합니다.モデルの知識には期限があります。ウェブ検索を有効にすると、必要なときにモデルが最新情報を調べ、出典も示します。ニュース、価格、バージョン、制度など変わりやすい情報に最適です。
- 开启方式(任选其一):请求里加
"web_search": true;或"web_search": {"max_uses": 1}限制次数;或在模型名后加:online,如openai/gpt-6-luna:online;OpenAI 的web_search_options参数也认。Turn it on (any one): add"web_search": true; or"web_search": {"max_uses": 1}to cap searches; or append:onlineto the model, e.g.openai/gpt-6-luna:online. OpenAI'sweb_search_optionsalso works.Cara mengaktifkan (pilih salah satu): tambahkan"web_search": true; atau"web_search": {"max_uses": 1}untuk membatasi; atau akhiri model dengan:online, mis.openai/gpt-6-luna:online. Parameterweb_search_optionsmilik OpenAI juga diterima.켜는 방법(하나만 선택):"web_search": true를 넣거나,"web_search": {"max_uses": 1}로 횟수를 제한하거나, 모델 뒤에:online을 붙이세요(예:openai/gpt-6-luna:online). OpenAI의web_search_options도 인식합니다.有効化(いずれか):"web_search": trueを加える、"web_search": {"max_uses": 1}で回数を制限する、またはモデル名に:onlineを付けます(例:openai/gpt-6-luna:online)。OpenAI のweb_search_optionsも使えます。 - 工作方式:模型自己判断要不要搜、搜什么。每次请求最多搜索 3 次,每次 5 条结果;回答里用 [1]、[2] 标注出处并列出来源链接。How it works: the model decides whether and what to search. Up to 3 searches per request, 5 results each; answers cite results as [1], [2] and list the source links.Cara kerja: model sendiri yang memutuskan perlu mencari atau tidak, dan apa yang dicari. Maks. 3 pencarian per permintaan, 5 hasil tiap pencarian; jawaban mengutip [1], [2] dan mencantumkan tautan sumber.동작 방식: 검색 여부와 검색어는 모델이 스스로 정합니다. 요청당 최대 3회, 회당 5개 결과이며, 답변에 [1], [2]로 출처를 표시하고 링크를 나열합니다.仕組み:検索するかどうか、何を検索するかはモデルが判断します。1 リクエスト最大 3 回、各 5 件。回答では [1]、[2] で出典を示し、リンクを列挙します。
- 计费:每次搜索 $0.0003,另加每一轮模型调用的 token(搜索结果会作为输入,所以输入 token 会明显增加)。模型没有搜索就不收搜索费。响应头
x-tm-searches是搜索次数,usage和x-tm-cost-usd是所有轮次的合计。Billing: $0.0003 per search, plus the model tokens of every round (results are fed back as input, so input tokens grow noticeably). No search, no search fee. Thex-tm-searchesheader counts searches;usageandx-tm-cost-usdare totals across all rounds.Penagihan: $0.0003 per pencarian, ditambah token model di setiap putaran (hasil pencarian menjadi input, jadi token input bertambah cukup banyak). Tanpa pencarian, tanpa biaya pencarian. Headerx-tm-searchesberisi jumlah pencarian;usagedanx-tm-cost-usdadalah total semua putaran.과금: 검색 1회당 $0.0003에 매 라운드의 모델 토큰이 더해집니다(검색 결과가 입력으로 들어가 입력 토큰이 꽤 늘어납니다). 검색하지 않으면 검색 요금은 없습니다.x-tm-searches헤더는 검색 횟수,usage와x-tm-cost-usd는 모든 라운드의 합계입니다.課金:検索 1 回 $0.0003 に、各ラウンドのモデルのトークン料金が加わります(検索結果が入力になるため入力トークンがかなり増えます)。検索しなければ検索料金はかかりません。x-tm-searchesヘッダーは検索回数、usageとx-tm-cost-usdは全ラウンドの合計です。 - 返回内容:标准 Chat Completions 格式,另加
citations(回答里实际引用的来源链接,没引用则为空)和search(搜索次数、搜索词、结果标题与链接)。流式请求里,这两项在最后一个带usage的数据块里。Response: the standard Chat Completions shape pluscitations(the source URLs the answer actually cites; empty if none) andsearch(count, queries, result titles and links). When streaming, both arrive in the final chunk that carriesusage.Respons: format Chat Completions standar ditambahcitations(URL sumber yang benar-benar dikutip jawaban; kosong bila tidak ada) dansearch(jumlah, kueri, judul dan tautan hasil). Saat streaming, keduanya ada di chunk terakhir yang membawausage.응답: 표준 Chat Completions 형식에citations(답변이 실제로 인용한 출처 URL, 없으면 비어 있음)와search(횟수, 검색어, 결과 제목과 링크)가 추가됩니다. 스트리밍에서는usage가 담긴 마지막 청크에 들어 있습니다.レスポンス:標準の Chat Completions 形式にcitations(回答が実際に引用した出典 URL。引用がなければ空)とsearch(回数、検索語、結果のタイトルとリンク)が加わります。ストリーミングではusageを含む最後のチャンクに入ります。 - 流式:支持
"stream": true,但要等搜索完成才开始输出,首字时间会比普通调用多几秒。Streaming:"stream": trueworks, but output starts after the searches finish, so the first token takes a few seconds longer.Streaming:"stream": truedidukung, tetapi output baru dimulai setelah pencarian selesai, jadi token pertama datang beberapa detik lebih lambat.스트리밍:"stream": true를 지원하지만 검색이 끝난 뒤 출력이 시작되므로 첫 토큰이 몇 초 늦어집니다.ストリーミング:"stream": trueに対応していますが、検索完了後に出力が始まるため、最初のトークンが数秒遅くなります。 - 可以组合:能和你自己的
tools一起用,也能和智能路由一起用(tokenmaster/auto:online)。需要模型支持工具调用;很小的模型可能不会主动搜索。Combines with your owntoolsand with smart routing (tokenmaster/auto:online). The model must support tool calling; very small models may not search on their own.Bisa digabung dengantoolsAnda sendiri dan dengan perutean pintar (tokenmaster/auto:online). Model harus mendukung tool calling; model yang sangat kecil mungkin tidak mencari sendiri.본인의tools, 스마트 라우팅(tokenmaster/auto:online)과 함께 쓸 수 있습니다. 모델이 도구 호출을 지원해야 하며, 아주 작은 모델은 스스로 검색하지 않을 수 있습니다.ご自身のtoolsやスマートルーティング(tokenmaster/auto:online)と併用できます。モデルがツール呼び出しに対応している必要があり、ごく小さなモデルは自分から検索しないことがあります。 - 预授权:按最多搜索次数预估冻结金额,结束后按实际结算;每一轮都控制在冻结金额以内。Holds: the hold assumes the maximum number of searches and is settled to the actual cost; every round stays within the hold.Penahanan saldo: penahanan mengasumsikan jumlah pencarian maksimum lalu diselesaikan sesuai biaya sebenarnya; setiap putaran tetap dalam batas penahanan.사전 승인: 최대 검색 횟수를 기준으로 금액을 보류하고 실제 비용으로 정산하며, 모든 라운드는 보류 금액 안에서 처리됩니다.事前与信:最大検索回数を前提に与信し、実費で精算します。各ラウンドは与信額の範囲内で処理されます。
resp = client.chat.completions.create(
model="openai/gpt-6-luna",
messages=[{"role": "user", "content": "What changed in the latest Python release?"}],
extra_body={"web_search": True}, # or model="openai/gpt-6-luna:online"
)
print(resp.choices[0].message.content) # answer with [1] [2] citations
print(resp.model_extra["citations"]) # ["https://...", "https://..."]
curl -i {{BASE}}/v1/chat/completions \
-H "Authorization: Bearer $TOKENMASTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "tokenmaster/auto:online", "messages": [{"role": "user", "content": "Latest GPU prices"}]}'
# x-tm-searches: 1
# x-tm-cost-usd: 0.000540
# { "choices": [ ... ], "citations": ["https://..."], "search": { "searches": 1, "queries": ["GPU prices"], "results": [ ... ] } }
POST/v1/chat/completions
根据对话消息生成回复。请求与响应格式与 OpenAI Chat Completions 一致。Generates a reply from a list of messages. Request and response match OpenAI Chat Completions.Menghasilkan balasan dari daftar pesan. Permintaan dan respons sesuai dengan OpenAI Chat Completions.메시지 목록으로 응답을 생성합니다. 요청과 응답 형식은 OpenAI Chat Completions와 동일합니다.メッセージのリストから応答を生成します。リクエストとレスポンスは OpenAI Chat Completions と同じ形式です。
请求参数Request bodyBody permintaan요청 본문リクエストボディ
| 参数FieldField필드フィールド | 类型TypeTipe타입型 | 说明DescriptionDeskripsi설명説明 |
|---|---|---|
model* | string | 模型 ID,见 /v1/models。Model ID from /v1/models.ID model dari /v1/models./v1/models의 모델 ID./v1/models から取得したモデル ID。 |
messages* | array | 对话消息。role 可为 system / user / assistant / tool;content 为字符串,或含 text、image_url 的数组。Conversation. role is system, user, assistant or tool; content is a string or an array of text / image_url parts.Percakapan. role berupa system, user, assistant, atau tool; content berupa string atau array bagian text / image_url.대화 내용. role은 system, user, assistant, tool 중 하나이며, content는 문자열 또는 text / image_url 파트의 배열입니다.会話内容。role は system、user、assistant、tool のいずれか。content は文字列、または text / image_url パーツの配列です。 |
max_tokens | integer | 最多生成的 token 数。不传时默认 8192;平台会按余额自动下调,详见预授权与输出上限。Maximum tokens to generate. Defaults to 8192; may be lowered to what your balance covers — see Holds & output caps.Jumlah maksimum token yang dihasilkan. Default 8192; dapat diturunkan sesuai yang dapat ditanggung saldo Anda — lihat Penahanan saldo & batas output.생성할 최대 토큰 수. 기본값은 8192이며, 잔액으로 충당 가능한 수준까지 낮아질 수 있습니다 — 잔액 보류 및 출력 상한 참고.生成する最大トークン数。デフォルトは 8192 です。残高で賄える範囲まで引き下げられる場合があります。与信確保と出力上限を参照してください。 |
max_completion_tokens | integer | 同上,推理模型推荐使用;包含推理(思考)token。Same as above; preferred for reasoning models and includes reasoning tokens.Sama seperti di atas; lebih disarankan untuk model penalaran dan mencakup token penalaran.위와 동일하며, 추론 모델에 권장되고 추론 토큰을 포함합니다.上記と同じ。推論モデルでの使用を推奨し、推論トークンも含みます。 |
stream | boolean | 为 true 时以 SSE 流式返回,见流式响应。Stream as server-sent events — see Streaming.Streaming sebagai server-sent events — lihat Streaming.server-sent events 방식으로 스트리밍합니다 — 스트리밍 참고.Server-Sent Events でストリーミングします。ストリーミングを参照してください。 |
stream_options | object | 平台总是开启 include_usage,流末尾会返回用量。include_usage is always on; the stream ends with a usage chunk.include_usage selalu aktif; stream diakhiri dengan chunk usage.include_usage는 항상 켜져 있으며, 스트림은 usage 청크로 끝납니다.include_usage は常に有効で、ストリームは usage チャンクで終了します。 |
temperaturetop_p | numbernumber | 采样参数,取值范围以各模型为准。Sampling controls; valid ranges depend on the model.Kontrol sampling; rentang yang valid tergantung pada model.샘플링 제어. 유효 범위는 모델에 따라 다릅니다.サンプリング制御。有効な範囲はモデルによって異なります。 |
stop | string | array | 遇到这些字符串即停止生成。Stop sequences.Stop sequence.중지 시퀀스.停止シーケンス。 |
toolstool_choiceparallel_tool_calls | arraystring | objectboolean | 函数调用,见工具调用。Function calling — see Tool calling.Function calling — lihat Tool calling.Function calling — 도구 호출 참고.関数呼び出し。ツール呼び出しを参照してください。 |
response_format | object | json_object 或 json_schema,见结构化输出。json_object or json_schema — see Structured output.json_object atau json_schema — lihat Output terstruktur.json_object 또는 json_schema — 구조화된 출력 참고.json_object または json_schema。構造化出力を参照してください。 |
reasoning_effort | string | 推理强度(如 low / medium / high),仅支持推理的模型有效。Reasoning effort (e.g. low/medium/high) on models that support it.Tingkat upaya penalaran (mis. low/medium/high) pada model yang mendukungnya.지원 모델에서의 추론 강도(예: low/medium/high).対応モデルでの推論の強度(例:low/medium/high)。 |
seedpresence_penaltyfrequency_penaltylogprobstop_logprobsuser | integernumbernumberbooleanintegerstring | 按 OpenAI 语义透传,模型不支持时会被忽略或返回 400。Passed through with OpenAI semantics; ignored or rejected by models that don't support them.Diteruskan dengan semantik OpenAI; diabaikan atau ditolak oleh model yang tidak mendukungnya.OpenAI와 동일한 의미로 전달되며, 지원하지 않는 모델에서는 무시되거나 거부됩니다.OpenAI と同じ意味でそのまま渡されます。非対応のモデルでは無視または拒否されます。 |
n 只支持 1(其他值返回 400);service_tier 等会改变计费方式的参数会被移除;联网搜索请用 web_search,见联网搜索。Unlisted fields are dropped. n must be 1 (other values return 400); fields that change pricing, such as service_tier, are removed; for web search use web_search — see Web search.Field yang tidak tercantum akan dihapus. n harus bernilai 1 (nilai lain mengembalikan 400); field yang mengubah harga, seperti service_tier, akan dihapus; untuk pencarian web gunakan web_search — lihat Pencarian web.목록에 없는 필드는 제거됩니다. n은 1이어야 하며(다른 값은 400 반환), service_tier처럼 가격에 영향을 주는 필드는 제거됩니다. 웹 검색은 web_search를 쓰세요 — 웹 검색 참고.記載のないフィールドは削除されます。n は 1 である必要があります(それ以外の値は 400 を返します)。service_tier など料金に影響するフィールドは除去されます。ウェブ検索には web_search を使います(ウェブ検索参照)。示例ExampleContoh예시例
curl {{BASE}}/v1/chat/completions \
-H "Authorization: Bearer $TOKENMASTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "anthropic/claude-sonnet-5.5",
"max_tokens": 600,
"temperature": 0.3,
"messages": [
{"role": "system", "content": "You are a senior cloud architect. Answer concisely."},
{"role": "user", "content": "What is edge computing good for? Give 3 points."}
]
}'
HTTP/1.1 200 OK
content-type: application/json
x-tm-request-id: req_d2894d1a736f47c5961c
x-tm-cost-usd: 0.006480
x-tm-max-tokens: 600
{
"id": "chatcmpl-…",
"object": "chat.completion",
"created": 1792137165,
"model": "anthropic/claude-sonnet-5.5",
"choices": [{
"index": 0,
"message": { "role": "assistant", "content": "1. Low-latency interaction…" },
"finish_reason": "stop"
}],
"usage": {
"prompt_tokens": 1200,
"completion_tokens": 300,
"total_tokens": 1500,
"prompt_tokens_details": { "cached_tokens": 0 }
}
}
响应头Response headersHeader respons응답 헤더レスポンスヘッダー
| 响应头HeaderHeader헤더ヘッダー | 说明MeaningArti의미意味 |
|---|---|
x-tm-request-id | 请求唯一编号,排查问题时提供给我们。Unique request ID — include it when contacting support.ID permintaan unik — sertakan saat menghubungi dukungan.고유 요청 ID — 고객지원 문의 시 함께 알려 주세요.一意のリクエスト ID。サポートへのお問い合わせ時に添えてください。 |
x-tm-cost-usd | 本次扣费(美元,非流式请求返回)。流式请求的费用见控制台「用量明细」。Amount charged in USD (non-streaming). For streams, see Usage in the console.Jumlah yang ditagih dalam USD (non-streaming). Untuk stream, lihat Pemakaian di konsol.청구 금액(USD, 비스트리밍). 스트리밍은 콘솔의 사용량에서 확인하세요.課金額(USD、非ストリーミング時)。ストリーミングの場合はコンソールの「利用状況」を確認してください。 |
x-tm-routed-model | 使用智能路由(tokenmaster/auto)时,实际回答的模型 ID。With smart routing (tokenmaster/auto): the model that actually answered.Dengan perutean pintar (tokenmaster/auto): model yang benar-benar menjawab.스마트 라우팅(tokenmaster/auto) 사용 시 실제로 답한 모델 ID.スマートルーティング(tokenmaster/auto)使用時、実際に回答したモデルの ID。 |
x-tm-searches | 开启联网搜索时,本次请求实际搜索的次数。With web search on: how many searches this request made.Dengan pencarian web aktif: jumlah pencarian yang dilakukan permintaan ini.웹 검색 사용 시 이 요청에서 실제로 검색한 횟수.ウェブ検索有効時、このリクエストで実際に検索した回数。 |
x-tm-max-tokens | 本次实际生效的输出上限。Output cap actually applied.Batas output yang benar-benar diterapkan.실제 적용된 출력 상한.実際に適用された出力上限。 |
x-tm-max-tokens-clamped | 为 true 表示输出上限由平台设定或下调过(未传或余额不足以覆盖请求值)。true when the cap was set or lowered by the platform (missing, or not covered by your balance).true jika batas ditetapkan atau diturunkan oleh platform (tidak diisi, atau tidak tercukupi oleh saldo Anda).플랫폼이 상한을 설정하거나 낮춘 경우(미지정 또는 잔액 부족) true.上限がプラットフォームによって設定または引き下げられた場合(未指定、または残高不足)は true。 |
finish_reason 取值finish_reason valuesNilai finish_reasonfinish_reason 값finish_reason の値
stop:正常结束。 — finished normally. — selesai dengan normal. — 정상적으로 완료됨. — 正常に終了。length:达到输出上限被截断。可调大max_tokens或检查余额(见x-tm-max-tokens-clamped)。 — hit the output cap. Raisemax_tokensor check your balance (seex-tm-max-tokens-clamped). — mencapai batas output. Naikkanmax_tokensatau periksa saldo Anda (lihatx-tm-max-tokens-clamped). — 출력 상한에 도달함.max_tokens를 늘리거나 잔액을 확인하세요(x-tm-max-tokens-clamped참고). — 出力上限に到達。max_tokensを引き上げるか、残高を確認してください(x-tm-max-tokens-clampedを参照)。tool_calls:模型要求调用工具。 — the model wants to call a tool. — model ingin memanggil tool. — 모델이 도구 호출을 요청함. — モデルがツールの呼び出しを要求。content_filter:被模型厂商的安全策略拦截。 — blocked by the provider's safety system. — diblokir oleh sistem keamanan penyedia. — 제공업체의 안전 시스템에 의해 차단됨. — プロバイダーの安全性システムによりブロック。
流式响应StreamingStreaming스트리밍ストリーミング
设置 "stream": true,响应为 text/event-stream。每行 data: 是一个 JSON 片段;倒数第二个片段 choices 为空、带 usage;最后以 data: [DONE] 结束。Set "stream": true to receive text/event-stream. Each data: line is a JSON chunk; the second-to-last chunk has empty choices and carries usage; the stream ends with data: [DONE].Atur "stream": true untuk menerima text/event-stream. Setiap baris data: adalah chunk JSON; chunk kedua dari terakhir memiliki choices kosong dan membawa usage; stream diakhiri dengan data: [DONE]."stream": true로 설정하면 text/event-stream을 받습니다. 각 data: 줄은 JSON 청크이며, 끝에서 두 번째 청크는 choices가 비어 있고 usage를 담고 있습니다. 스트림은 data: [DONE]으로 끝납니다."stream": true を指定すると text/event-stream を受信します。各 data: 行は JSON チャンクです。最後から2番目のチャンクは choices が空で usage を含み、ストリームは data: [DONE] で終了します。
stream = client.chat.completions.create(
model="google/gemini-3.8-flash",
messages=[{"role": "user", "content": "Tell a 100-word story"}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
if chunk.usage: # last chunk: choices == []
print("\n", chunk.usage)
const stream = await client.chat.completions.create({
model: "google/gemini-3.8-flash",
messages: [{ role: "user", content: "Tell a 100-word story" }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
if (chunk.usage) console.log("\n", chunk.usage); // last chunk: choices = []
}
data: {"id":"chatcmpl-…","object":"chat.completion.chunk","model":"google/gemini-3.8-flash","choices":[{"index":0,"delta":{"content":"Once"}}]}
data: {"id":"chatcmpl-…","object":"chat.completion.chunk","model":"google/gemini-3.8-flash","choices":[{"index":0,"delta":{"content":" upon a time"}}]}
data: {"id":"chatcmpl-…","choices":[],"usage":{"prompt_tokens":14,"completion_tokens":168,"total_tokens":182}}
data: [DONE]
choices 是否为空,否则读取最后的用量片段时会出现下标越界。客户端中途断开不会少扣费:模型已经生成的部分仍会计费。Check that choices is non-empty before indexing — the final usage chunk has none. Disconnecting early still bills the tokens already generated.Periksa bahwa choices tidak kosong sebelum mengakses indeksnya — chunk usage terakhir tidak memilikinya. Memutus koneksi lebih awal tetap menagih token yang sudah dihasilkan.인덱싱 전에 choices가 비어 있지 않은지 확인하세요 — 마지막 usage 청크에는 값이 없습니다. 중간에 연결을 끊어도 이미 생성된 토큰은 과금됩니다.インデックスで参照する前に choices が空でないことを確認してください。最後の usage チャンクには含まれません。途中で切断した場合も、生成済みのトークンは課金されます。工具调用(Function Calling)Tool callingTool calling도구 호출ツール呼び出し
在 tools 中声明函数,模型返回 tool_calls 后由你执行,再把结果以 role: "tool" 发回。GPT、Claude、Gemini、Qwen、DeepSeek、Kimi、GLM 等主流模型均支持;个别小模型不支持时会返回 400。Declare functions in tools. When the model returns tool_calls, run them and send results back with role: "tool". Supported by GPT, Claude, Gemini, Qwen, DeepSeek, Kimi, GLM and other mainstream models.Deklarasikan fungsi di tools. Saat model mengembalikan tool_calls, jalankan fungsinya dan kirim hasilnya kembali dengan role: "tool". Didukung oleh GPT, Claude, Gemini, Qwen, DeepSeek, Kimi, GLM, dan model populer lainnya.tools에 함수를 선언하세요. 모델이 tool_calls를 반환하면 해당 함수를 실행하고 role: "tool"로 결과를 다시 보내세요. GPT, Claude, Gemini, Qwen, DeepSeek, Kimi, GLM 등 주요 모델에서 지원됩니다.tools で関数を宣言します。モデルが tool_calls を返したら関数を実行し、role: "tool" で結果を返します。GPT、Claude、Gemini、Qwen、DeepSeek、Kimi、GLM などの主要モデルが対応しています。
import json
tools = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get the current weather for a city",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
},
}]
messages = [{"role": "user", "content": "What's the weather in Manila right now?"}]
first = client.chat.completions.create(model="openai/gpt-6-sol", messages=messages, tools=tools)
call = first.choices[0].message.tool_calls[0]
args = json.loads(call.function.arguments) # {"city": "Manila"}
messages += [first.choices[0].message,
{"role": "tool", "tool_call_id": call.id, "content": json.dumps({"temp_c": 31, "sky": "thunderstorms"})}]
final = client.chat.completions.create(model="openai/gpt-6-sol", messages=messages, tools=tools)
print(final.choices[0].message.content)注意:tools 的定义会计入输入 token。工具很多时,每一轮请求都会为这些定义计费。Tool definitions count as input tokens on every turn.Definisi tool dihitung sebagai token input di setiap giliran.도구 정의는 매 턴마다 입력 토큰으로 계산됩니다.ツール定義は毎ターン入力トークンとしてカウントされます。
结构化输出Structured outputOutput terstruktur구조화된 출력構造化出力
需要稳定的 JSON 时,使用 response_format。json_schema 能约束字段与类型;模型不支持时可退回 {"type": "json_object"},并在提示词里说明字段。Use response_format for reliable JSON. json_schema enforces fields and types; fall back to {"type": "json_object"} plus instructions if a model lacks schema support.Gunakan response_format untuk JSON yang andal. json_schema memastikan field dan tipe; gunakan {"type": "json_object"} beserta instruksi sebagai alternatif jika model tidak mendukung schema.안정적인 JSON 출력을 위해 response_format을 사용하세요. json_schema는 필드와 타입을 강제합니다. 모델이 스키마를 지원하지 않으면 {"type": "json_object"}와 지시문을 함께 사용하세요.確実に JSON を得るには response_format を使用します。json_schema はフィールドと型を強制します。スキーマに対応していないモデルでは、{"type": "json_object"} と指示文の組み合わせにフォールバックしてください。
resp = client.chat.completions.create(
model="openai/gpt-6-luna",
messages=[{"role": "user", "content": "Extract: William is in Manila, meeting next Wednesday at 10am"}],
response_format={
"type": "json_schema",
"json_schema": {
"name": "meeting",
"strict": True,
"schema": {
"type": "object",
"properties": {
"person": {"type": "string"},
"city": {"type": "string"},
"time": {"type": "string"},
},
"required": ["person", "city", "time"],
"additionalProperties": False,
},
},
},
)
print(resp.choices[0].message.content) # {"person":"William","city":"Manila","time":"next Wednesday 10:00"}图像输入Image inputInput gambar이미지 입력画像入力
支持视觉的模型(如 Claude、GPT、Gemini、Qwen 部分型号)可在 content 数组中加入 image_url。图片可以是 https 链接,也可以是 data:image/png;base64,…。Vision-capable models accept image_url parts inside content. Use an https URL or a data:image/png;base64,… URI.Model yang mendukung vision menerima bagian image_url di dalam content. Gunakan URL https atau URI data:image/png;base64,….비전 지원 모델은 content 안의 image_url 파트를 받습니다. https URL 또는 data:image/png;base64,… URI를 사용하세요.ビジョン対応モデルは、content 内の image_url パーツを受け付けます。https URL または data:image/png;base64,… URI を使用してください。
resp = client.chat.completions.create(
model="anthropic/claude-sonnet-5.5",
max_tokens=500,
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "What are the single points of failure in this architecture diagram?"},
{"type": "image_url", "image_url": {"url": "https://example.com/arch.png"}},
],
}],
)图片按模型厂商的规则折算为输入 token 计费。发起请求时,平台按每张图约 3,000 tokens 预估冻结金额,结束后按实际用量结算。Images are billed as input tokens per the provider's rules. Holds assume about 3,000 tokens per image and settle to actual usage afterwards.Gambar ditagih sebagai token input sesuai aturan penyedia. Penahanan saldo mengasumsikan sekitar 3,000 token per gambar dan kemudian disesuaikan dengan pemakaian sebenarnya.이미지는 제공업체 규칙에 따라 입력 토큰으로 과금됩니다. 보류 시에는 이미지당 약 3,000 토큰으로 가정하고, 이후 실제 사용량으로 정산합니다.画像はプロバイダーの規定に従い入力トークンとして課金されます。与信確保では画像1枚あたり約 3,000 トークンを見込み、終了後に実際の使用量で精算します。
推理模型Reasoning modelsModel penalaran추론 모델推論モデル
- 推理(思考)过程消耗的 token 计入
completion_tokens,按输出价格计费。Reasoning tokens are included incompletion_tokensand billed at the output price.Token penalaran termasuk dalamcompletion_tokensdan ditagih dengan harga output.추론 토큰은completion_tokens에 포함되며 출력 가격으로 과금됩니다.推論トークンはcompletion_tokensに含まれ、出力価格で課金されます。 - 推理 token 也占用输出上限。上限太小时,可能出现
finish_reason: "length"且没有正文。建议推理模型设置max_completion_tokens≥ 4096。They also consume the output cap. A small cap can end withfinish_reason: "length"and no visible answer. Usemax_completion_tokens≥ 4096.Token ini juga memakai batas output. Batas yang kecil dapat berakhir denganfinish_reason: "length"tanpa jawaban yang terlihat. Gunakanmax_completion_tokens≥ 4096.추론 토큰도 출력 상한을 소모합니다. 상한이 작으면 보이는 답변 없이finish_reason: "length"로 끝날 수 있습니다.max_completion_tokens≥ 4096을 사용하세요.推論トークンは出力上限も消費します。上限が小さいとfinish_reason: "length"で終了し、表示される回答がない場合があります。max_completion_tokens≥ 4096 を指定してください。 - 支持的模型可用
reasoning_effort控制推理强度:强度越低,速度越快、费用越低。Where supported,reasoning_efforttrades depth for speed and cost.Jika didukung,reasoning_effortmenyeimbangkan kedalaman dengan kecepatan dan biaya.지원되는 경우reasoning_effort로 추론 깊이와 속도·비용 간 균형을 조정할 수 있습니다.対応モデルでは、reasoning_effortで推論の深さと速度・コストのバランスを調整できます。
resp = client.chat.completions.create(
model="openai/o3",
reasoning_effort="low",
max_completion_tokens=6000,
messages=[{"role": "user", "content": "Prove that the sum of any two odd numbers is even"}],
)
print(resp.usage.completion_tokens) # includes reasoning tokensGET/v1/balance
用 API Key 查询账户余额,便于在你的系统里做余额预警。Check the account balance with an API key — useful for low-balance alerts.Periksa saldo akun dengan API key — berguna untuk peringatan saldo rendah.API 키로 계정 잔액을 조회합니다 — 잔액 부족 알림에 유용합니다.API キーでアカウント残高を確認します。残高不足アラートに便利です。
curl {{BASE}}/v1/balance -H "Authorization: Bearer $TOKENMASTER_API_KEY"
{
"object": "balance",
"currency": "USD",
"balance": 42.183200, // total balance
"available": 41.902100, // usable for new requests
"held": 0.281100, // held by in-flight requests
"inflight": 2,
"frozen": false
}
计费规则How billing worksCara kerja penagihan과금 방식課金の仕組み
- 按 token 计费:费用 = 输入 tokens × 输入单价 + 缓存命中 tokens × 缓存单价 + 输出 tokens × 输出单价。单价见模型广场(每 100 万 tokens,美元)。Per token: cost = input × input price + cached × cached price + output × output price. Prices per 1M tokens (USD) are in the catalog.Per token: biaya = input × harga input + cache × harga cache + output × harga output. Harga per 1M tokens (USD) tersedia di katalog.토큰 단위: 비용 = 입력 × 입력 가격 + 캐시 × 캐시 가격 + 출력 × 출력 가격. 1M 토큰당 가격(USD)은 카탈로그에서 확인하세요.トークン単位:費用 = 入力 × 入力単価 + キャッシュ × キャッシュ単価 + 出力 × 出力単価。1M トークンあたりの価格(USD)はカタログに掲載しています。
- 缓存命中更便宜:多轮对话或长系统提示词保持开头不变,命中厂商的自动缓存时按缓存单价计费(用量里的
prompt_tokens_details.cached_tokens)。Cache hits are cheaper: keep long prompt prefixes stable; cached tokens appear inprompt_tokens_details.cached_tokens.Cache hit lebih murah: jaga awalan prompt yang panjang tetap stabil; token cache muncul diprompt_tokens_details.cached_tokens.캐시 적중 시 더 저렴: 긴 프롬프트 접두부를 일정하게 유지하세요. 캐시된 토큰은prompt_tokens_details.cached_tokens에 표시됩니다.キャッシュヒットは割安:長いプロンプトの先頭部分を固定しておきましょう。キャッシュされたトークンはprompt_tokens_details.cached_tokensに表示されます。 - 长上下文档位:带
*的模型在输入超过阈值后按更高档位计价。Long-context tiers: models marked*switch to a higher tier above the threshold.Tingkatan konteks panjang: model yang ditandai*beralih ke tingkatan harga lebih tinggi di atas ambang batas.롱 컨텍스트 구간:*표시 모델은 임계값을 넘으면 더 높은 가격 구간이 적용됩니다.長コンテキスト料金:*の付いたモデルは、しきい値を超えると上位の料金帯に切り替わります。 - 智能路由:
tokenmaster/auto按实际回答的模型单价计费,见智能路由。Smart routing:tokenmaster/autobills at the price of the model that answered — see Smart routing.Perutean pintar:tokenmaster/autoditagih sesuai harga model yang menjawab — lihat Perutean pintar.스마트 라우팅:tokenmaster/auto는 실제로 답한 모델 가격으로 청구됩니다 — 스마트 라우팅 참고.スマートルーティング:tokenmaster/autoは実際に回答したモデルの料金で課金されます(スマートルーティング参照)。 - 联网搜索:每次搜索 $0.0003,另加读取结果的 token,见联网搜索。Web search: $0.0003 per search plus the tokens to read the results — see Web search.Pencarian web: $0.0003 per pencarian ditambah token untuk membaca hasil — lihat Pencarian web.웹 검색: 검색 1회당 $0.0003 + 결과를 읽는 토큰 — 웹 검색 참고.ウェブ検索:検索 1 回 $0.0003 + 結果を読むトークン(ウェブ検索参照)。
- 精度:按 $0.000001 精确扣费,可在控制台「用量明细」逐笔查看。Precision: charged to $0.000001; every request is listed under Usage.Presisi: ditagih hingga $0.000001; setiap permintaan tercantum di Pemakaian.정밀도: $0.000001 단위로 과금되며, 모든 요청은 사용량에서 확인할 수 있습니다.精度:$0.000001 単位で課金され、すべてのリクエストが「利用状況」に記録されます。
- 失败不计费:上游返回错误、没有生成内容的请求不扣费。Failures are free: upstream errors that generate nothing are not charged.Kegagalan gratis: error upstream yang tidak menghasilkan apa pun tidak ditagih.실패는 무료: 아무것도 생성하지 않은 업스트림 오류는 과금되지 않습니다.失敗は無料:何も生成されなかった上流エラーは課金されません。
计算示例Worked exampleContoh perhitungan계산 예시計算例
anthropic/claude-sonnet-5.5:输入 $2.40/1M,输出 $12.00/1M。一次请求输入 1,200、输出 300 tokens:anthropic/claude-sonnet-5.5 at $2.40/1M input and $12.00/1M output; 1,200 input and 300 output tokens:anthropic/claude-sonnet-5.5 dengan $2.40/1M input dan $12.00/1M output; 1,200 token input dan 300 token output:anthropic/claude-sonnet-5.5(입력 $2.40/1M, 출력 $12.00/1M)로 입력 1,200 토큰, 출력 300 토큰을 처리한 경우:anthropic/claude-sonnet-5.5(入力 $2.40/1M、出力 $12.00/1M)で、入力 1,200 トークン、出力 300 トークンの場合:
1,200 × 2.40 / 1,000,000 = $0.002880
300 × 12.00 / 1,000,000 = $0.003600
total = $0.006480预授权与输出上限Holds & output capsPenahanan saldo & batas output잔액 보류 및 출력 상한与信確保と出力上限
为保证余额永远不会被扣成负数,每个请求在发往模型之前都会经过三步:So your balance can never go negative, every request goes through three steps before reaching the model:Agar saldo Anda tidak pernah minus, setiap permintaan melewati tiga langkah sebelum mencapai model:잔액이 마이너스가 되지 않도록 모든 요청은 모델에 도달하기 전에 세 단계를 거칩니다:残高がマイナスにならないよう、すべてのリクエストはモデルに届く前に次の3ステップを経ます:
- 预估:按输入长度估算输入 token(偏保守),加上输出上限,算出这次请求最多可能花多少钱。Estimate the worst-case cost from your input length (conservatively) and the output cap.Estimasi biaya maksimum dari panjang input Anda (secara konservatif) dan batas output.추정: 입력 길이(보수적으로 계산)와 출력 상한으로 최대 비용을 추정합니다.入力長(保守的に見積もり)と出力上限から最大費用を見積もります。
- 冻结:从可用余额冻结这笔钱。并发请求各自冻结,不会重复占用同一笔余额。Hold that amount from your available balance. Concurrent requests hold separately.Tahan jumlah tersebut dari saldo tersedia Anda. Permintaan bersamaan ditahan secara terpisah.보류: 해당 금액을 사용 가능 잔액에서 보류합니다. 동시 요청은 각각 별도로 보류됩니다.その金額を利用可能残高から与信確保します。同時リクエストはそれぞれ個別に確保されます。
- 结算:请求结束后按实际用量扣费,多冻结的部分立即释放。Settle on actual usage when the request ends; the rest of the hold is released immediately.Selesaikan berdasarkan pemakaian sebenarnya saat permintaan berakhir; sisa saldo yang ditahan langsung dilepaskan.정산: 요청이 끝나면 실제 사용량으로 정산하고, 남은 보류 금액은 즉시 해제됩니다.リクエスト終了時に実際の使用量で精算し、確保額の残りは直ちに解放されます。
如果余额不够覆盖你请求的 max_tokens,平台会把输出上限下调到余额能覆盖的值,并在响应头返回 x-tm-max-tokens-clamped: true。如果连「输入 + 64 个输出 token」都覆盖不了,请求返回 402。If your balance can't cover the requested max_tokens, the cap is lowered to what it can cover and x-tm-max-tokens-clamped: true is returned. If it can't cover the input plus 64 output tokens, you get 402.Jika saldo Anda tidak mencukupi max_tokens yang diminta, batas diturunkan sesuai yang dapat ditanggung dan x-tm-max-tokens-clamped: true dikembalikan. Jika saldo tidak mencukupi input ditambah 64 token output, Anda menerima 402.잔액으로 요청한 max_tokens를 충당할 수 없으면 상한이 충당 가능한 수준으로 낮아지고 x-tm-max-tokens-clamped: true가 반환됩니다. 입력과 출력 64 토큰도 충당할 수 없으면 402가 반환됩니다.指定した max_tokens を残高で賄えない場合は、賄える範囲まで上限が引き下げられ、x-tm-max-tokens-clamped: true が返されます。入力と出力 64 トークン分も賄えない場合は 402 が返されます。
max_tokens,冻结金额更小、余额利用率更高;② 用贵模型处理长文档时,保留足够余额;③ 用 /v1/balance 做余额预警。Tips: set max_tokens explicitly so holds stay small; keep enough balance for long documents on premium models; alert on /v1/balance.Tips: atur max_tokens secara eksplisit agar saldo yang ditahan tetap kecil; sediakan saldo yang cukup untuk dokumen panjang pada model premium; pasang peringatan dengan /v1/balance.팁: 보류 금액을 작게 유지하려면 max_tokens를 명시적으로 설정하세요. 프리미엄 모델로 긴 문서를 처리할 때는 잔액을 충분히 유지하고, /v1/balance로 알림을 설정하세요.ヒント:max_tokens を明示的に指定して与信確保額を小さく抑えましょう。上位モデルで長文を扱う場合は十分な残高を確保し、/v1/balance でアラートを設定してください。速率与并发限制Rate limitsBatas laju속도 제한レート制限
| 限制LimitBatas제한 항목制限 | 默认值DefaultDefault기본값デフォルト | 超出时When exceededJika terlampaui초과 시超過時 |
|---|---|---|
| 每个 API Key 请求频率Requests per keyPermintaan per key키당 요청 수キーあたりのリクエスト数 | 300 次 / 分钟300 / minute300 / menit300 / 분300 / 分 | 429 rate_limited |
| 每个账户同时进行的请求Concurrent requests per accountPermintaan bersamaan per akun계정당 동시 요청 수アカウントあたりの同時リクエスト数 | 16 | 429 too_many_concurrent |
| 单次请求最高费用Max cost per requestBiaya maksimum per permintaan요청당 최대 비용リクエストあたりの最大費用 | $20 | 400 request_too_large |
| 单次请求最大输出Max output per requestOutput maksimum per permintaan요청당 최대 출력リクエストあたりの最大出力 | 128,000 tokens | 自动下调CappedDibatasi상한 적용上限で切り詰め |
| 上下文长度Context lengthPanjang konteks컨텍스트 길이コンテキスト長 | 以各模型为准Per modelPer model모델별モデルごと | 400 context_length_exceeded |
需要更高的额度?联系我们,并说明模型、预计 QPS 和每月 token 用量。Need more? Contact us with the models, expected QPS and monthly token volume.Butuh lebih? Hubungi kami dengan informasi model, perkiraan QPS, dan volume token bulanan.더 높은 한도가 필요하신가요? 사용할 모델, 예상 QPS, 월간 토큰 사용량을 알려 주세요.上限の引き上げが必要な場合は、利用モデル、想定 QPS、月間トークン量を添えてお問い合わせください。
错误码ErrorsError오류エラー
错误响应格式与 OpenAI 一致:Errors follow the OpenAI format:Error mengikuti format OpenAI:오류는 OpenAI 형식을 따릅니다:エラーは OpenAI の形式に従います:
{
"error": {
"message": "Insufficient balance: this request needs at least $0.0123, available $0.0040. Top up in the console.",
"type": "insufficient_quota",
"code": "insufficient_balance"
}
}| HTTP | code | 含义MeaningArti의미意味 | 处理建议What to doYang perlu dilakukan대처 방법対処方法 |
|---|---|---|---|
| 400 | null | 参数错误(缺少 model / messages、n ≠ 1 等)Bad request (missing fields, n ≠ 1…)Permintaan tidak valid (field tidak ada, n ≠ 1…)잘못된 요청(필드 누락, n ≠ 1…)不正なリクエスト(必須フィールドの欠落、n ≠ 1 など) | 修正请求,不要重试Fix the request; don't retryPerbaiki permintaan; jangan retry요청을 수정하세요. 재시도하지 마세요リクエストを修正してください。リトライは不要です |
| 400 | request_too_large | 预估费用超过单次 $20 上限Estimated cost above the $20 per-request limitEstimasi biaya melebihi batas $20 per permintaan예상 비용이 요청당 한도 $20 초과見積もり費用がリクエストあたりの上限 $20 を超過 | 缩短输入或降低 max_tokensShorten input or lower max_tokensPersingkat input atau turunkan max_tokens입력을 줄이거나 max_tokens를 낮추세요入力を短くするか、max_tokens を下げてください |
| 400 | context_length_exceeded | 输入超过模型上下文长度Input exceeds the model's contextInput melebihi konteks model입력이 모델의 컨텍스트 초과入力がモデルのコンテキスト長を超過 | 截断历史或换长上下文模型Trim history or use a longer-context modelPangkas riwayat atau gunakan model dengan konteks lebih panjang대화 기록을 줄이거나 더 긴 컨텍스트 모델을 사용하세요履歴を削減するか、より長いコンテキストのモデルを使用してください |
| 401 | invalid_api_key | Key 缺失、错误或已吊销Missing, wrong or revoked keyKey tidak ada, salah, atau sudah dicabut키 누락, 잘못된 키 또는 폐기된 키キーが未指定、誤り、または失効済み | 检查 Authorization 头Check the Authorization headerPeriksa header AuthorizationAuthorization 헤더를 확인하세요Authorization ヘッダーを確認してください |
| 402 | insufficient_balance | 可用余额不足以开始这个请求Not enough balance to start the requestSaldo tidak cukup untuk memulai permintaan요청을 시작할 잔액 부족リクエストを開始するための残高が不足 | 充值,或缩短输入、降低 max_tokensTop up, or reduce input / max_tokensIsi saldo, atau kurangi input / max_tokens충전하거나 입력 / max_tokens를 줄이세요チャージするか、入力 / max_tokens を減らしてください |
| 403 | region_restricted | 该厂商不向你的注册地区提供服务Provider unavailable in your regionPenyedia tidak tersedia di wilayah Anda해당 지역에서 이용할 수 없는 제공업체お客様の地域ではこのプロバイダーを利用不可 | 换用其他厂商的模型Use another provider's modelGunakan model dari penyedia lain다른 제공업체의 모델을 사용하세요他のプロバイダーのモデルを使用してください |
| 403 | account_suspended | 账户已冻结Account suspendedAkun ditangguhkan계정 정지됨アカウントが停止されています | 联系客服Contact supportHubungi dukungan고객지원에 문의하세요サポートにお問い合わせください |
| 404 | model_not_found | 模型 ID 不存在Unknown model IDID model tidak dikenal알 수 없는 모델 ID不明なモデル ID | 对照 /v1/modelsCheck /v1/modelsPeriksa /v1/models/v1/models를 확인하세요/v1/models を確認してください |
| 429 | rate_limited | 超过每分钟请求数Per-minute rate exceededBatas laju per menit terlampaui분당 요청 한도 초과1分あたりのレート制限を超過 | 指数退避后重试Retry with backoffRetry dengan backoff백오프 후 재시도하세요バックオフを入れてリトライしてください |
| 429 | too_many_concurrent | 同时进行的请求超过 16 个More than 16 in-flight requestsLebih dari 16 permintaan yang sedang berjalan처리 중인 동시 요청 16개 초과処理中のリクエストが 16 件を超過 | 降低并发或排队Reduce concurrency or queueKurangi konkurensi atau gunakan antrean동시성을 줄이거나 대기열을 사용하세요同時実行数を減らすか、キューイングしてください |
| 429 / 5xx | null | 模型厂商繁忙或暂时故障Provider busy or temporarily failingPenyedia sibuk atau sedang gagal sementara제공업체 과부하 또는 일시적 장애プロバイダーが混雑中または一時的な障害 | 退避重试,或切换到同级模型Retry with backoff or fail over to a similar modelRetry dengan backoff atau alihkan ke model serupa백오프 후 재시도하거나 유사한 모델로 전환하세요バックオフを入れてリトライするか、類似モデルにフェイルオーバーしてください |
| 502 | null | 上游不可用Upstream unavailableUpstream tidak tersedia업스트림 사용 불가上流サービスが利用不可 | 稍后重试Retry laterCoba lagi nanti나중에 다시 시도하세요しばらくしてから再試行してください |
重试与超时Retries & timeoutsRetry & timeout재시도 및 타임아웃リトライとタイムアウト
- 只对 429 和 5xx 重试,使用指数退避加随机抖动(1s、2s、4s… 最多 5 次)。4xx 中的 400 / 401 / 402 / 403 / 404 不要重试。Retry only 429 and 5xx, with exponential backoff and jitter (1s, 2s, 4s… up to 5 tries). Don't retry 400/401/402/403/404.Retry hanya untuk 429 dan 5xx, dengan exponential backoff dan jitter (1s, 2s, 4s… hingga 5 kali). Jangan retry 400/401/402/403/404.429와 5xx만 지수 백오프와 지터를 적용해 재시도하세요(1s, 2s, 4s… 최대 5회). 400/401/402/403/404는 재시도하지 마세요.リトライは 429 と 5xx のみとし、指数バックオフとジッターを用いてください(1秒、2秒、4秒…最大5回)。400/401/402/403/404 はリトライしないでください。
- 已经成功生成的请求,重试会再次计费。只在没有拿到响应时重试。A retried request that already completed is billed again. Retry only when no response arrived.Permintaan yang di-retry padahal sudah selesai akan ditagih lagi. Retry hanya jika tidak ada respons yang diterima.이미 완료된 요청을 재시도하면 다시 과금됩니다. 응답을 받지 못한 경우에만 재시도하세요.既に完了していたリクエストをリトライすると、再度課金されます。レスポンスが届かなかった場合にのみリトライしてください。
- 长输出建议用流式,避免客户端或代理的空闲超时;非流式请求的客户端超时建议 ≥ 120 秒。Stream long outputs to avoid idle timeouts; for non-streaming calls use a client timeout ≥ 120s.Gunakan streaming untuk output panjang guna menghindari idle timeout; untuk panggilan non-streaming gunakan timeout klien ≥ 120s.유휴 타임아웃을 피하려면 긴 출력은 스트리밍하세요. 비스트리밍 호출에는 클라이언트 타임아웃을 120s 이상으로 설정하세요.長い出力はストリーミングでアイドルタイムアウトを回避してください。非ストリーミング呼び出しではクライアントのタイムアウトを 120s 以上に設定してください。
- 官方 OpenAI SDK 自带重试,可用
max_retries/maxRetries调整。The official OpenAI SDKs retry automatically; tunemax_retries/maxRetries.SDK resmi OpenAI melakukan retry secara otomatis; sesuaikanmax_retries/maxRetries.공식 OpenAI SDK는 자동으로 재시도합니다.max_retries/maxRetries로 조정하세요.公式 OpenAI SDK は自動でリトライします。max_retries/maxRetriesで調整してください。
client = OpenAI(
base_url="{{BASE}}/v1",
api_key=os.environ["TOKENMASTER_API_KEY"],
max_retries=3,
timeout=120,
)请求追踪Request tracingPelacakan permintaan요청 추적リクエストのトレース
每个响应都带 x-tm-request-id。建议把它和你自己的业务 ID 一起写入日志;需要排查扣费或回复质量问题时,提供这个编号即可。控制台「用量明细」逐笔记录时间、模型、输入/输出 token 和费用。Every response carries x-tm-request-id. Log it with your own IDs and share it with support. The console's Usage page lists each request with time, model, tokens and cost.Setiap respons menyertakan x-tm-request-id. Catat bersama ID Anda sendiri dan bagikan kepada dukungan. Halaman Pemakaian di konsol mencantumkan setiap permintaan beserta waktu, model, token, dan biaya.모든 응답에는 x-tm-request-id가 포함됩니다. 자체 ID와 함께 기록해 두고 고객지원에 전달하세요. 콘솔의 사용량 페이지에서 각 요청의 시간, 모델, 토큰, 비용을 확인할 수 있습니다.すべてのレスポンスには x-tm-request-id が含まれます。自社の ID と併せてログに記録し、サポートへのお問い合わせ時にお伝えください。コンソールの「利用状況」ページでは、各リクエストの日時、モデル、トークン数、費用を確認できます。
raw = client.chat.completions.with_raw_response.create(
model="openai/gpt-6-luna",
messages=[{"role": "user", "content": "ping"}],
)
print(raw.headers["x-tm-request-id"], raw.headers.get("x-tm-cost-usd"))
resp = raw.parse()安全与合规Security & complianceKeamanan & kepatuhan보안 및 규정 준수セキュリティとコンプライアンス
- 传输加密:全程 HTTPS。Encryption: HTTPS everywhere.Enkripsi: HTTPS di semua jalur.암호화: 모든 구간에 HTTPS 적용.暗号化:すべての通信で HTTPS を使用します。
- Key 安全:平台只保存 Key 的哈希;建议不同环境用不同的 Key,定期轮换。Keys: stored only as hashes; use one key per environment and rotate regularly.Key: hanya disimpan sebagai hash; gunakan satu key per environment dan rotasi secara berkala.키: 해시로만 저장됩니다. 환경별로 키를 하나씩 사용하고 정기적으로 교체하세요.キー:ハッシュとしてのみ保存されます。環境ごとに別のキーを使用し、定期的にローテーションしてください。
- 数据使用:TokenMaster 不使用你的请求内容训练模型。各模型厂商的数据处理以其政策为准。Data: TokenMaster never trains on your requests. Each provider's own data policy applies.Data: TokenMaster tidak pernah menggunakan permintaan Anda untuk pelatihan. Kebijakan data masing-masing penyedia berlaku.데이터: TokenMaster는 고객의 요청을 학습에 사용하지 않습니다. 각 제공업체의 데이터 정책이 적용됩니다.データ:TokenMaster はお客様のリクエストを学習に使用しません。各プロバイダーのデータポリシーが適用されます。
- 地区限制:OpenAI、Anthropic、Google、xAI 对部分国家和地区不提供服务。系统按你注册时选择的国家/地区执行,受限时返回 403
region_restricted;国产模型和开源模型不受此限制。Regions: OpenAI, Anthropic, Google and xAI do not serve some regions. We apply the country you chose at sign-up and return 403region_restrictedwhen restricted. Chinese and open models are not affected.Wilayah: OpenAI, Anthropic, Google, dan xAI tidak melayani beberapa wilayah. Kami menerapkan negara yang Anda pilih saat mendaftar dan mengembalikan 403region_restrictedjika dibatasi. Model Tiongkok dan model terbuka tidak terpengaruh.지역: OpenAI, Anthropic, Google, xAI는 일부 지역에서 서비스를 제공하지 않습니다. 가입 시 선택한 국가를 기준으로 적용하며, 제한된 경우 403region_restricted를 반환합니다. 중국 모델과 오픈 모델은 영향을 받지 않습니다.地域:OpenAI、Anthropic、Google、xAI は一部の地域でサービスを提供していません。登録時に選択された国に基づき、制限対象の場合は 403region_restrictedを返します。中国モデルとオープンモデルは影響を受けません。 - 使用政策:请遵守各模型厂商的使用政策,违规内容可能被厂商拦截(
content_filter),严重违规的账户会被冻结。Usage policies: provider policies apply; violating content may be filtered (content_filter) and abusive accounts suspended.Kebijakan penggunaan: kebijakan penyedia berlaku; konten yang melanggar dapat difilter (content_filter) dan akun yang menyalahgunakan layanan dapat ditangguhkan.이용 정책: 제공업체 정책이 적용됩니다. 위반 콘텐츠는 필터링될 수 있으며(content_filter), 악용 계정은 정지될 수 있습니다.利用ポリシー:各プロバイダーのポリシーが適用されます。違反するコンテンツはフィルタリングされる場合があり(content_filter)、悪用しているアカウントは停止されます。
常见问题FAQFAQFAQよくある質問
回复被截断了?Why was the reply cut off?Mengapa balasan terpotong?응답이 중간에 끊긴 이유는 무엇인가요?応答が途中で切れたのはなぜですか?
finish_reason 为 length 说明达到了输出上限。查看响应头 x-tm-max-tokens:如果有 x-tm-max-tokens-clamped: true,说明上限被平台设定或按余额下调过,充值或显式设置更大的 max_tokens 即可。finish_reason: "length" means the cap was hit. Check x-tm-max-tokens; with x-tm-max-tokens-clamped: true, top up or set a larger max_tokens.finish_reason: "length" berarti batas telah tercapai. Periksa x-tm-max-tokens; jika x-tm-max-tokens-clamped: true, isi saldo atau atur max_tokens yang lebih besar.finish_reason: "length"는 상한에 도달했다는 뜻입니다. x-tm-max-tokens를 확인하고, x-tm-max-tokens-clamped: true라면 충전하거나 max_tokens를 더 크게 설정하세요.finish_reason: "length" は上限に達したことを意味します。x-tm-max-tokens を確認してください。x-tm-max-tokens-clamped: true の場合は、チャージするか、より大きな max_tokens を指定してください。
流式和非流式价格一样吗?Does streaming cost more?Apakah streaming lebih mahal?스트리밍은 비용이 더 드나요?ストリーミングは割高になりますか?
一样,都按 token 计费。No — same per-token price.Tidak — harga per token sama.아니요 — 토큰당 가격은 동일합니다.いいえ。トークン単価は同じです。
可以用 Anthropic SDK 或 Responses API 吗?Anthropic SDK or Responses API?Anthropic SDK atau Responses API?Anthropic SDK나 Responses API를 사용할 수 있나요?Anthropic SDK や Responses API は使えますか?
目前提供 OpenAI Chat Completions 协议,Claude 模型也通过这个协议调用。Anthropic Messages 和 Responses 协议在规划中。Today we serve OpenAI Chat Completions, which also covers Claude models. Anthropic Messages and Responses support is planned.Saat ini kami melayani OpenAI Chat Completions, yang juga mencakup model Claude. Dukungan Anthropic Messages dan Responses sedang direncanakan.현재는 Claude 모델도 지원하는 OpenAI Chat Completions를 제공합니다. Anthropic Messages 및 Responses 지원은 계획 중입니다.現在は OpenAI Chat Completions を提供しており、Claude モデルもこちらで利用できます。Anthropic Messages と Responses への対応を予定しています。
余额会过期吗?可以退款吗?Does credit expire? Refunds?Apakah kredit kedaluwarsa? Refund?크레딧에 유효기간이 있나요? 환불은요?残高に有効期限はありますか?返金は?
充值时一次性收取的通道费用不退。未使用余额的处理以《服务条款》为准。Channel fees paid at top-up are non-refundable. Unused credit follows our Terms of Service.Biaya kanal yang dibayar saat isi saldo tidak dapat dikembalikan. Kredit yang belum terpakai mengikuti Ketentuan Layanan kami.충전 시 결제한 채널 수수료는 환불되지 않습니다. 미사용 크레딧은 서비스 약관을 따릅니다.チャージ時に支払ったチャネル手数料は返金できません。未使用残高の扱いは利用規約に従います。