Skip to content

Providers

A provider is an external metadata source Stillwater queries for an artist's biography, genres, images, and external IDs. This page is the reference. For the behavior (priority, aggregation, refresh semantics), see providers in core concepts.

Capability matrix

The table below is generated from the provider definitions in the codebase. Don't edit it directly -- regenerate with make generate-docs after changes to the registry or any provider package.

Provider Tier Sign-up Rate limit Mirror Metadata fields Image types
MusicBrainz Free Not required 1/sec Yes Name, Sort name, Type, Gender, Disambiguation, Origin, Born, Formed, Died, Disbanded, Years active, Genres, Styles, Moods, Members, Aliases None
Wikipedia Free Not required 5/sec No Name, Biography, Years active, Origin, Genres, Members None
Fanart.tv Free key Sign up 3/sec No Image only thumb, fanart, logo, hdlogo, banner
TheAudioDB Freemium Sign up 30/min No Name, Gender, Origin, Biography, Genres, Styles, Moods, Born, Formed, Died, Disbanded, Aliases thumb, logo, widethumb, banner, fanart
Discogs Free key Sign up 1/sec, 1000/day No Name, Biography, Aliases, Members thumb
Last.fm Free key Sign up 5/sec No Name, Biography, Genres, Styles, Moods, Similar artists None
Wikidata Free Not required 5/sec No Name, Formed, Disbanded, Origin, Genres thumb, logo
Deezer Free Not required 5/sec No Name thumb
Genius Free key Sign up 5/sec No Name, Biography, Aliases None
Spotify Paid Sign up 5/sec No Name, Genres thumb

How the fallback chain works

For every field Stillwater can populate (name, biography, genres, thumb, fanart, ...) you set a per-field provider priority list. When that field needs to be populated:

  1. Stillwater walks the priority list from top to bottom.
  2. Providers that aren't available (no API key, disabled in settings, missing the right ID) are skipped.
  3. Providers that structurally cannot supply the field (e.g., MusicBrainz never returns biography text) are skipped.
  4. The first provider that returns a usable value populates the field -- with one important caveat below.

The lists are configured under Settings > Providers > Priorities. You can override the global list per library, so a classical-music library can prefer different sources than a regular library.

Per-field aggregation

Two kinds of fields behave differently in step 4 above:

  • First-match wins -- text fields like biography, name, sort name, born date, etc. The first non-empty answer wins; later providers in the list are not asked.
  • Aggregated -- tag fields (genres, styles, moods) and image fields (thumb, fanart, logo, banner). Every provider in the list is asked, and Stillwater merges the results -- preserving priority order so the most-trusted source's contribution sits first.

The split lets you pick "definitive" sources for some fields (MusicBrainz for sort name) while pooling diversity for others (genres from MusicBrainz + Last.fm + Discogs combined).

Image fetch protection

Image fields have one extra rule: a provider is only marked as "asked" when its image fetch actually attempted -- meaning either succeeded or returned a definitive "no images for this artist." Two scenarios skip the marker:

  • No usable ID. If a provider needs its own ID (Spotify needs a Spotify ID; Discogs needs a Discogs ID) and Stillwater doesn't have one yet, the call is skipped without marking the field as queried.
  • Transient failure. If the provider returned a timeout or 5xx, the call is treated as not-yet-tried.

In both cases, your existing artwork is preserved -- the orchestrator never blanks an image field on the strength of a transient outage. The next refresh will retry naturally.

Provider ID propagation

Most providers want their own ID, not a MusicBrainz ID. Stillwater stores every ID it learns and feeds them down the chain. As IDs are discovered (a MusicBrainz response often includes a discogs.com/artist/12345 link, for example), Stillwater extracts them and the next provider gets a real ID instead of an MBID it can't use. The discoveries also persist on the artist record, so the next refresh starts from a stronger position. You don't have to back-fill IDs by hand.

Auth tiers

Providers fall into four tiers:

Tier Meaning Sign-up required
Free No key needed at all No
Free key Free of charge but you sign up for an API key Yes
Freemium Free tier with rate limits; paid tiers for more headroom Yes
Paid Account is paid for Yes

Any keys you provide are encrypted at rest and scrubbed from logs. Set keys under Settings > Providers.

DuckDuckGo is a web image search adapter, not a metadata provider. It surfaces in the comparison view as an "I'll go look on the web" option for cases where curated providers don't have what you need. It runs only on demand, never as part of an automatic refresh.

Rate-limit awareness

Each provider has its own rate limit. The capability matrix above lists them. Stillwater's orchestrator caches each provider's full response within a single refresh -- so even if a provider appears in the priority list for many fields, it's only called once. This matters most for the tighter limits (AudioDB's free tier is 30 requests per minute; Discogs caps at 1000/day on a free key).

If you're driving heavy bulk evaluation, two knobs help: increase library scope to spread fetches over time, and stagger Fix-all runs rather than running multiple at once.

What to configure where

You want to Go to
Enable / disable a provider Settings > Providers
Set or update an API key Settings > Providers
Change priority for a field Settings > Providers > Priorities
Override priority for one library Settings > Libraries > (library) > Provider overrides
Enable a web image search adapter Settings > Providers > Web search providers