Model ids
How OpenToken model ids work — the {provider}/{model} format and how to list them.
Every model in OpenToken is named with a canonical {provider}/{model} id. You send the canonical id; OpenToken resolves it to the correct upstream model and routes the request.
Format
{provider}/{model}Both Google (google/…) and Anthropic (anthropic/…) models are registered. See Models for the full list with pricing, or call GET /v1/models for the live catalog.
Send the canonical id in the model field of a chat completion request:
from openai import OpenAI
client = OpenAI(
base_url="https://api.opentoken.kr/v1",
api_key="OPENTOKEN_API_KEY",
)
resp = client.chat.completions.create(
model="google/gemini-3-flash",
messages=[{"role": "user", "content": "Hello"}],
)
print(resp.choices[0].message.content)import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.opentoken.kr/v1",
apiKey: process.env.OPENTOKEN_API_KEY,
});
const resp = await client.chat.completions.create({
model: "google/gemini-3-flash",
messages: [{ role: "user", content: "Hello" }],
});
console.log(resp.choices[0].message.content);curl https://api.opentoken.kr/v1/chat/completions \
-H "Authorization: Bearer $OPENTOKEN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "google/gemini-3-flash",
"messages": [{"role": "user", "content": "Hello"}]
}'List available ids
GET /v1/models returns the registered ids in the OpenAI list shape:
curl https://api.opentoken.kr/v1/models \
-H "Authorization: Bearer $OPENTOKEN_API_KEY"Each entry carries its per-1M-token pricing (the same rates OpenToken bills at):
{
"object": "list",
"data": [
{
"id": "google/gemini-3-flash",
"object": "model",
"owned_by": "google",
"pricing": { "input": 0.5, "output": 3.0, "cache_read": 0.05, "cache_write": 0.5 }
},
{
"id": "anthropic/claude-sonnet-4-5",
"object": "model",
"owned_by": "anthropic",
"pricing": { "input": 3.0, "output": 15.0, "cache_read": 0.3, "cache_write": 3.75 }
}
]
}Unregistered ids
An id that is not registered returns 400 with model_not_found. This includes ids whose upstream model exists but is not exposed through OpenToken (for example openai/gpt-4o).
{
"error": {
"message": "model \"openai/gpt-4o\" not found",
"type": "invalid_request_error",
"code": "model_not_found"
}
}POST /v1/chat/completions, POST /v1/embeddings, and GET /v1/models.