Crate’s runtime configuration is stored as key-value pairs in theDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/TheOutdoorProgrammer/crate/llms.txt
Use this file to discover all available pages before exploring further.
settings table of crate.db and is fully manageable via the API. Most settings can also be changed from the Settings UI; the API is useful for scripting configuration changes or integrating Crate into a larger automation setup. A companion endpoint renders a live naming-template preview using sample metadata so you can validate a template string before saving it.
Some keys are hidden — they can be set via environment variables at startup but are never returned by
GET /api/settings and are silently ignored by PUT /api/settings. Hidden keys are: slskd_url, slskd_api_key, library_path, scan_interval, download_format_preference, and min_bitrate. Configure these via environment variables (CRATE_SLSKD_URL, CRATE_SLSKD_API_KEY, CRATE_LIBRARY_PATH, CRATE_SCAN_INTERVAL) or from the Settings UI.Sensitive keys (navidrome_password, music_assistant_token) are returned as "••••••••" in GET responses. Sending that redacted placeholder back in a PUT is a no-op — the stored value is left unchanged.GET /api/settings/
Returns all non-hidden settings as a flat JSON object mapping string keys to string values. Response — object with string keys and string valuesThe name of the active default provider used for searches and browse operations (e.g.
"musicbrainz" or "deezer").How long provider API responses are cached, in hours (e.g.
"24").A JSON-encoded array of
QualityTier objects, each with format (string), min_bitrate (integer, 0 for lossless), and label (string). Tiers are evaluated in order — the first matching tier wins.Internal cursor used by the upgrade scanner. Stores the ID of the last artist scanned for quality upgrades. You can reset it to
"0" to restart the upgrade sweep from the beginning.Base URL for the Navidrome instance (e.g.
"http://navidrome:4533"). Leave blank to disable the Navidrome integration.Navidrome username used to authenticate the library rescan trigger.
Always returned as
"••••••••". Send the actual password in PUT to update it.How many days to keep entries in the activity log before they are purged (e.g.
"30").The folder/file layout template for organizing downloaded files. Empty string means the default (
{artist}/{album} ({year})/{track:2} - {title}). See naming tokens below.How long a user is temporarily blocked (shadow-banned) after going offline mid-transfer or stalling in queue. Expressed as a Go duration string, e.g.
"60m" (default). See Blocked Sources for more detail.Comma-separated list of keywords that cause a file to be skipped during auto-download scoring (e.g.
"acapella,instrumental,karaoke"). Manual search still shows matching files.PUT /api/settings/
Updates one or more settings. Send a partial JSON object — only the keys you include are updated; all others are left as-is. Hidden keys are silently ignored. The naming template is validated before any values are saved, so a bad template string will return a400 without writing anything.
Switch the active provider (e.g.
"deezer").New cache TTL in hours.
JSON-encoded array of
QualityTier objects. Each object must have a format string and optional min_bitrate integer and label string.Navidrome base URL, or empty string to disable the integration.
Navidrome username.
Navidrome password. Sending
"••••••••" (the redacted placeholder) is a no-op.Number of days to retain activity log entries.
New naming template. Must use only recognized tokens. Validated before saving; returns
400 if invalid.Go duration string for how long users are shadow-banned (e.g.
"30m", "2h").Comma-separated keywords to filter out during auto-download.
GET /api/settings/naming-preview
Validates a naming template and renders it using a fixed set of sample metadata so you can see exactly what the resulting path will look like. The sample data used is:| Field | Sample value |
|---|---|
| Artist | Radiohead |
| Album | OK Computer |
| Year | 1997 |
| Disc | 1 |
| Track | 6 |
| Title | Karma Police |
400 with an error message describing the problem. If the template query parameter is omitted or blank, the default template is used.
The naming template string to preview. Uses the same token syntax as the
naming_template setting.The rendered file path including the
.flac extension appended automatically, e.g. "Radiohead/OK Computer (1997)/06 - Karma Police.flac".Naming tokens
The following tokens are recognized in naming templates:| Token | Meaning |
|---|---|
{artist} / {albumartist} | Artist name (identical in Crate — tracks are always album-artist-based) |
{album} | Album title |
{year} | Album release year; renders empty and cleans up surrounding decoration when unknown |
{track} | Track number; zero-pad with a width specifier, e.g. {track:2} → 06 |
{disc} | Disc number; supports padding; renders empty when unknown |
{title} | Track title |
GET /api/providers
Returns the list of all configured provider plugins with their name, display name, version, and current health status. Thename field is what you use as the value for provider_primary in settings.
Response — array of provider objects
Internal provider name (e.g.
"musicbrainz", "deezer"). Used in settings and entity provider fields.Human-readable label shown in the UI.
Version string reported by the provider plugin.
true if the provider gRPC connection is up and responding. Artists and albums whose provider is unhealthy are shown as “orphaned” in the library.