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. Crea una en tu página de perfil. 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).
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));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


Silent / Skill / Uncommon


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).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 →