diegosouzapw/OmniRoute · error
PAID_MODEL_TARGET_BLOCKED
PAID_MODEL_TARGET_BLOCKED
Error message
This field cannot target a paid-only model while 'Hide paid models' is enabled.
What it means
Error "This field cannot target a paid-only model while 'Hide paid models' is enabled." thrown in diegosouzapw/OmniRoute.
Source
Thrown at src/app/api/settings/route.ts:414
);
}
}
}
// #6540: reject a paid-only webSearchRouteModel target when hidePaidModels
// is on. Business-rule check (needs an async DB read), so it runs after
// Zod shape validation rather than as a Zod .refine(). Fails open on
// "unknown" (aliases/combo names) — only a positively-identified paid
// catalog entry is blocked.
if (typeof body.webSearchRouteModel === "string" && body.webSearchRouteModel.trim() !== "") {
const currentSettings = await getSettings();
if ((currentSettings as Record<string, unknown>)?.hidePaidModels === true) {
if (isPaidModelTarget(body.webSearchRouteModel) === "paid") {
emitSettingsFailureAudit(request, actor, "PAID_MODEL_TARGET_BLOCKED", attemptedKeys);
return NextResponse.json(
{
error: {
code: "PAID_MODEL_TARGET_BLOCKED",
message:
"This field cannot target a paid-only model while 'Hide paid models' is enabled.",
},
},
{ status: 400 }
);
}
}
}
// Password rotation: hash the new value AFTER the gate has accepted the
// currentPassword (or the cold-boot exception fired). The gate already
// included `newPassword` in SECURITY_IMPACTING_KEYS, so no separate
// verify happens here — strictly hashing + body rewriting.
if (body.newPassword) {
body.password = await hashManagementPassword(body.newPassword);
delete body.newPassword;
}View on GitHub (pinned to a179ffed5b)
When it happens
Trigger: Thrown at src/app/api/settings/route.ts:414 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of diegosouzapw/OmniRoute@a179ffed5b (2026-08-25).
Data as JSON: /api/errors/142e6c4fba53c694.
Report an issue: GitHub.