From 7ba57634c16f60fa7a7a1c4fac483ad0fcbd9c5a Mon Sep 17 00:00:00 2001 From: diegosouzapw Date: Mon, 2 Mar 2026 18:46:48 -0300 Subject: [PATCH] feat: add blackbox.ai to dashboard frontend (#175) - Added blackbox provider to APIKEY_PROVIDERS in providers.ts - Added blackbox pricing entries in pricing.ts - Added blackbox to ProviderId typedef in types.ts - Added blackbox models endpoint config in models/route.ts --- package-lock.json | 12 ++++++++++++ src/app/api/providers/[id]/models/route.ts | 8 ++++++++ src/domain/types.ts | 2 +- src/shared/constants/pricing.ts | 10 ++++++++++ src/shared/constants/providers.ts | 9 +++++++++ 5 files changed, 40 insertions(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 3e7c423d15..0da9ce1d2b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6180,6 +6180,7 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, "hasInstallScript": true, "license": "MIT", "optional": true, @@ -8267,6 +8268,17 @@ } } }, + "node_modules/next-intl/node_modules/@swc/helpers": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.19.tgz", + "integrity": "sha512-QamiFeIK3txNjgUTNppE6MiG3p7TdninpZu0E0PbqVh1a9FNLT2FRhisaa4NcaX52XVhA5l7Pk58Ft7Sqi/2sA==", + "license": "Apache-2.0", + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^2.8.0" + } + }, "node_modules/next/node_modules/postcss": { "version": "8.4.31", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", diff --git a/src/app/api/providers/[id]/models/route.ts b/src/app/api/providers/[id]/models/route.ts index 4d273a96e7..e0ec35351b 100644 --- a/src/app/api/providers/[id]/models/route.ts +++ b/src/app/api/providers/[id]/models/route.ts @@ -143,6 +143,14 @@ const PROVIDER_MODELS_CONFIG = { authPrefix: "Bearer ", parseResponse: (data) => data.data || data.models || [], }, + blackbox: { + url: "https://api.blackbox.ai/v1/models", + method: "GET", + headers: { "Content-Type": "application/json" }, + authHeader: "Authorization", + authPrefix: "Bearer ", + parseResponse: (data) => data.data || data.models || [], + }, xai: { url: "https://api.x.ai/v1/models", method: "GET", diff --git a/src/domain/types.ts b/src/domain/types.ts index 980fcbd300..e3b942bb1d 100644 --- a/src/domain/types.ts +++ b/src/domain/types.ts @@ -8,7 +8,7 @@ */ /** - * @typedef {'openai'|'claude'|'gemini'|'codex'|'qwen'|'deepseek'|'cohere'|'groq'|'mistral'|'openrouter'} ProviderId + * @typedef {'openai'|'claude'|'gemini'|'codex'|'qwen'|'deepseek'|'cohere'|'groq'|'blackbox'|'mistral'|'openrouter'} ProviderId */ /** diff --git a/src/shared/constants/pricing.ts b/src/shared/constants/pricing.ts index 14a190903b..556ba9b4e9 100644 --- a/src/shared/constants/pricing.ts +++ b/src/shared/constants/pricing.ts @@ -528,6 +528,16 @@ export const DEFAULT_PRICING = { "qwen/qwen3-32b": { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 }, }, + // Blackbox AI + blackbox: { + "gpt-4o": { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 }, + "gemini-2.5-flash": { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 }, + "claude-sonnet-4": { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 }, + "deepseek-v3": { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 }, + blackboxai: { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 }, + "blackboxai-pro": { input: 0, output: 0, cached: 0, reasoning: 0, cache_creation: 0 }, + }, + // Fireworks fireworks: { "accounts/fireworks/models/gpt-oss-120b": { diff --git a/src/shared/constants/providers.ts b/src/shared/constants/providers.ts index 2494839748..4e17ff43b1 100644 --- a/src/shared/constants/providers.ts +++ b/src/shared/constants/providers.ts @@ -145,6 +145,15 @@ export const APIKEY_PROVIDERS = { textIcon: "GQ", website: "https://groq.com", }, + blackbox: { + id: "blackbox", + alias: "bb", + name: "Blackbox AI", + icon: "view_in_ar", + color: "#1A1A2E", + textIcon: "BB", + website: "https://blackbox.ai", + }, xai: { id: "xai", alias: "xai",