diff --git a/open-sse/providers/registry/index.js b/open-sse/providers/registry/index.js index 7bfdd0d7..ba8a4c17 100644 --- a/open-sse/providers/registry/index.js +++ b/open-sse/providers/registry/index.js @@ -116,6 +116,7 @@ import p113 from "./morph.js"; // import p114 from "./devin-cli.js"; // import p104 from "./windsurf.js"; import p115 from "./poolside.js"; +import p116 from "./tokenrouter.js"; export default [ p0, @@ -233,4 +234,5 @@ export default [ // p114, // devin-cli — hidden, spawns local agent with shell/fs access // p104, // windsurf — hidden, no tool calling p115, + p116, ]; diff --git a/open-sse/providers/registry/tokenrouter.js b/open-sse/providers/registry/tokenrouter.js new file mode 100644 index 00000000..8c5bf49f --- /dev/null +++ b/open-sse/providers/registry/tokenrouter.js @@ -0,0 +1,156 @@ +export default { + id: "tokenrouter", + alias: "tokenrouter", + aliases: ["tr"], + uiAlias: "tokenrouter", + display: { + name: "TokenRouter", + icon: "hub", + color: "#0EA5E9", + textIcon: "TR", + website: "https://www.tokenrouter.com", + notice: { + text: "OpenAI-compatible gateway. 300+ models (OpenAI, Claude, Gemini, Qwen, DeepSeek, Kimi, GLM, dsb).", + apiKeyUrl: "https://www.tokenrouter.com", + }, + }, + category: "apikey", + transport: { + baseUrl: "https://api.tokenrouter.com/v1/chat/completions", + validateUrl: "https://api.tokenrouter.com/v1/models", + thinkingFormat: "openai", + }, + // Seed snapshot dari live /v1/models (118 entri, 2026-07-31). Catalogue terbaru + // di-fetch via modelsFetcher; id lain tetap diterima via passthroughModels. + models: [ + { id: "MiniMax-Hailuo-2.3", name: "Minimax Hailuo 2.3", kind: "video" }, + { id: "MiniMax-M3", name: "Minimax M3" }, + { id: "anthropic/claude-fable-5", name: "Claude Fable 5" }, + { id: "anthropic/claude-haiku-4.5", name: "Claude Haiku 4.5" }, + { id: "anthropic/claude-opus-4.5", name: "Claude Opus 4.5" }, + { id: "anthropic/claude-opus-4.6", name: "Claude Opus 4.6" }, + { id: "anthropic/claude-opus-4.7", name: "Claude Opus 4.7" }, + { id: "anthropic/claude-opus-4.7-fast", name: "Claude Opus 4.7 Fast" }, + { id: "anthropic/claude-opus-4.8", name: "Claude Opus 4.8" }, + { id: "anthropic/claude-opus-4.8-fast", name: "Claude Opus 4.8 Fast" }, + { id: "anthropic/claude-opus-5", name: "Claude Opus 5" }, + { id: "anthropic/claude-opus-5-fast", name: "Claude Opus 5 Fast" }, + { id: "anthropic/claude-sonnet-4", name: "Claude Sonnet 4" }, + { id: "anthropic/claude-sonnet-4.5", name: "Claude Sonnet 4.5" }, + { id: "anthropic/claude-sonnet-4.6", name: "Claude Sonnet 4.6" }, + { id: "anthropic/claude-sonnet-5", name: "Claude Sonnet 5" }, + { id: "bytedance-seed/seedream-4.5", name: "Seedream 4.5", kind: "image" }, + { id: "bytedance-seed/seedream-5.0-lite", name: "Seedream 5.0 Lite", kind: "image" }, + { id: "bytedance-seed/seedream-5.0-pro", name: "Seedream 5.0 Pro", kind: "image" }, + { id: "claude-haiku-4-5", name: "Claude Haiku 4 5" }, + { id: "claude-opus-4-8-m-aws", name: "Claude Opus 4 8 M Aws" }, + { id: "deepseek/deepseek-v3.2", name: "Deepseek V3.2" }, + { id: "deepseek/deepseek-v4-flash", name: "Deepseek V4 Flash" }, + { id: "deepseek/deepseek-v4-pro", name: "Deepseek V4 Pro" }, + { id: "ex/gpt-5.4", name: "Gpt 5.4" }, + { id: "google/gemini-2.5-flash-image", name: "Gemini 2.5 Flash Image" }, + { id: "google/gemini-3-flash-preview", name: "Gemini 3 Flash Preview" }, + { id: "google/gemini-3-pro-image-preview", name: "Gemini 3 Pro Image Preview" }, + { id: "google/gemini-3.1-flash-image-preview", name: "Gemini 3.1 Flash Image Preview" }, + { id: "google/gemini-3.1-flash-lite-image", name: "Gemini 3.1 Flash Lite Image" }, + { id: "google/gemini-3.1-pro-preview", name: "Gemini 3.1 Pro Preview" }, + { id: "google/gemini-3.5-flash", name: "Gemini 3.5 Flash" }, + { id: "google/gemini-3.5-flash-lite", name: "Gemini 3.5 Flash Lite" }, + { id: "google/gemini-3.6-flash", name: "Gemini 3.6 Flash" }, + { id: "google/gemini-embedding-2", name: "Gemini Embedding 2" }, + { id: "google/gemma-4-26b-a4b-it", name: "Gemma 4 26B A4B It" }, + { id: "happyhorse-1.0-t2v", name: "Happyhorse 1.0 T2V", kind: "video" }, + { id: "kling-3.0-turbo", name: "Kling 3.0 Turbo", kind: "video" }, + { id: "kling-v2-6", name: "Kling V2 6", kind: "video" }, + { id: "kling-v3", name: "Kling V3", kind: "video" }, + { id: "kling-v3-omni", name: "Kling V3 Omni", kind: "video" }, + { id: "microsoft/mai-image-2.5", name: "Mai Image 2.5" }, + { id: "minimax/minimax-m2-her", name: "Minimax M2 Her" }, + { id: "minimax/minimax-m2.1", name: "Minimax M2.1" }, + { id: "minimax/minimax-m2.1-highspeed", name: "Minimax M2.1 Highspeed" }, + { id: "minimax/minimax-m2.5", name: "Minimax M2.5" }, + { id: "minimax/minimax-m2.7", name: "Minimax M2.7" }, + { id: "minimax/minimax-m2.7-highspeed", name: "Minimax M2.7 Highspeed" }, + { id: "miromind/mirothinker-1-7-deepresearch", name: "Mirothinker 1 7 Deepresearch" }, + { id: "miromind/mirothinker-1-7-deepresearch-mini", name: "Mirothinker 1 7 Deepresearch Mini" }, + { id: "mistralai/devstral-2512", name: "Devstral 2512" }, + { id: "mistralai/mistral-medium-3-5", name: "Mistral Medium 3 5" }, + { id: "mistralai/mistral-small-2603", name: "Mistral Small 2603" }, + { id: "mistralai/voxtral-small-24b-2507", name: "Voxtral Small 24B 2507" }, + { id: "moonshotai/kimi-k2.5", name: "Kimi K2.5" }, + { id: "moonshotai/kimi-k2.6", name: "Kimi K2.6" }, + { id: "moonshotai/kimi-k2.7-code", name: "Kimi K2.7 Code" }, + { id: "moonshotai/kimi-k3", name: "Kimi K3" }, + { id: "moonshotai/kimi-k3-free", name: "Kimi K3 Free" }, + { id: "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free", name: "Nemotron 3 Nano Omni 30B A3B Reasoning:Free" }, + { id: "nvidia/nemotron-3-super-120b-a12b", name: "Nemotron 3 Super 120B A12B" }, + { id: "openai/gpt-4o-mini", name: "Gpt 4O Mini" }, + { id: "openai/gpt-5", name: "Gpt 5" }, + { id: "openai/gpt-5-image", name: "Gpt 5 Image" }, + { id: "openai/gpt-5-image-mini", name: "Gpt 5 Image Mini" }, + { id: "openai/gpt-5-mini", name: "Gpt 5 Mini" }, + { id: "openai/gpt-5.2", name: "Gpt 5.2" }, + { id: "openai/gpt-5.4", name: "Gpt 5.4" }, + { id: "openai/gpt-5.4-image-2", name: "Gpt 5.4 Image 2", kind: "image" }, + { id: "openai/gpt-5.4-mini", name: "Gpt 5.4 Mini" }, + { id: "openai/gpt-5.4-nano", name: "Gpt 5.4 Nano" }, + { id: "openai/gpt-5.4-pro", name: "Gpt 5.4 Pro" }, + { id: "openai/gpt-5.5", name: "Gpt 5.5" }, + { id: "openai/gpt-5.5-pro", name: "Gpt 5.5 Pro" }, + { id: "openai/gpt-5.6-luna", name: "Gpt 5.6 Luna" }, + { id: "openai/gpt-5.6-sol", name: "Gpt 5.6 Sol" }, + { id: "openai/gpt-5.6-terra", name: "Gpt 5.6 Terra" }, + { id: "openai/gpt-audio", name: "Gpt Audio", kind: "audio" }, + { id: "openai/gpt-audio-mini", name: "Gpt Audio Mini", kind: "audio" }, + { id: "openai/gpt-oss-120b", name: "Gpt Oss 120B" }, + { id: "qwen/qwen3-coder-next", name: "Qwen3 Coder Next" }, + { id: "qwen/qwen3.5-122b-a10b", name: "Qwen3.5 122B A10B" }, + { id: "qwen/qwen3.5-35b-a3b", name: "Qwen3.5 35B A3B" }, + { id: "qwen/qwen3.5-397b-a17b", name: "Qwen3.5 397B A17B" }, + { id: "qwen/qwen3.5-9b", name: "Qwen3.5 9B" }, + { id: "qwen/qwen3.5-flash", name: "Qwen3.5 Flash" }, + { id: "qwen/qwen3.5-plus-02-15", name: "Qwen3.5 Plus 02 15" }, + { id: "qwen/qwen3.6-plus", name: "Qwen3.6 Plus" }, + { id: "qwen/qwen3.7-max", name: "Qwen3.7 Max" }, + { id: "qwen/qwen3.7-plus", name: "Qwen3.7 Plus" }, + { id: "qwen3.5-omni-plus", name: "Qwen3.5 Omni Plus" }, + { id: "qwen3.6-flash", name: "Qwen3.6 Flash" }, + { id: "sakana/fugu-ultra", name: "Fugu Ultra" }, + { id: "seed-2-0-code-preview-260328", name: "Seed 2 0 Code Preview 260328" }, + { id: "seed-2-0-lite-260428", name: "Seed 2 0 Lite 260428" }, + { id: "seed-2-0-mini-260428", name: "Seed 2 0 Mini 260428" }, + { id: "seed-2-0-pro-260328", name: "Seed 2 0 Pro 260328" }, + { id: "stepfun/step-3.5-flash", name: "Step 3.5 Flash" }, + { id: "stepfun/step-3.7-flash", name: "Step 3.7 Flash" }, + { id: "tencent/hy3-preview", name: "Hy3 Preview" }, + { id: "x-ai/grok-4.1-fast", name: "Grok 4.1 Fast" }, + { id: "x-ai/grok-4.20-beta", name: "Grok 4.20 Beta" }, + { id: "x-ai/grok-4.3", name: "Grok 4.3" }, + { id: "x-ai/grok-4.5", name: "Grok 4.5" }, + { id: "x-ai/grok-build-0.1", name: "Grok Build 0.1" }, + { id: "xiaomi/mimo-v2-flash", name: "Mimo V2 Flash" }, + { id: "xiaomi/mimo-v2-omni", name: "Mimo V2 Omni" }, + { id: "xiaomi/mimo-v2-pro", name: "Mimo V2 Pro" }, + { id: "xiaomi/mimo-v2.5", name: "Mimo V2.5" }, + { id: "xiaomi/mimo-v2.5-pro", name: "Mimo V2.5 Pro" }, + { id: "z-ai/glm-4.5-air", name: "Glm 4.5 Air" }, + { id: "z-ai/glm-4.6", name: "Glm 4.6" }, + { id: "z-ai/glm-4.6v", name: "Glm 4.6V" }, + { id: "z-ai/glm-4.7", name: "Glm 4.7" }, + { id: "z-ai/glm-5", name: "Glm 5" }, + { id: "z-ai/glm-5-turbo", name: "Glm 5 Turbo" }, + { id: "z-ai/glm-5.1", name: "Glm 5.1" }, + { id: "z-ai/glm-5.2", name: "Glm 5.2" }, + ], + serviceKinds: ["llm", "embedding", "image"], + embeddingConfig: { + baseUrl: "https://api.tokenrouter.com/v1/embeddings", + authType: "apikey", + authHeader: "bearer", + }, + imageConfig: { + baseUrl: "https://api.tokenrouter.com/v1/images/generations", + }, + modelsFetcher: { url: "https://api.tokenrouter.com/v1/models", type: "openai" }, + passthroughModels: true, +};