From d139b4557f20f69d55010135905d55ed29fb0c75 Mon Sep 17 00:00:00 2001 From: Regis <92858615+Regis-RCR@users.noreply.github.com> Date: Mon, 16 Mar 2026 12:39:23 +0100 Subject: [PATCH] feat(api): add Synthetic as a new API key provider Add Synthetic (synthetic.new) as a privacy-focused LLM provider with OpenAI-compatible API, dynamic model catalog via /models endpoint, and passthrough model support. - Register provider in providerRegistry.ts with 6 initial models - Add APIKEY_PROVIDERS entry with verified_user icon (#6366F1) - Add models listing config for /api/providers/[id]/models endpoint - passthroughModels enabled for dynamic model catalog --- open-sse/config/providerRegistry.ts | 20 ++++++++++++++++++++ src/app/api/providers/[id]/models/route.ts | 8 ++++++++ src/shared/constants/providers.ts | 10 ++++++++++ 3 files changed, 38 insertions(+) diff --git a/open-sse/config/providerRegistry.ts b/open-sse/config/providerRegistry.ts index cd0f2b7959..531c111c4b 100644 --- a/open-sse/config/providerRegistry.ts +++ b/open-sse/config/providerRegistry.ts @@ -919,6 +919,26 @@ export const REGISTRY: Record = { ], }, + synthetic: { + id: "synthetic", + alias: "synthetic", + format: "openai", + executor: "default", + baseUrl: "https://api.synthetic.new/openai/v1/chat/completions", + modelsUrl: "https://api.synthetic.new/openai/v1/models", + authType: "apikey", + authHeader: "bearer", + models: [ + { id: "hf:nvidia/Kimi-K2.5-NVFP4", name: "Kimi K2.5 (NVFP4)" }, + { id: "hf:MiniMaxAI/MiniMax-M2.5", name: "MiniMax M2.5" }, + { id: "hf:zai-org/GLM-4.7-Flash", name: "GLM 4.7 Flash" }, + { id: "hf:zai-org/GLM-4.7", name: "GLM 4.7" }, + { id: "hf:moonshotai/Kimi-K2.5", name: "Kimi K2.5" }, + { id: "hf:deepseek-ai/DeepSeek-V3.2", name: "DeepSeek V3.2" }, + ], + passthroughModels: true, + }, + vertex: { id: "vertex", alias: "vertex", diff --git a/src/app/api/providers/[id]/models/route.ts b/src/app/api/providers/[id]/models/route.ts index 64b35b1288..216bafd0bc 100644 --- a/src/app/api/providers/[id]/models/route.ts +++ b/src/app/api/providers/[id]/models/route.ts @@ -255,6 +255,14 @@ const PROVIDER_MODELS_CONFIG: Record = { authPrefix: "Bearer ", parseResponse: (data) => data.models || data.data || [], }, + synthetic: { + url: "https://api.synthetic.new/openai/v1/models", + method: "GET", + headers: { "Content-Type": "application/json" }, + authHeader: "Authorization", + authPrefix: "Bearer ", + parseResponse: (data) => data.data || data.models || [], + }, }; /** diff --git a/src/shared/constants/providers.ts b/src/shared/constants/providers.ts index dd6ca4dcb8..53871bc490 100644 --- a/src/shared/constants/providers.ts +++ b/src/shared/constants/providers.ts @@ -360,6 +360,16 @@ export const APIKEY_PROVIDERS = { hasFree: true, freeNote: "Free Inference API for thousands of models (Whisper, VITS, SDXL…)", }, + synthetic: { + id: "synthetic", + alias: "synthetic", + name: "Synthetic", + icon: "verified_user", + color: "#6366F1", + textIcon: "SY", + website: "https://synthetic.new", + passthroughModels: true, + }, vertex: { id: "vertex", alias: "vertex",