Offene Daten
Öffentliche API
JSON über HTTPS unter /api/v1, nur lesend: das aktuelle Referenz-Release und die Datenplattform, kostenlos im offenen Tarif. Jede Ressource ist ohne Schlüssel verfügbar; ein Schlüssel erhöht das Ratenlimit und schaltet keine Daten frei.
Geprüft
Ressourcen
Alle Pfade sind relativ zur Website. Listen akzeptieren limit (1 bis 200, Standard 50) und cursor.
| Pfad | Was sie liefert |
|---|---|
GET /api/v1/releases | Angenommene Referenz-Releases mit Tag, Methodenversion, Erstellungsdatum, Prüfsumme und den signierten Downloads. |
GET /api/v1/releases/{tag} | Ein Release nach Tag. |
GET /api/v1/categories | Die Kategorien des aktuellen Release mit ihren Kriterien-IDs. |
GET /api/v1/categories/{id} | Eine Kategorie. |
GET /api/v1/criteria | Kriterien mit Name, Beschreibung, Standardgewicht und Bestwert. Filter mit category; method_version liest die Kriterien dieser Methodenversion. |
GET /api/v1/products | Produkte des aktuellen Release mit der Verfügbarkeitsliste der Referenz und den Angaben des Aufsichtsregisters. Filter mit category. |
GET /api/v1/products/{category}/{product} | Ein Produkt mit seiner Verfügbarkeit. |
GET /api/v1/products/{category}/{product}/history | Die Bewertungsstände eines Produkts in jedem angenommenen Release, ältester zuerst, mit den erfassten Punkteänderungen und ihren Gründen. |
GET /api/v1/ratings | Bewertungen nach der veröffentlichten Methodik: Gesamtwert unter der Standardgewichtung, Konfidenz und jeder Kriterienwert mit Begründung und Beleg-IDs. Mit release für ein früheres Release, mit category als Filter. |
GET /api/v1/ratings/{category}/{product} | Die Bewertung eines Produkts im aktuellen oder in einem benannten Release. |
GET /api/v1/glossary | Glossarbegriffe: der englische Haupttext und die veröffentlichten Übersetzungen. |
GET /api/v1/glossary/{id} | Ein Glossarbegriff. |
GET /api/v1/incidents | Souveränitätsvorfälle mit Daten, Rechtsräumen, Arten, betroffenen Geldformen und Quellen. Filter mit kind und jurisdiction. |
GET /api/v1/incidents/{id} | Ein Vorfall. |
GET /api/v1/series | Die Datenreihen, deren Quelllizenz die Weiterverbreitung erlaubt, mit Quelle, Lizenz und Quellenangabe. |
GET /api/v1/series/{id} | Eine Reihe mit ihren Beobachtungen: die neuesten Werte oder mit vintage die Werte nach damaligem Kenntnisstand; from und to begrenzen die Perioden. |
GET /api/v1/countries | Die Daten der Länderseiten: Zahl der Registerangaben, CBDC-Status, Bargeld-Index und Vorfall-IDs. |
GET /api/v1/countries/{code} | Ein Land nach ISO-Code. |
Reihen, deren Lizenz keine Weitergabe erlaubt, zeigt die Website, die API liefert sie nie aus.
Schnellstart
Senden Sie eine GET-Anfrage. Für den offenen Tarif braucht es weder Registrierung noch Schlüssel.
Beispielanfragen
curl -s https://whatthechain.org/api/v1/openapi.json
curl -s "https://whatthechain.org/api/v1/ratings?category=hardware-wallets&limit=20"
curl -s https://whatthechain.org/api/v1/products/hardware-wallets/<product>/history
curl -s "https://whatthechain.org/api/v1/series/<series-id>?vintage=2026-01-31T00:00:00Z"
curl -s -H 'If-None-Match: "<etag>"' https://whatthechain.org/api/v1/categoriesListen liefern eine Seite von Einträgen, sortiert nach ID. Für die nächste Seite übergeben Sie den Wert von pagination.next_cursor als Parameter cursor, bis er null ist.
Lizenzangaben in jeder Antwort
Jede Antwort enthält neben den Daten vier Felder: licence (Name und Link), attribution (der Text, der mit den Daten zu zeigen ist), release (Tag und Erstellungsdatum des Referenz-Release, aus dem gelesen wurde) und wording_notice.
Referenzdaten (Bewertungen, Methodik, Glossar, Vorfälle) stehen unter der Open-Data-Lizenz der Referenz-Releases, Creative Commons Namensnennung 4.0 International (CC BY 4.0). Das Feld licence nennt sie und verlinkt ihren Text.
Eine Datenreihe trägt Lizenz und Quellenangabe ihrer Quelle, wie das Quellenregister sie angibt. Reihen, deren Quelle keine Weiterverbreitung erlaubt, erscheinen nie in der API: Sie werden nur als Diagramme auf der Website gezeigt. Für Länderdaten gilt dieselbe Regel: Ein Wert, dessen Quelle keine Weiterverbreitung erlaubt, ist als withheld markiert.
Fehlende Werte sind null, nie 0. Ein nicht bewertetes Kriterium hat den Wert null.
Wie Bewertungen darzustellen sind
Bewertungen sind Messungen nach einer veröffentlichten Methodik, keine Beratung. Wer sie zeigt, schreibt „bewertet von WhatTheChain gemäß der veröffentlichten Methodik“, nennt Methodenversion und Release und verlinkt die Methodik.
Eine Bewertung darf nicht als Beratung, als Auswahl für bestimmte Leser oder als Aussage über künftige Preise dargestellt werden. Das Feld wording_notice in jeder Antwort wiederholt diese Pflicht.
Diese Bedingungen werden rechtlich geprüft und können sich ändern; es gilt die Fassung auf dieser Seite.
Caching, ETags und CORS
Jede erfolgreiche Antwort hat einen ETag. Senden Sie ihn als If-None-Match zurück, erhalten Sie 304 Not Modified ohne Inhalt, solange sich die Daten nicht geändert haben.
Aktuelle Daten sind fünf Minuten cachebar; ein benanntes früheres Release oder ein früherer Datenstand ändert sich nie und ist einen Tag cachebar. Die API antwortet jedem Ursprung (CORS *), Browser können sie also direkt aufrufen.
Wird beim Blättern durch eine Liste ein neues Release aktiviert, antwortet die API mit 409 und dem Code stale_cursor: Beginnen Sie wieder mit der ersten Seite.
Ratenlimits
Jede Antwort meldet das Zeitfenster des Aufrufers in den Headern RateLimit-Limit, RateLimit-Remaining und RateLimit-Reset (Sekunden). Ist das Limit erreicht, antwortet die API mit 429 und Retry-After.
Ohne Schlüssel
Offen (ohne Schlüssel)
- 60 Anfragen pro 60 Sekunden
- Gezählt pro: Client-Adresse
- Jede Ressource, dieselben Daten wie in jeder Stufe
Mit Schlüssel
Developer
- 600 Anfragen pro 60 Sekunden
- Gezählt pro: API-Schlüssel (ein Schlüssel kann ein eigenes Limit haben)
- Jede Ressource, dieselben Daten wie in jeder Stufe
- Webhooks für Releases, Bewertungsänderungen und Vorfälle
Mit Schlüssel
Business
- 3000 Anfragen pro 60 Sekunden
- Gezählt pro: API-Schlüssel (ein Schlüssel kann ein eigenes Limit haben)
- Jede Ressource, dieselben Daten wie in jeder Stufe
- Webhooks für Releases, Bewertungsänderungen und Vorfälle
Mit Schlüssel
Enterprise
- 12000 Anfragen pro 60 Sekunden
- Gezählt pro: API-Schlüssel (ein Schlüssel kann ein eigenes Limit haben)
- Jede Ressource, dieselben Daten wie in jeder Stufe
- Webhooks für Releases, Bewertungsänderungen und Vorfälle
Eine Regel für jede Stufe
Ein Schlüssel wird als Authorization: Bearer gefolgt vom Schlüssel gesendet. Jeder Tarif liest dieselben Daten.
API-Schlüssel
Jede Ressource ist auf der offenen Stufe kostenlos, ohne Schlüssel. Ein Schlüssel hebt das Ratenlimit an; er schaltet keine Daten frei, und nichts hat einen Preis.
Stufen: offen (ohne Schlüssel, gezählt je Client-Adresse), Developer, Business und Enterprise (gezählt je Schlüssel).
Senden Sie den Schlüssel als Bearer-Token im Authorization-Header. Er wird bei der Ausstellung einmal angezeigt: Halten Sie ihn geheim und bitten Sie uns um Rotation oder Widerruf, falls er bekannt wird.
Schlüsselinhaber können zudem Webhooks zu veröffentlichten Releases, geänderten Ratings und hinzugefügten Vorfällen erhalten, signiert nach der Standard-Webhooks-Spezifikation.
Für einen Schlüssel schreiben Sie uns mit Ihrem Namen, einer Kontaktadresse und dem, was Sie bauen. Schlüssel stellt unser Team aus. Schlüssel anfragen
Fehler
Fehler sind RFC-9457-Problem-Details (application/problem+json) mit type, title, status, detail und einem stabilen code.
| Code | Bedeutung |
|---|---|
not_found | Die Ressource oder die ID existiert nicht. Eine unbekannte Reihe und eine nicht weiterverbreitbare Reihe antworten gleich. |
invalid_parameter | Ein Abfrageparameter hat einen ungültigen Wert. |
invalid_cursor | Der Cursor stammt nicht von der API. |
stale_cursor | Beim Blättern wurde ein neues Release aktiviert; beginnen Sie wieder mit der ersten Seite. |
rate_limited | Das Limit des Tarifs ist erreicht; warten Sie die Sekunden aus Retry-After. |
unauthorized | Die Anfrage konnte nicht authentifiziert werden. |
forbidden | Der Schlüssel darf diese Ressource nicht lesen. |
unavailable | Der Dienst ist vorübergehend nicht verfügbar. |
internal_error | Die Anfrage konnte nicht beantwortet werden; versuchen Sie es später erneut. |
invalid_authorization | Der Authorization-Header hat nicht die Form Bearer gefolgt von einem Schlüssel. |
invalid_api_key | Der Schlüssel ist unbekannt, widerrufen oder abgelaufen. Anfragen ohne Schlüssel nutzen den offenen Tarif. |
insufficient_scope | Der Schlüssel hat nicht den Scope read. |
