Skip to main content

Error Semantics

Dash API error format:

{ "code": "<string>", "message": "<string>" }

Common

HTTPcodeDescription
400invalid_requestInvalid request shape or fields
400invalid_idInvalid path ID
400no_fieldsPATCH request has no updatable fields
401unauthorizedAuthentication failed
403forbiddenRequest is recognized but not allowed
404not_foundResource does not exist
409conflict codeState conflict
413body_too_largeRequest body is too large
429rate_limitedLogin requests exceeded the rate-limit window
503db_errorDatabase read or write failed
503redis_cache_errorRedis cache sync failed

Authentication

HTTPcodeDescription
400invalid_jsonLogin request body is not valid JSON
400invalid_persistenceLogin persistence is not session or persistent
400invalid_sessionSession ID is empty
500auth_errorAuthentication operation failed
503auth_unavailableSession storage is temporarily unavailable

Node Management

codeDescription
invalid_nameNode name is outside 1–64 characters or contains control characters
invalid_display_orderDisplay order is not positive
invalid_traffic_cycle_modeInvalid node billing cycle mode
invalid_traffic_cycle_settingsNode billing cycle fields do not match the selected mode
invalid_traffic_billing_start_dayBilling day is outside 1..31
invalid_traffic_billing_anchor_dateInvalid billing anchor date
invalid_traffic_billing_timezoneInvalid billing timezone
invalid_traffic_direction_modeInvalid node traffic direction mode
invalid_tagsInvalid tags, more than 32 items, or an item over 64 characters
invalid_secretNode secret is outside 8–128 characters
duplicate_secretNode secret already belongs to another node
invalid_group_idsInvalid group IDs
secret_collision_exhaustedRandom secret collision retries exhausted
secret_generation_failedSecret generation failed

Node Upgrade

HTTPcodeDescription
409node_version_unavailableBundled node version is unavailable
409invalid_node_versionBundled node version is invalid
409node_upgrade_unsupportedCurrent node version is below 0.2.3 and does not support automatic update delivery
409node_platform_unknownNode platform is unknown
409node_platform_unsupportedNode platform is unsupported
409node_asset_missingMatching node asset is missing
503node_asset_errorUpgrade asset generation failed
503node_upgrade_grant_errorLegacy temporary download grant generation failed

Traffic

HTTPcodeDescription
400invalid_fieldsInvalid traffic settings field
400billing_cycle_is_per_nodeA global settings request includes per-node cycle fields
409traffic_daily_requires_billingDaily traffic requires billing mode
409traffic_rebuild_requires_billingManual rebuild requires billing mode
409traffic_rebuild_runningA traffic rebuild task is already running
503traffic_rebuild_unavailableTraffic rebuild is unavailable

Alerts and Notifications

codeDescription
invalid_fieldsInvalid rule, mount, channel, or setting fields
not_logged_inTelegram MTProto is not logged in
login_state_errorTelegram MTProto login state is unavailable
channel_changedChannel config revision changed concurrently
notify_errorTest notification send failed

Themes

HTTPcodeDescription
400invalid_theme_packageInvalid theme package format
404not_foundTheme does not exist
500theme_storage_unavailableTheme directory read, write, or deletion failed
500theme_unavailableBuilt-in theme catalog is unavailable
503theme_unavailableActive theme validation is unavailable

Theme lists can return theme_active_missing or theme_active_broken warning states.

Dash Update

HTTPcodeDescription
400invalid_fieldsInvalid update action, channel, language, or plan fields
409dash_update_currentA normal update target equals the current version
502dash_update_check_failedRelease-source check failed or timed out
503dash_update_failedUpdate preparation or task start failed
503dash_update_unavailableInstall layout or recovery state prevents managed update

When a task is already running, POST /api/admin/system/dash-update/run returns 409 with the current status resource rather than a JSON error wrapper.

Task failure_code may include install_changed, recovery_required, or rolled_back; these are status fields, not HTTP error wrapper codes.