Spire Codex ya está en Overwolf. Consigue la superposición en el juego con búsquedas de cartas en vivo y subida de partidas con un clic. Saber más →Crea herramientas, bots y contenido con los datos de Spire Codex. Todo es gratuito y abierto.
Añade tooltips al estilo Wowhead para cartas, reliquias y pociones a cualquier sitio web. Una etiqueta script, cero dependencias.
<script src="https://spire-codex.com/widget/spire-codex-tooltip.js"></script>[[Strike]]Tooltip de carta (tipo por defecto)[[card:Bash]]Carta (explícito)[[relic:Burning Blood]]Reliquia[[potion:Fire Potion]]Poción[[character:Ironclad]]Personaje[[monster:Jaw Worm]]Monstruo[[power:Strength]]Poder[[event:Neow]]Evento[[encounter:Lagavulin]]Encuentro[[enchantment:Sharp]]Encantamiento[[keyword:Exhaust]]Palabra clave[[orb:Lightning]]Orbe[[affliction:Bound]]Aflicción[[achievement:Minimalist]]LogroSpireCodex.scan()Vuelve a escanear la página en busca de nuevos patrones [[...]] (para SPA)SpireCodex.scan(element)Escanea un elemento DOM concretoIncrusta un visor de cambios compacto e interactivo que muestra el historial de actualizaciones de Spire Codex con cambio de versión.
<div id="scx-changelog"></div>
<script src="https://spire-codex.com/widget/spire-codex-changelog.js"></script>data-version="1.0.4"Muestra una versión concreta (por defecto: la última)Base de datos completa del juego accesible a través de una API REST pública. Sin autenticación: la cuota web por IP cubre la navegación y las llamadas ocasionales, y el uso de la API sin clave recibe la tarifa base de abajo. Para scripts y herramientas, crea una clave de API y envíala en la cabecera X-API-Key. Una clave agrupa tus peticiones por identidad en lugar de por IP (estable entre redes, nunca compartida con otros usuarios tras el mismo NAT) y te da seguimiento de uso; el límite de su nivel se aplica por endpoint. Las respuestas incluyen X-RateLimit-Remaining / X-RateLimit-Reset para que puedas dosificar las peticiones.
| Tráfico web | 300/minute | por IP |
| Sin clave de API | 15/minute | |
| Usuario registrado | 60/minute | crea una en tu perfil |
| Académico | 100/minute | se concede bajo petición |
| De pago | 120/minute | colaboradores |
Todos los límites cuentan por endpoint: la tabla es tu cuota en cada ruta, no un fondo global. Algunos endpoints pesados tienen sus propios presupuestos que se aplican a todos los llamantes sin importar la clave (ver la exportación de partidas más abajo; el ZIP de idioma es 10/hora). Vigila X-RateLimit-Remaining y espera ante un 429 (se envía Retry-After).
Reproduce la miniatura de carta del juego (usada en las pantallas de Historial de partidas / Fin de partida) en cualquier proyecto web. Seis capas PNG compuestas con mask-image de CSS, sin canvas, sin WebGL, solo sprites teñidos. Los colores salen directamente del código descompilado del juego: NTinyCard, CardPoolModel.DeckEntryCardColor.



Ironclad / Attack / Common

Descarga todos los datos del juego en un único archivo ZIP. Cada archivo contiene ficheros JSON para cada tipo de entidad (cartas, reliquias, monstruos, poderes y más).
Documentación completa Swagger/OpenAPI con función para probar las llamadas.
Abrir la documentación de la API →Spire Codex es de código abierto. El pipeline de extracción de datos, la API y el frontend están disponibles en GitHub.
Ver en GitHub →GET /api/runs/export?limit=1000&start=2026-06-01T00:00:00ZTransmite las partidas oficiales como JSONL, una partida por línea.
limit Limita la página; una página completa devuelve un cursor para la siguiente.start / end Restringen a una ventana semiabierta de fecha de envío. Mantenlos constantes al paginar; el cursor no los incluye.Este endpoint tiene su propio presupuesto de 120 créditos por hora, compartido por llamantes con y sin clave: una petición paginada cuesta 1 crédito, una descarga sin límite cuesta 60. La sincronización continua funciona mejor con descargas paginadas espaciadas ~30 s; ante un 429, respeta Retry-After y reanuda con el mismo cursor.
https://spire-codex.comCanal beta (contenido no publicado de la rama beta de Steam): añade esto a cualquier endpoint de entidad: ?channel=beta. Versión beta actual: /api/beta/version. Diferencias completas respecto a main: /api/beta/diff.
Documentación interactiva completa (generada automáticamente desde el backend, siempre actual): /docs
Añade este parámetro de consulta a cualquier endpoint: ?lang=jpn. 15 idiomas compatibles:
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


QuestLos 10 PNG se sirven con CORS habilitado, antepón la URL base a cada nombre de archivo. Cada sprite es de 128×128, RGBA, blanco sobre transparente (pensado para teñirse con 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 rarityFuente: CardPoolModel.DeckEntryCardColor. Compáralos con el campo color que devuelve /api/cards.
Fuente: NTinyCard.GetBannerColor. Compáralos con el campo rarity.
Nombre de archivo del retrato: attack = Cartas de Ataque, power = Cartas de Poder, skill = todo lo demás (Habilidad, Estado, Maldición, …)
<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>Versión de React lista para usar. Fuente: 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" />Cada carta de /api/cards incluye dos URL listas para usar de la carta completa renderizada por el juego (marco, arte, banner y texto, exactamente como se ve en el juego). Las cartas de ancestros son webp animados.
image_url_card — La carta base. null para la única carta sin render (mad_science); usa image_url (el arte del retrato) como alternativa ahí.image_url_card_upg — La carta mejorada. null cuando la carta no tiene mejora.// 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"
}Los renders localizados están en una subcarpeta de idioma, por ejemplo: cards-full/stable/jpn/bash.webp. Los 15 idiomas están disponibles.
Cada carta también se renderiza con cada encantamiento que puede recibir legalmente, exactamente como la dibuja la vista previa de encantamiento del juego (insignia, valor y texto añadido). Las URL siguen un único patrón:
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}: ids en minúsculas de /api/enchantments y /api/cards (p. ej. sharp, corrupted, sown).