/v1/models모델 목록
공개 모델 ID와 기능, 컨텍스트 길이, 요금.
TokenAPI는 OpenAI Chat Completions·Responses 형식과 Anthropic Messages 형식을 지원합니다. 공식 SDK를 그대로 쓰고 모델 목록에서 모델 ID를 고르세요.
https://tokenapi.biz/v1
전체 엔드포인트:
/v1/models공개 모델 ID와 기능, 컨텍스트 길이, 요금.
/v1/models/{id}단일 모델 객체.
/v1/chat/completionsOpenAI Chat Completions 형식, 스트리밍·비스트리밍.
/v1/responsesOpenAI Responses 형식(무상태), 스트리밍·비스트리밍.
/v1/messagesAnthropic Messages 형식, Anthropic SDK용.
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!" }]
}'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);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)Authorization: Bearer sk-tk-…
Anthropic 방식의 x-api-key 헤더도 사용할 수 있습니다. 키는 sk-tk-로 시작하고 생성 시 한 번만 표시되며, 키마다 한도(분당 요청 수, 지출 한도, 허용 모델, 만료일)를 설정할 수 있습니다. 키는 서버에만 보관하고 브라우저나 모바일 코드에 넣지 마세요. 키 신청은 hello@tokenapi.biz로 메일을 보내 주세요.
GET /v1/models가 반환하는 id를 model 파라미터로 사용하세요. 모델 ID는 안정적인 제품입니다. 품질과 가용성을 위해 백엔드를 업그레이드하거나 변경할 수 있지만 고객 측 변경은 필요 없습니다. 응답에는 항상 호출한 모델 ID가 표시됩니다.
{
"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은 토큰당 미국 달러(문자열), input_per_million / output_per_million은 100만 토큰당 미국 달러입니다.
요청과 응답은 OpenAI 형식을 따릅니다: 텍스트와 이미지를 포함한 messages, tools / tool_choice, response_format, temperature, top_p, stop, max_tokens 또는 max_completion_tokens. 모든 응답에는 x-request-id 헤더가 있으니 지원 문의 시 알려 주세요.
max_tokens를 생략하면 모델의 최대 출력 길이가 적용됩니다.
stream: true를 설정하세요. 청크는 data: 줄로 전달되며 data: [DONE]으로 끝납니다. stream_options.include_usage를 추가하면 마지막 청크에서 토큰 사용량을 받을 수 있습니다.
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 ?? "");
}문자열 또는 배열 input, instructions, 함수 도구, text.format(JSON 스키마), 전체 스트리밍 이벤트 시퀀스(response.output_text.delta, response.completed 등)를 지원합니다.
const res = await client.responses.create({
model: "tokenapi-pro",
instructions: "Answer in one sentence.",
input: "What is a token?",
});
console.log(res.output_text);Anthropic SDK로 작성된 코드를 위한 엔드포인트입니다. system, 텍스트·이미지 블록, tool_use / tool_result가 포함된 tools, 스트리밍 이벤트를 지원합니다. 오류는 Anthropic 형식으로 반환됩니다.
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!" }],
});{
"error": {
"message": "The model 'nope' does not exist or is disabled.",
"type": "invalid_request_error",
"code": "model_not_found",
"param": null
}
}invalid_request_error잘못된 JSON, model/messages 누락 또는 지원하지 않는 파라미터.
invalid_api_keyAPI 키가 없거나 잘못되었거나 비활성화 또는 만료되었습니다.
insufficient_quota잔액이 이 요청의 최대 비용에 못 미치거나 키의 지출 한도에 도달했습니다. 충전하거나 max_tokens를 낮추세요.
model_not_allowed이 키는 다른 모델로만 제한되어 있습니다.
model_not_found알 수 없거나 비활성화된 모델 ID입니다. GET /v1/models로 유효한 ID를 확인하세요.
rate_limit_exceeded키별 분당 요청 수 한도를 초과했습니다. Retry-After 헤더의 시간 후 다시 시도하세요.
upstream_unavailable이 모델의 모든 백엔드 경로가 실패했습니다. 안전하게 재시도할 수 있습니다.
업스트림 실패는 오류를 반환하기 전에 다른 경로로 자동 재시도됩니다. 502는 모든 경로가 실패했다는 뜻이며 과금되지 않습니다.
max_tokens)을 잔액에서 확보합니다. 잔액이 부족하면 402를 반환하며 업스트림으로 보내지 않습니다.Retry-After와 함께 429를 반환합니다./v1/responses: previous_response_id(대신 전체 대화를 보내세요), web_search 같은 내장 도구, file_id 입력./v1/messages: 확장 사고 thinking과 cache_control은 무시됩니다.n > 1.