apache/superset · error · DashboardInvalidError
Dashboard parameters are invalid.
Error message
Dashboard parameters are invalid.
What it means
DashboardInvalidError raised in DashboardUpdateCommand.validate (update.py:134) when one or more collected ValidationError items accumulated during validation. The sources visible here are DashboardSlugExistsValidationError (slug uniqueness check failed: DashboardDAO.validate_update_slug_uniqueness returned false) and errors appended by compute_subjects / validate_tags (invalid email-like subjects or tag references). exceptions= carries the list so the payload enumerates each problem.
Source
Thrown at superset/commands/dashboard/update.py:134
try:
security_manager.raise_for_editorship(self._model)
except SupersetSecurityException as ex:
raise DashboardForbiddenError() from ex
# Validate slug uniqueness
if not DashboardDAO.validate_update_slug_uniqueness(self._model_id, slug):
exceptions.append(DashboardSlugExistsValidationError())
compute_subjects(self._model, self._properties, exceptions)
# validate tags
try:
validate_tags(ObjectType.dashboard, self._model.tags, tag_ids)
except ValidationError as ex:
exceptions.append(ex)
if exceptions:
raise DashboardInvalidError(exceptions=exceptions)
@staticmethod
def _send_deactivated_report_email(
report: ReportSchedule, description: str
) -> None:
html_content = textwrap.dedent(
f"""
<html>
<head>
<style type="text/css">
table, th, td {{
border-collapse: collapse;
border-color: rgb(200, 212, 227);
color: rgb(42, 63, 95);
padding: 4px 8px;
}}
.image{{
margin-bottom: 18px;View on GitHub (pinned to f4587218dd)
Solutions
- Read the exceptions array in the response — each entry names the failing field (slug, tags, subjects).
- Change or clear the slug: PUT with a unique slug value, or omit slug entirely if you do not intend to change it.
- Fix or drop the tags payload; verify ids via GET /api/v1/tag/.
- Fix embedded notification subjects (email addresses) in json_metadata if compute_subjects flagged them.
Example fix
# before
PUT /api/v1/dashboard/42
{"slug": "sales"} # already taken by dashboard 7
# -> DashboardInvalidError([DashboardSlugExistsValidationError])
# after
{"slug": "sales-q3"} Defensive patterns
Strategy: validation
Validate before calling
from superset.daos.dashboard import DashboardDAO
def update_payload_is_valid(model_id: int, slug, tag_ids) -> list:
problems = []
if slug is not None and not DashboardDAO.validate_update_slug_uniqueness(model_id, slug):
problems.append(f"slug '{slug}' already in use")
return problems Try / catch
from superset.commands.dashboard.exceptions import DashboardInvalidError
try:
UpdateDashboardCommand(model_id, properties).run()
except DashboardInvalidError as ex:
for exc in ex.exceptions: # enumerate each failing field for the form UI
highlight(exc.field or exc.normalized_name()) Prevention
- Pre-check slug uniqueness before save; omit 'slug' from the payload when not changing it.
- Validate tag ids exist (GET /api/v1/tag/) before submitting.
- Parse the exceptions list in the response — it names every failing field at once.
When it happens
Trigger: PUT /api/v1/dashboard/<id> with {"slug": "taken"} where another dashboard already uses that slug; or "tags" containing tag ids that do not exist / are not assignable; or metadata containing notification subjects that fail validation.
Common situations: Renaming a dashboard to a slug someone else took while editing; importing dashboards that collide on slug; referencing tag ids from a different environment; copy-pasting metadata JSON with stale entity ids.
Related errors
- Dashboard parameters are invalid.
- Dashboard %(dashboard_id)s not found
- Annotation parameters are invalid.
- Annotation layer parameters are invalid.
- Chart parameters are invalid.
AI-assisted analysis of apache/superset@f4587218dd (2026-08-14).
Data as JSON: /api/errors/456bbf18348d3698.
Report an issue: GitHub.