TokenAPI串接文件
API 文件

兩步串接: 改 base URL,換 API Key。

TokenAPI 支援 OpenAI Chat Completions、Responses 格式與 Anthropic Messages 格式。直接使用官方 SDK、不必修改,從模型清單選一個模型 ID 即可。

快速開始

Base URL

https://tokenapi.biz/v1

全部介面:

GET/v1/models

模型清單

公開模型 ID 及其能力、上下文長度與價格。

GET/v1/models/{id}

查詢單一模型

回傳單一模型物件。

POST/v1/chat/completions

Chat Completions

OpenAI Chat Completions 格式,支援串流與非串流。

POST/v1/responses

Responses

OpenAI Responses 格式(無狀態),支援串流與非串流。

POST/v1/messages

Messages

Anthropic Messages 格式,供 Anthropic SDK 使用。

curl
curl https://tokenapi.biz/v1/chat/completions \
  -H "Authorization: Bearer $TOKENAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "tokenapi-pro",
    "messages": [{ "role": "user", "content": "Hello!" }]
  }'
Node.js · openai
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://tokenapi.biz/v1",
  apiKey: process.env.TOKENAPI_KEY,
});

const res = await client.chat.completions.create({
  model: "tokenapi-pro",
  messages: [{ role: "user", content: "Hello!" }],
});
console.log(res.choices[0].message.content);
Python · openai
import os
from openai import OpenAI

client = OpenAI(base_url="https://tokenapi.biz/v1", api_key=os.environ["TOKENAPI_KEY"])

res = client.chat.completions.create(
    model="tokenapi-pro",
    messages=[{"role": "user", "content": "Hello!"}],
)
print(res.choices[0].message.content)
驗證

以 Bearer Token 方式帶上 Key。

Authorization: Bearer sk-tk-…

也支援 Anthropic 風格的 x-api-key 請求標頭。Key 以 sk-tk- 開頭,只在建立時顯示一次,每組 Key 可單獨設定限制(每分鐘請求數、消費上限、可用模型、有效期限)。請只在伺服器端保存 Key,切勿放進網頁或行動裝置的程式碼。申請 Key 請寄信至 hello@tokenapi.biz。

模型

穩定的模型 ID

把 GET /v1/models 回傳的 id 當作 model 參數傳入。模型 ID 是一個穩定的產品:為確保品質與可用性,我們可能升級或切換它背後的後端,而你這邊不需任何修改。回應中回傳的始終是你呼叫的模型 ID。

GET /v1/models
{
  "object": "list",
  "data": [
    {
      "id": "tokenapi-pro",
      "object": "model",
      "owned_by": "tokenapi",
      "display_name": "TokenAPI Pro",
      "capabilities": ["streaming", "tools", "json_output"],
      "context_length": 131072,
      "pricing": {
        "currency": "USD",
        "prompt": "0.0000015",
        "completion": "0.000006",
        "input_per_million": 1.5,
        "output_per_million": 6
      }
    }
  ]
}

pricing.prompt / pricing.completion 為每 token 美元價格(字串);input_per_million / output_per_million 為每百萬 token 美元價格。

POST /v1/chat/completions

Chat Completions

請求與回應遵循 OpenAI 格式:支援含文字與圖片的 messages、tools / tool_choice、response_format、temperature、top_p、stop、max_tokens 或 max_completion_tokens。每個回應都帶有 x-request-id 回應標頭,聯絡客服時請提供。

未傳入 max_tokens 時,按該模型的最大輸出長度執行。

串流輸出

Server-Sent Events

設定 stream: true。資料以 data: 行逐塊回傳,並以 data: [DONE] 結束。加上 stream_options.include_usage 可在最後一塊取得 token 用量。

Node.js
const stream = await client.chat.completions.create({
  model: "tokenapi-pro",
  messages: [{ role: "user", content: "Write a haiku." }],
  stream: true,
  stream_options: { include_usage: true }, // final chunk carries usage
});

for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}
POST /v1/responses

Responses API

支援字串或陣列形式的 input、instructions、函式工具、text.format(JSON Schema),以及完整的串流事件序列(response.output_text.delta、response.completed 等)。

Node.js
const res = await client.responses.create({
  model: "tokenapi-pro",
  instructions: "Answer in one sentence.",
  input: "What is a token?",
});
console.log(res.output_text);
POST /v1/messages

Anthropic Messages

適用於以 Anthropic SDK 撰寫的程式碼。支援 system、文字與圖片區塊、帶 tool_use / tool_result 的 tools,以及串流事件。錯誤以 Anthropic 的錯誤格式回傳。

Node.js · @anthropic-ai/sdk
import Anthropic from "@anthropic-ai/sdk";

const anthropic = new Anthropic({
  baseURL: "https://tokenapi.biz",   // SDK appends /v1/messages
  apiKey: process.env.TOKENAPI_KEY,
});

const msg = await anthropic.messages.create({
  model: "tokenapi-pro",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Hello!" }],
});
錯誤碼

OpenAI 風格的錯誤物件

範例
{
  "error": {
    "message": "The model 'nope' does not exist or is disabled.",
    "type": "invalid_request_error",
    "code": "model_not_found",
    "param": null
  }
}
400invalid_request_error

JSON 格式錯誤、缺少 model / messages,或使用了不支援的參數。

401invalid_api_key

API Key 缺漏、錯誤、已停用或已過期。

402insufficient_quota

餘額不足以支付本次請求的最高費用,或已達到該 Key 的消費上限。請儲值或調低 max_tokens。

403model_not_allowed

此 Key 僅限使用其他模型。

404model_not_found

模型 ID 不存在或已停用。可透過 GET /v1/models 查看有效的 ID。

429rate_limit_exceeded

超過此 Key 每分鐘請求數限制。請依 Retry-After 回應標頭的時間後重試。

502upstream_unavailable

此模型的所有後端路由皆失敗,可以安全重試。

上游失敗會先自動切換到其他路由重試,之後才會回傳錯誤。回傳 502 表示所有路由都失敗了,且不會扣款。

計費與限額

預付儲值、按 token 計費、絕不透支。

  • 每個模型個別定價,單位為美元 / 百萬輸入、輸出 token(見模型)。
  • 請求執行前,會從餘額凍結其最高可能費用(提示詞 + max_tokens)。餘額不足時回傳 402,請求不會送往上游。
  • 請求結束後按實際 token 扣款,剩餘凍結額度立即退回。
  • 在模型開始回答之前就失敗的請求(任何 4xx/5xx 錯誤回應)不扣款。串流請求若中途取消或中斷,只對已產生的 token 計費。
  • 速率限制以 API Key 計算,單位為每分鐘請求數;超出時回傳 429 並帶有 Retry-After 回應標頭。
相容性說明

暫不支援

  • /v1/responses:previous_response_id(請改為傳送完整對話)、web_search 等內建工具,以及 file_id 輸入。
  • /v1/messages:延伸思考 thinking 與 cache_control 會被忽略。
  • Chat Completions 的 n > 1。
有疑問?聯絡我們