Anmelden Registrieren

API-Dokumentation

Kostenlose, öffentliche API für Genre- und Band-Daten aus MetalDB. Read-only, JSON, keine versteckten Kosten. Einen Key bekommst du in wenigen Sekunden im Entwickler-Bereich.

Quickstart

Jeder Request braucht einen API-Key im Header X-API-Key. Key erstellen dauert eine Minute im Entwickler-Bereich, dann direkt loslegen:

curl -H "X-API-Key: mdb_dein_key_hier" \ https://metaldb.org/api/v1/genres

Antwort (gekürzt):

{ "data": [ { "slug": "black-metal", "name": "Black Metal", "tag": "black metal" }, { "slug": "death-metal", "name": "Death Metal", "tag": "death metal" } // ... ], "meta": { "count": 314 } }

Authentifizierung

Jeder Endpoint (außer der Root-Route) verlangt den Header X-API-Key mit einem gültigen, aktiven Key. Fehlt er oder ist er ungültig/widerrufen, kommt ein 401 mit Fehlercode missing_api_key bzw. invalid_api_key.

Keys werden bei uns nur als Hash gespeichert und sind nach der Erstellung nur einmal im Klartext sichtbar. Verliert sich ein Key, einfach im Entwickler-Bereich widerrufen und einen neuen erstellen.

Antwortformat

Alle erfolgreichen Antworten haben die Form {"data": ...}, teils ergänzt um "meta" mit zusätzlichen Infos (z.B. Anzahl der Ergebnisse). Fehler sehen immer so aus:

{ "error": { "code": "artist_not_found", "message": "Keine Band mit dieser MusicBrainz-ID gefunden." } }

Es werden nie Stacktraces, Datenbankfehler oder interne Pfade zurückgegeben – nur dieser feste Fehler-Umschlag.

Endpoints

GET /api/v1/genres 120 / Stunde

Liste aller 300+ Metal-Subgenres, die MetalDB kennt.

Antwort

{ "data": [{ "slug", "name", "tag" }], "meta": { "count" } }
GET /api/v1/genres/<slug> 120 / Stunde

Details zu einem einzelnen Genre inkl. verwandter Genres (aus dem Genre-Graphen berechnet). slug z.B. black-metal.

Antwort

{ "data": { "slug", "name", "band_count", "related_genres": [{ "slug", "name" }] } }
GET /api/v1/genre-graph 30 / Stunde

Der komplette Genre-Beziehungsgraph als Knoten/Kanten-Struktur. Niedrigeres Limit, da teuerster Endpoint – am besten lokal cachen statt oft neu abzufragen.

Antwort

{ "data": { "nodes": [{ "id", "count" }], "edges": [{ "source", "target", "weight" }] } }
GET /api/v1/artists/<mbid> 200 / Stunde

Basis-Metadaten einer Band anhand ihrer MusicBrainz-ID. Nur öffentliche Musik-Metadaten – keine Kommentare, Ratings oder sonstige Nutzerdaten.

Antwort

{ "data": { "musicbrainz_id", "name", "country", "genres": [{ "slug", "name" }] } }
GET /api/v1/insights 60 / Stunde

Aggregierte Statistiken über die gesamte Datenbank: häufigste Genres, überraschende Genre-Kombinationen, produktivste Bands, Alben pro Jahrzehnt.

Antwort

{ "data": { "total_bands", "total_genres_tracked", "top_genres": [{ "genre", "count" }], "top_genre_pairs": [{ "genre_a", "genre_b", "weight" }], "surprising_genre_pairs": [{ "genre_a", "genre_b", "weight" }], "most_prolific_bands": [{ "artist_id", "name", "count" }], "albums_by_decade": [{ "decade", "count" }] } }

Fehlercodes

StatusCodeBedeutung
401missing_api_keyHeader X-API-Key fehlt komplett.
401invalid_api_keyKey existiert nicht oder wurde widerrufen.
404genre_not_foundUnbekannter Genre-Slug.
404artist_not_foundKeine Band mit dieser MusicBrainz-ID.
404not_foundEndpoint existiert nicht.
429rate_limitedRate-Limit für diesen Key/diese IP erreicht.
500internal_errorServerfehler bei uns – wurde geloggt, kein Verschulden deinerseits.

Rate-Limits

Jeder Endpoint hat sein eigenes Limit pro API-Key (siehe Tabelle oben bei den Endpoints). Zusätzlich gilt ein globales IP-Limit als zweite Sicherheitsschicht. Wird ein Limit überschritten, kommt 429 – einfach kurz warten und erneut versuchen, kein Grund zur Sorge bei normaler Nutzung.

Falls dein Projekt regelmäßig mehr braucht als die Standard-Limits hergeben, meld dich einfach – wir schauen uns das gerne individuell an.

Nutzungsbedingungen

  • Kostenlos für alle Zwecke – privat, akademisch, kommerziell. Kein Zahlungsmodell, keine versteckten Stufen.
  • Attribution erwünscht – wenn du MetalDB-Daten in einem öffentlichen Projekt nutzt, freuen wir uns über einen Hinweis/Link zu metaldb.org. Verpflichtend ist es nicht, aber es hilft uns, dass die Daten aktuell gehalten und die API weiter ausgebaut wird.
  • Kein Massen-Weiterverkauf der Rohdaten – die API ist zum Bauen eigener Anwendungen gedacht, nicht dazu, unseren gesamten Datenbestand zu kopieren und als eigenes Produkt weiterzuverkaufen. Bei Unsicherheit: einfach kurz nachfragen.
  • Keys sind persönlich – nicht öffentlich teilen (z.B. in Client-seitigem JS oder GitHub-Repos committen). Ein kompromittierter Key lässt sich jederzeit im Entwickler-Bereich widerrufen.
  • Keine Garantie auf Verfügbarkeit – MetalDB ist ein Community-Projekt, kein SLA-gestützter Enterprise-Dienst. Wir bemühen uns um Stabilität, können sie aber nicht vertraglich zusichern.
  • Missbrauch führt zum Widerruf – exzessive Nutzung außerhalb der Rate-Limits, Versuche die Limits zu umgehen, oder Nutzung für Spam/Scraping-Zwecke führen zur Sperrung des Keys ohne Vorwarnung.

Fehler melden