Spire Codex est désormais sur Overwolf. Obtenez l'overlay en jeu avec recherche de cartes en direct et envoi de parties en un clic. En savoir plus →Créez des outils, des bots et du contenu avec les données de Spire Codex. Tout est gratuit et ouvert.
Ajoutez des infobulles au survol façon Wowhead pour les cartes, reliques et potions sur n'importe quel site. Une balise script, zéro dépendance.
<script src="https://spire-codex.com/widget/spire-codex-tooltip.js"></script>[[Strike]]Infobulle de carte (type par défaut)[[card:Bash]]Carte (explicite)[[relic:Burning Blood]]Relique[[potion:Fire Potion]]Potion[[character:Ironclad]]Personnage[[monster:Jaw Worm]]Monstre[[power:Strength]]Pouvoir[[event:Neow]]Événement[[encounter:Lagavulin]]Rencontre[[enchantment:Sharp]]Enchantement[[keyword:Exhaust]]Mot-clé[[orb:Lightning]]Orbe[[affliction:Bound]]Affliction[[achievement:Minimalist]]SuccèsSpireCodex.scan()Réanalyse la page pour de nouveaux motifs [[...]] (pour les SPA)SpireCodex.scan(element)Analyse un élément DOM précisIntégrez un visualiseur de journal compact et interactif affichant l'historique des mises à jour de Spire Codex avec changement de version.
<div id="scx-changelog"></div>
<script src="https://spire-codex.com/widget/spire-codex-changelog.js"></script>data-version="1.0.4"Affiche une version précise (par défaut : la dernière)Base de données complète du jeu accessible via une API REST publique. Aucune authentification requise : le quota web par IP couvre la navigation et les appels occasionnels, et l'usage de l'API sans clé bénéficie du taux de base ci-dessous. Pour les scripts et outils, créez une clé API et envoyez-la dans l'en-tête X-API-Key. Une clé regroupe vos requêtes par identité plutôt que par IP (stable entre réseaux, jamais partagée avec d'autres utilisateurs derrière le même NAT) et vous donne un suivi d'utilisation ; son plafond de palier s'applique par endpoint. Les réponses contiennent X-RateLimit-Remaining / X-RateLimit-Reset pour que vous puissiez espacer vos requêtes.
| Trafic du site | 300/minute | par IP |
| Sans clé API | 15/minute | |
| Utilisateur enregistré | 60/minute | créez-en une sur votre profil |
| Académique | 100/minute | accordé sur demande |
| Payant | 120/minute | soutiens |
Tous les plafonds comptent par endpoint : le tableau est votre quota sur chaque route, pas un pool global. Quelques endpoints lourds ont leur propre budget qui s'applique à tout appelant, clé ou non (voir l'export de parties ci-dessous ; le ZIP de langue est à 10/heure). Surveillez X-RateLimit-Remaining et patientez en cas de 429 (Retry-After est renseigné).
Reproduisez la miniature de carte du jeu (utilisée sur les écrans Historique des parties / Game Over) dans n'importe quel projet web. Six calques PNG composés avec mask-image en CSS, sans canvas, sans WebGL, juste des sprites teintés. Les couleurs viennent directement du code décompilé du jeu : NTinyCard, CardPoolModel.DeckEntryCardColor.



Ironclad / Attack / Common

Téléchargez toutes les données du jeu en une seule archive ZIP. Chaque archive contient des fichiers JSON pour chaque type d'entité (cartes, reliques, monstres, pouvoirs et plus).
Documentation Swagger/OpenAPI complète avec fonction d'essai.
Ouvrir la documentation de l'API →Spire Codex est open source. Le pipeline d'extraction des données, l'API et le frontend sont tous disponibles sur GitHub.
Voir sur GitHub →GET /api/runs/export?limit=1000&start=2026-06-01T00:00:00ZDiffuse les parties officielles en JSONL, une partie par ligne.
limit Borne la page ; une page pleine renvoie un curseur pour la suivante.start / end Restreignent à une fenêtre semi-ouverte de date de soumission. Gardez-les constants pendant la pagination ; le curseur ne les intègre pas.Cet endpoint dispose de son propre budget de 120 crédits par heure, partagé entre appelants avec et sans clé : une requête paginée coûte 1 crédit, une récupération sans limite en coûte 60. La synchronisation continue fonctionne donc mieux par récupérations paginées espacées d'environ 30 s ; en cas de 429, respectez Retry-After et reprenez avec le même curseur.
https://spire-codex.comCanal bêta (contenu non publié de la branche bêta Steam) : ajoutez ceci à n'importe quel endpoint d'entité : ?channel=beta. Version bêta actuelle : /api/beta/version. Diff complet par rapport à main : /api/beta/diff.
Documentation interactive complète (générée automatiquement depuis le backend, toujours à jour) : /docs
Ajoutez ce paramètre de requête à n'importe quel endpoint : ?lang=jpn. 15 langues prises en charge :
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));




Defect / Power / Rare


Necrobinder / Skill / Rare


Regent / Attack / Uncommon


Curse


Event


QuestLes 10 PNG sont servis avec CORS activé, placez l'URL de base devant chaque nom de fichier. Chaque sprite fait 128×128, RGBA, blanc sur transparent (conçu pour être teinté en CSS).
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 raritySource : CardPoolModel.DeckEntryCardColor. Faites-les correspondre au champ color renvoyé par /api/cards.
Source : NTinyCard.GetBannerColor. Faites-les correspondre au champ rarity.
Nom de fichier du portrait : attack = Cartes d'Attaque, power = Cartes de Pouvoir, skill = tout le reste (Compétence, Statut, Malédiction, …)
<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>Version React prête à l'emploi. Source : 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" />Chaque carte de /api/cards inclut deux URL prêtes à l'emploi de la carte complète rendue par le jeu (cadre, illustration, bannière et texte, exactement comme en jeu). Les cartes des anciens sont des webp animés.
image_url_card — La carte de base. null pour la seule carte sans rendu (mad_science) ; utilisez alors image_url (l'illustration du portrait) en repli.image_url_card_upg — La carte améliorée. null quand la carte n'a pas d'amélioration.// 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"
}Les rendus localisés se trouvent dans un sous-dossier de langue, par exemple : cards-full/stable/jpn/bash.webp. Les 15 langues sont disponibles.
Chaque carte est aussi rendue avec chaque enchantement qu'elle peut légalement recevoir, exactement comme l'aperçu d'enchantement en jeu la dessine (badge, valeur et texte ajouté). Les URL suivent un seul modèle :
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}: identifiants en minuscules issus de /api/enchantments et /api/cards (ex. sharp, corrupted, sown).