Repository Analysis

QuantumNous/new-api

A unified AI model hub for aggregation & distribution. It supports cross-converting various LLMs into OpenAI-compatible, Claude-compatible, or Gemini-compatible formats. A centralized gateway for personal and enterprise model management. 🍥

0.6 Likely human-written View on GitHub
0.6
Adjusted Score
0.6
Raw Score
100%
Time Factor
2026-05-29
Last Push
36,166
Stars
Go
Language
476,043
Lines of Code
1957
Files
218
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 0HIGH 12MEDIUM 3LOW 203

Pattern Findings

218 matches across 7 categories. Click a row to expand file-level details.

Hyper-Verbose Identifiers156 hits · 158 pts
SeverityFileLineSnippet
LOW…rc/components/table/usage-logs/UsageLogsColumnDefs.jsx69function buildChannelAffinityTooltip(affinity, t) {
LOW…rc/components/table/usage-logs/UsageLogsColumnDefs.jsx390function renderCompactDetailSummary(summarySegments) {
LOW…omponents/table/channels/modals/statusCodeRiskGuard.js32function parseStatusCodeMappingTarget(rawValue) {
LOW…omponents/table/channels/modals/statusCodeRiskGuard.js47export function collectInvalidStatusCodeEntries(statusCodeMappingStr) {
LOW…omponents/table/channels/modals/statusCodeRiskGuard.js78export function collectDisallowedStatusCodeRedirects(statusCodeMappingStr) {
LOW…omponents/table/channels/modals/statusCodeRiskGuard.js116export function collectNewDisallowedStatusCodeRedirects(
LOW…ages/Setting/Operation/SettingsSidebarModulesAdmin.jsx36export default function SettingsSidebarModulesAdmin(props) {
LOW…c/pages/Setting/Operation/SettingsHeaderNavModules.jsx54 function handleHeaderNavModuleChange(moduleKey) {
LOW…/pages/Setting/Personal/SettingsSidebarModulesUser.jsx40export default function SettingsSidebarModulesUser() {
LOW…/pages/Setting/Payment/SettingsPaymentGatewayCreem.jsx39export default function SettingsPaymentGatewayCreem(props) {
LOW…Setting/Payment/SettingsPaymentGatewayWaffoPancake.jsx37export default function SettingsPaymentGatewayWaffoPancake(props) {
LOW…/pages/Setting/Payment/SettingsPaymentGatewayWaffo.jsx46export default function SettingsPaymentGatewayWaffo(props) {
LOW…/classic/src/pages/Setting/Ratio/UpstreamRatioSync.jsx347 function isSelectableUpstreamValue(value) {
LOW…/src/pages/Setting/Ratio/ModelSettingsVisualEditor.jsx23export default function ModelSettingsVisualEditor(props) {
LOW…pages/Setting/Ratio/components/TieredPricingEditor.jsx125function createDefaultVisualConfig() {
LOW…pages/Setting/Ratio/components/TieredPricingEditor.jsx162function generateExprFromVisualConfig(config) {
LOW…pages/Setting/Ratio/components/TieredPricingEditor.jsx923function CacheTokenEstimatorInputs({
LOW…s/Setting/Ratio/components/GroupSpecialUsableRules.jsx91export function serializeGroupSpecialUsable(rules) {
LOW…/src/pages/Setting/Ratio/components/requestRuleExpr.js81export function getRequestRuleMatchOptions(source, t) {
LOW…/src/pages/Setting/Ratio/components/requestRuleExpr.js226function buildRequestConditionExpr(cond) {
LOW…/src/pages/Setting/Ratio/components/requestRuleExpr.js417export function splitBillingExprAndRequestRules(expr) {
LOW…ages/Setting/Ratio/hooks/useModelPricingEditorState.js621export function useModelPricingEditorState({
LOWweb/classic/src/helpers/passkey.js46export function prepareCredentialCreationOptions(payload) {
LOWweb/classic/src/helpers/passkey.js81export function prepareCredentialRequestOptions(payload) {
LOWweb/classic/src/helpers/render.jsx998export function renderQuotaNumberWithDigit(num, digits = 2) {
LOWweb/classic/src/helpers/render.jsx1213function resolveBillingDisplayMode(displayMode, modelPrice = -1) {
LOWweb/classic/src/helpers/render.jsx1227function shouldUseRatioBillingProcess(modelPrice = -1) {
LOWweb/classic/src/helpers/render.jsx1231function formatCompactDisplayPrice(usdAmount, digits = 6) {
LOWweb/classic/src/helpers/render.jsx1264function renderDisplayAmountFromUsd(usdAmount, digits = 6) {
LOWweb/classic/src/helpers/render.jsx1268function formatBillingDisplayPrice(usdAmount, rate, digits = 6) {
LOWweb/classic/src/helpers/render.jsx2355export function renderTieredModelPriceSimple(opts) {
LOWweb/classic/src/helpers/render.jsx3296export function rehypeSplitWordsIntoSpans(options = {}) {
LOWweb/classic/src/helpers/utils.jsx61export function getUserIdFromLocalStorage() {
LOWweb/classic/src/helpers/token.js105export function encodeChannelConnectionString(key, url) {
LOWweb/classic/src/helpers/token.js117export function parseChannelConnectionString(text) {
LOWweb/classic/src/helpers/subscriptionFormat.js1export function formatSubscriptionDuration(plan, t) {
LOWweb/classic/src/helpers/subscriptionFormat.js20export function formatSubscriptionResetPeriod(plan, t) {
LOWweb/classic/src/helpers/secureApiCall.js30export function isVerificationRequiredError(error) {
LOW…b/default/src/context/theme-customization-provider.tsx96export function ThemeCustomizationProvider(props: {
LOW…age-logs/components/compact-date-time-range-picker.tsx49export function CompactDateTimeRangePicker({
LOWweb/default/src/features/usage-logs/lib/format.ts59export function getParamOverrideActionLabel(
LOWweb/default/src/features/usage-logs/lib/format.ts122export function getFirstResponseTimeColor(
LOW…default/src/features/playground/lib/payload-builder.ts30export function buildChatCompletionPayload(
LOW…b/default/src/features/playground/lib/message-utils.ts48export function updateCurrentVersionContent(
LOW…b/default/src/features/playground/lib/message-utils.ts73export function createLoadingAssistantMessage(): Message {
LOW…b/default/src/features/playground/lib/message-utils.ts219export function updateAssistantMessageWithError(
LOW…b/default/src/features/playground/lib/message-utils.ts244export function updateLastAssistantMessage(
LOW…/src/features/auth/sign-up/components/sign-up-form.tsx188 async function handleSendVerificationCode() {
LOWweb/default/src/features/auth/passkey/api.ts36export async function finishPasskeyRegistration(
LOWweb/default/src/features/auth/passkey/api.ts79export async function finishPasskeyVerification(
LOWweb/default/src/features/auth/lib/oauth.ts35export function getAvailableOAuthProviders(
LOWweb/default/src/features/models/api.ts323export async function testDeploymentConnectionWithKey(
LOWweb/default/src/features/models/api.ts404export async function getDeploymentContainerDetails(
LOWweb/default/src/features/models/api.ts623export async function checkClusterNameAvailability(name: string): Promise<{
LOWweb/default/src/features/models/constants.ts105export function getDeploymentStatusOptions(t: TFunction) {
LOWweb/default/src/features/models/constants.ts117export function getDeploymentStatusConfig(t: TFunction): Record<
LOW…components/dialogs/prefill-group-management-dialog.tsx85export function PrefillGroupManagementDialog({
LOW…features/models/hooks/use-model-deployment-settings.ts54export function useModelDeploymentSettings() {
LOWweb/default/src/features/models/lib/model-form.ts71export function transformModelToFormDefaults(model: Model): ModelFormValues {
LOWweb/default/src/features/models/lib/model-form.ts91export function transformFormDataToModelPayload(
96 more matches not shown…
Magic Placeholder Names12 hits · 60 pts
SeverityFileLineSnippet
HIGH…/src/features/pricing/components/model-details-api.tsx128 ` api_key="<YOUR_API_KEY>",`,
HIGH…/src/features/pricing/components/model-details-api.tsx128 ` api_key="<YOUR_API_KEY>",`,
HIGH…/src/features/pricing/components/model-details-api.tsx195 ` api_key="<YOUR_API_KEY>",`,
HIGH…/src/features/pricing/components/model-details-api.tsx195 ` api_key="<YOUR_API_KEY>",`,
HIGH…/src/features/pricing/components/model-details-api.tsx265 `genai.configure(api_key="<YOUR_API_KEY>")`,
HIGH…/src/features/pricing/components/model-details-api.tsx265 `genai.configure(api_key="<YOUR_API_KEY>")`,
HIGH…/src/features/pricing/components/model-details-api.tsx315 `client = OpenAI(base_url="${ctx.baseUrl}/v1", api_key="<YOUR_API_KEY>")`,
HIGH…/src/features/pricing/components/model-details-api.tsx315 `client = OpenAI(base_url="${ctx.baseUrl}/v1", api_key="<YOUR_API_KEY>")`,
HIGH…/src/features/pricing/components/model-details-api.tsx381 `client = OpenAI(base_url="${ctx.baseUrl}/v1", api_key="<YOUR_API_KEY>")`,
HIGH…/src/features/pricing/components/model-details-api.tsx381 `client = OpenAI(base_url="${ctx.baseUrl}/v1", api_key="<YOUR_API_KEY>")`,
HIGH…/src/features/pricing/components/model-details-api.tsx549 {'<YOUR_API_KEY>'}
HIGH…/src/features/pricing/components/model-details-api.tsx549 {'<YOUR_API_KEY>'}
Over-Commented Block41 hits · 41 pts
SeverityFileLineSnippet
LOWdocker-compose.dev.yml1# Frontend Development - Backend built from local source
LOWdocker-compose.yml1# New-API Docker Compose Configuration
LOWdocker-compose.yml81# restart: always
LOW…fault/src/features/system-settings/models/constants.ts21// ---------------------------------------------------------------------------
LOWweb/default/src/features/pricing/lib/model-metadata.ts21
LOWweb/default/src/features/pricing/lib/mock-stats.ts21 hashStringToSeed,
LOWcontroller/swag_video.go1package controller
LOWcontroller/swag_video.go21// @Failure 500 {object} dto.OpenAIError "服务器内部错误"
LOWcontroller/swag_video.go41}
LOWcontroller/swag_video.go81 Pan float64 `json:"pan,omitempty" example:"0"`
LOWcontroller/swag_video.go121// @Tags Origin
LOWcontroller/topup_stripe.go321 if err != nil {
LOWmodel/user.go741// }
LOWservice/error.go41// text = "请求上游地址失败"
LOWservice/usage_helpr.go1package service
LOWservice/channel_select.go41 *p.Retry++
LOWservice/channel_select.go61// 使用 ContextKeyAutoGroupRetryIndex 跟踪当前分组开始时的全局重试次数。
LOWsetting/sensitive.go41//func ShouldCheckCompletionSensitive() bool {
LOWrelay/channel/adapter.go41 // EstimateBilling returns OtherRatios for pre-charge based on user request.
LOWrelay/channel/claude/dto.go1package claude
LOWrelay/channel/claude/dto.go21// Input any `json:"input,omitempty"`
LOWrelay/channel/claude/dto.go41//}
LOWrelay/channel/claude/dto.go61// Stream bool `json:"stream,omitempty"`
LOWrelay/channel/claude/dto.go81// Completion string `json:"completion"`
LOWrelay/channel/jimeng/sign.go21
LOWrelay/channel/volcengine/adaptor.go121 // for key, values := range formData {
LOWrelay/channel/volcengine/adaptor.go141 // for fieldName, files := range c.Request.MultipartForm.File {
LOWrelay/channel/volcengine/adaptor.go161 // defer file.Close()
LOWrelay/channel/volcengine/adaptor.go181 // }
LOWrelay/channel/volcengine/adaptor.go201 //
LOWrelay/channel/xai/dto.go21 // Size string `json:"size,omitempty"`
LOWrelay/channel/zhipu_4v/dto.go1package zhipu_4v
LOWrelay/channel/zhipu_4v/dto.go21// Temperature float64 `json:"temperature,omitempty"`
LOWrelay/channel/tencent/dto.go1package tencent
LOWrelay/channel/tencent/dto.go21 Messages []*TencentMessage `json:"Messages"`
LOWrelay/channel/openai/chat_via_responses.go161
LOWrelay/channel/openai/chat_via_responses.go341
LOWrelay/channel/openai/adaptor.go61 // }
LOWrelay/channel/ali/adaptor.go161 // docs: https://bailian.console.aliyun.com/?tab=api#/api/?type=model&url=2712216
LOWrelay/common/override.go661 return jsonNum < targetNum, nil
LOWrelay/common/outbound_body.go1package common
Decorative Section Separators3 hits · 9 pts
SeverityFileLineSnippet
MEDIUMrelay/channel/adapter.go39 // ── Billing ──────────────────────────────────────────────────────
MEDIUMrelay/channel/adapter.go63 // ── Request / Response ───────────────────────────────────────────
MEDIUMrelay/channel/adapter.go75 // ── Polling ──────────────────────────────────────────────────────
Verbosity Indicators4 hits · 6 pts
SeverityFileLineSnippet
LOW…features/models/hooks/use-model-deployment-settings.ts73 // Step 1: Fetch settings first (usually fast)
LOW…features/models/hooks/use-model-deployment-settings.ts89 // Step 2: Check connection (check cache first)
LOWservice/token_counter.go151 // Step 1: fit within 2048x2048 square
LOWservice/token_counter.go160 // Step 2: scale so that shortest side is exactly 768
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippet
LOWdocker-compose.dev.yml3# Usage:
Slop Phrases1 hit · 2 pts
SeverityFileLineSnippet
LOWmodel/user.go22// User if you add sensitive fields, don't forget to clean them in setupLogin function.