Dashboard Validation API
Validate dashboards against database schemas via the Semaphor API
Overview
The Dashboard Validation API checks dashboards against their actual database schemas to identify broken fields, invalid filters, missing connections, and other configuration issues. Use it to programmatically audit dashboard health.
Base path:
All endpoints require a Bearer token with project_id scope.
Example: Validate a Dashboard via API
1. Get a project token
2. Validate a dashboard
Expected Response:
Validate Single Dashboard
POST /dashboard/validate
- Validates a dashboard's fields, filters, joins, and resources against the database schema.
- The dashboard must belong to the same project as the token.
Request Body:
Required Fields:
dashboardId: The ID of the dashboard to validate
Optional Fields:
options: Validation options (all default totrueexceptmaxSuggestionsPerFieldwhich defaults to3)
Example Request:
Example Response:
Validate All Dashboards
POST /dashboard/validate-all
- Validates all dashboards in a project at once.
- Catches per-dashboard errors without failing the entire batch.
Request Body:
Optional Fields:
projectId: Defaults to the token's project. Returns 403 if it differs from the token's project.options: Same validation options as single validate.filter: Narrow which dashboards to validate.type:"organization"|"tenant"|"all"|"all-tenants"tenantId: Required whentypeis"tenant"
Example Request:
Example Response:
Validation Options Reference
| Option | Type | Default | Description |
|---|---|---|---|
validateFilters | boolean | true | Check dashboard filter fields against the schema |
validateJoins | boolean | true | Check join keys exist in their respective tables |
validateAIContext | boolean | true | Validate AI assistant context configuration |
validateAssistantProfile | boolean | true | Validate linked assistant profile exists |
validateLinkedVisuals | boolean | true | Check that linked saved visuals are valid |
includeAvailableColumns | boolean | true | Include list of available columns in error results |
includeSuggestions | boolean | true | Suggest closest matching column names for invalid fields |
maxSuggestionsPerField | number | 3 | Maximum number of column suggestions per invalid field |
Error Handling
400 Bad Request:
401 Unauthorized:
403 Forbidden:
404 Not Found:
500 Internal Server Error:
Notes
- All endpoints require authentication (Bearer token with
project_idscope) - All options default to
true-- passfalseto skip specific checks - Bulk validation handles dashboards without templates gracefully by marking them invalid
- Bulk validation catches per-dashboard errors without failing the entire batch
- When
includeSuggestionsis enabled, the response includes closest-matching column names for invalid fields - All timestamps are returned in ISO 8601 format