diegosouzapw/OmniRoute · error · Error
errorPayload.error || t("saveFailed")
Error message
errorPayload.error || t("saveFailed") What it means
Per-provider pricing save failure: saveProvider() PATCHes /api/pricing with the edited provider's pricing entry ([writeKey]: pricingData[writeKey]); on non-ok it reads the JSON body and throws errorPayload.error or the localized 'saveFailed'. It means that one provider's model pricing edits were rejected server-side (schema/validation or server error) and were not persisted.
Solutions
- Inspect the PATCH response error for the rejected pricing fields (per-model input/output rates)
- Verify pricingKey vs providerAlias mapping for split providers
- Correct the values and save the provider again
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at src/app/(dashboard)/dashboard/settings/components/PricingTab.tsx:335 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/6c156829c20b0c9c.
Report an issue: GitHub.
Appendix: source
Thrown at src/app/(dashboard)/dashboard/settings/components/PricingTab.tsx:335
setEditedProviders((previous) => new Set(previous).add(provider));
},
[]
);
const saveProvider = useCallback(
async (providerAlias: string, pricingKey?: string) => {
setSaving(true);
try {
const writeKey = pricingKey || providerAlias;
const response = await fetch("/api/pricing", {
method: "PATCH",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ [writeKey]: pricingData[writeKey] || {} }),
});
if (!response.ok) {
const errorPayload = (await response.json().catch(() => ({}))) as { error?: string };
throw new Error(errorPayload.error || t("saveFailed"));
}
setEditedProviders((previous) => {
const next = new Set(previous);
next.delete(writeKey);
return next;
});
await loadData();
showStatus("success", t("pricingSavedProvider", { provider: providerAlias.toUpperCase() }));
} catch (error: any) {
showStatus(
"error",
t("pricingSaveFailedWithReason", {
reason: error?.message || t("unknownError"),
})
);
} finally {
setSaving(false);View on GitHub (pinned to a179ffed5b)