Spire Codex ist jetzt auf Overwolf. Hol dir das In-Game-Overlay mit Live-Kartensuche und Run-Uploads per Klick. Mehr erfahren →Baue Tools, Bots und Inhalte mit Spire Codex-Daten. Alles ist kostenlos und offen.
Füge jeder Website Hover-Tooltips im Wowhead-Stil für Karten, Relikte und Tränke hinzu. Ein Script-Tag, keine Abhängigkeiten.
<script src="https://spire-codex.com/widget/spire-codex-tooltip.js"></script>[[Strike]]Karten-Tooltip (Standardtyp)[[card:Bash]]Karte (explizit)[[relic:Burning Blood]]Relikt[[potion:Fire Potion]]Trank[[character:Ironclad]]Charakter[[monster:Jaw Worm]]Monster[[power:Strength]]Kraft[[event:Neow]]Event[[encounter:Lagavulin]]Begegnung[[enchantment:Sharp]]Verzauberung[[keyword:Exhaust]]Schlüsselwort[[orb:Lightning]]Orb[[affliction:Bound]]Leiden[[achievement:Minimalist]]ErfolgSpireCodex.scan()Seite erneut nach neuen [[...]]-Mustern durchsuchen (für SPAs)SpireCodex.scan(element)Ein bestimmtes DOM-Element durchsuchenBette einen kompakten, interaktiven Changelog-Viewer ein, der die Update-Historie von Spire Codex mit Versionswechsel zeigt.
<div id="scx-changelog"></div>
<script src="https://spire-codex.com/widget/spire-codex-changelog.js"></script>data-version="1.0.4"Eine bestimmte Version anzeigen (Standard: neueste)Die komplette Spieldatenbank ist über eine öffentliche REST-API erreichbar. Keine Authentifizierung nötig: Das Website-Kontingent pro IP deckt Browsen und gelegentliche Aufrufe ab, und API-Nutzung ohne Schlüssel bekommt die Basisrate unten. Für Skripte und Tools erstelle einen API-Schlüssel und sende ihn im Header X-API-Key. Erstelle einen auf deiner Profilseite. Ein Schlüssel ordnet deine Anfragen nach Identität statt IP zu (stabil über Netzwerke hinweg, nie mit anderen Nutzern hinter demselben NAT geteilt) und bietet Nutzungsstatistiken; das Stufenlimit gilt pro Endpunkt. Antworten enthalten X-RateLimit-Remaining / X-RateLimit-Reset, damit du Anfragen dosieren kannst.
| Website-Traffic | 300/minute | pro IP |
| Kein API-Schlüssel | 15/minute | |
| Registrierter Nutzer | 60/minute | erstelle einen in deinem Profil |
| Forschung | 100/minute | auf Anfrage |
| Bezahlt | 120/minute | Unterstützer |
Alle Limits gelten pro Endpunkt: Die Tabelle ist dein Kontingent auf jeder Route, kein globaler Pool. Einige aufwendige Endpunkte haben eigene Budgets, die für jeden Aufrufer unabhängig vom Schlüssel gelten (siehe Lauf-Export unten; das Sprach-ZIP ist auf 10/Stunde begrenzt). Beobachte X-RateLimit-Remaining und warte bei 429 ab (Retry-After ist gesetzt).
GET /api/runs/export?limit=1000&start=2026-06-01T00:00:00ZStreamt offizielle Läufe als JSONL, ein Lauf pro Zeile.
limit Begrenzt die Seite; eine volle Seite liefert einen Cursor für die nächste.start / end Beschränken auf ein halboffenes Einreichungszeitfenster. Beim Blättern konstant halten; der Cursor enthält sie nicht.Dieser Endpunkt hat ein eigenes Budget von 120 Credits pro Stunde, das sich Aufrufer mit und ohne Schlüssel teilen: Eine paginierte Anfrage kostet 1 Credit, ein unbegrenzter Abruf (ohne limit) 60. Dauerhaftes Synchronisieren klappt daher am besten mit paginierten Abrufen im Abstand von ~30s; bei 429 Retry-After beachten und mit demselben Cursor fortsetzen.
https://spire-codex.comBeta-Kanal (unveröffentlichte Inhalte aus dem Steam-Beta-Zweig): Hänge dies an jeden Entitäts-Endpunkt an: ?channel=beta. Aktuelle Beta-Version: /api/beta/version. Vollständiger Diff gegenüber Main: /api/beta/diff.
Vollständige interaktive Doku (automatisch aus dem Backend erzeugt, immer aktuell): /docs
Hänge diesen Query-Parameter an jeden Endpunkt an: ?lang=jpn. 15 Sprachen werden unterstützt:
eng, deu, esp, fra, ita, jpn, kor, pol, ptb, rus, spa, tha, tur, zhs, zht
cURL
curl https://spire-codex.com/api/cards?color=ironclad&rarity=RarePython
import requests
cards = requests.get("https://spire-codex.com/api/cards", params={"color": "ironclad"}).json()
for card in cards:
print(f"{card['name']} - {card['type']} ({card['rarity']})")JavaScript
const res = await fetch("https://spire-codex.com/api/relics?pool=ironclad");
const relics = await res.json();
console.log(relics.map(r => r.name));Baue das Kartenminiaturbild aus dem Spiel (auf den Bildschirmen Laufverlauf / Game Over verwendet) in jedem Webprojekt nach. Sechs PNG-Ebenen, per CSS mask-image kombiniert, kein Canvas, kein WebGL, nur eingefärbte Sprites. Die Farben stammen direkt aus dem dekompilierten Spielcode: NTinyCard, CardPoolModel.DeckEntryCardColor.



Ironclad / Attack / Common


Silent / Skill / Uncommon


Defect / Power / Rare


Necrobinder / Skill / Rare


Regent / Attack / Uncommon


Curse


Event


QuestAlle 10 PNGs werden mit aktiviertem CORS ausgeliefert, setze die Basis-URL vor jeden Dateinamen. Jedes Sprite ist 128×128, RGBA, weiß auf transparent (zum Einfärben per CSS gedacht).
https://spire-codex.com/static/images/ui/run_history_card/
card_back.png ← tinted by pool
desc_box.png ← dark description area (render at 25% opacity)
attack_portrait.png ← portrait per card type
attack_portrait_shadow.png
skill_portrait.png
skill_portrait_shadow.png
power_portrait.png
power_portrait_shadow.png
banner_shadow.png ← render at 60% opacity
banner.png ← tinted by rarityQuelle: CardPoolModel.DeckEntryCardColor. Gleiche diese mit dem Feld color ab, das /api/cards zurückgibt.
Quelle: NTinyCard.GetBannerColor. Gleiche mit dem Feld rarity ab.
Dateiname des Porträts: attack = Angriffskarten, power = Kraftkarten, skill = alles andere (Fähigkeit, Status, Fluch, …)
<div class="tiny-card" style="
--back: #D62000; /* pool color, Ironclad */
--banner: #FFDA36; /* rarity color, Rare */
position: relative;
width: 64px;
height: 64px;
">
<!-- 1. card back, tinted by pool -->
<div class="layer" style="
background-color: var(--back);
mask: url(https://spire-codex.com/static/images/ui/run_history_card/card_back.png) center/contain no-repeat;
-webkit-mask: url(https://spire-codex.com/static/images/ui/run_history_card/card_back.png) center/contain no-repeat;
"></div>
<!-- 2. description box -->
<img class="layer" src="https://spire-codex.com/static/images/ui/run_history_card/desc_box.png" style="opacity:.25">
<!-- 3. portrait shadow + portrait (attack/skill/power) -->
<img class="layer" src="https://spire-codex.com/static/images/ui/run_history_card/attack_portrait_shadow.png">
<img class="layer" src="https://spire-codex.com/static/images/ui/run_history_card/attack_portrait.png"
style="filter: brightness(.95) sepia(.15)">
<!-- 4. banner shadow + banner tinted by rarity -->
<img class="layer" src="https://spire-codex.com/static/images/ui/run_history_card/banner_shadow.png" style="opacity:.6">
<div class="layer" style="
background-color: var(--banner);
mask: url(https://spire-codex.com/static/images/ui/run_history_card/banner.png) center/contain no-repeat;
-webkit-mask: url(https://spire-codex.com/static/images/ui/run_history_card/banner.png) center/contain no-repeat;
"></div>
</div>
<style>
.tiny-card .layer {
position: absolute; inset: 0;
width: 100%; height: 100%;
object-fit: contain;
}
</style>Direkt einsetzbare React-Version. Quelle: TinyCard.tsx
import TinyCard from "./TinyCard";
// Feed in the three fields from /api/cards:
<TinyCard color="ironclad" type="Attack" rarity="Rare" className="w-16 h-16" />Jede Karte aus /api/cards enthält zwei fertige URLs für die vollständig gerenderte Karte (Rahmen, Artwork, Banner und Text, genau wie im Spiel). Karten der Urahnen sind animierte WebPs.
image_url_card — Die Basiskarte. null für die eine Karte ohne Render (mad_science); nutze dort ersatzweise image_url (das Porträt-Artwork).image_url_card_upg — Die verbesserte Karte. null, wenn die Karte keine Verbesserung hat.// e.g. /api/cards/bash
{
"id": "BASH",
"image_url": "/static/images/cards/bash.webp", // portrait art
"image_url_card": "https://cdn.spire-codex.com/cards-full/stable/bash.webp",
"image_url_card_upg": "https://cdn.spire-codex.com/cards-full/stable/bash_upg.webp"
}Lokalisierte Renders liegen in einem Sprach-Unterordner, zum Beispiel: cards-full/stable/jpn/bash.webp. Alle 15 Sprachen sind verfügbar.
Jede Karte wird zusätzlich mit jeder Verzauberung gerendert, die sie regulär erhalten kann, genau wie die Verzauberungsvorschau im Spiel sie zeichnet (Abzeichen, Wert und ergänzter Kartentext). Die URLs folgen einem Muster:
https://cdn.spire-codex.com/cards-full/stable/ench/{enchantment}/{card}.webp // English, base
https://cdn.spire-codex.com/cards-full/stable/ench/{enchantment}/{card}_upg.webp // English, upgraded
https://cdn.spire-codex.com/cards-full/stable/{lang}/ench/{enchantment}/{card}.webp // localized
// e.g. Anger with Corrupted, in Japanese:
https://cdn.spire-codex.com/cards-full/stable/jpn/ench/corrupted/anger.webp{enchantment} / {card}: kleingeschriebene IDs aus /api/enchantments und /api/cards (z. B. sharp, corrupted, sown).Lade alle Spieldaten als ein einziges ZIP-Archiv herunter. Jedes Archiv enthält JSON-Dateien für jeden Entitätstyp (Karten, Relikte, Monster, Kräfte und mehr).
15 Sprachen verfügbar. Beispiel-Downloads: Japanisch, Koreanisch, Chinesisch, Französisch, Deutsch
Vollständige Swagger/OpenAPI-Dokumentation mit Ausprobieren-Funktion.
API-Doku öffnen →Spire Codex ist Open Source. Die Datenextraktions-Pipeline, die API und das Frontend sind alle auf GitHub verfügbar.
Auf GitHub ansehen →