Spire Codex jest już na Overwolf. Zdobądź nakładkę w grze z podglądem kart na żywo i przesyłaniem przebiegów jednym kliknięciem. Dowiedz się więcej →Twórz narzędzia, boty i treści z danymi Spire Codex. Wszystko jest darmowe i otwarte.
Dodaj podpowiedzi po najechaniu w stylu Wowhead dla kart, reliktów i mikstur na dowolnej stronie. Jeden tag script, zero zależności.
<script src="https://spire-codex.com/widget/spire-codex-tooltip.js"></script>[[Strike]]Podpowiedź karty (typ domyślny)[[card:Bash]]Karta (jawnie)[[relic:Burning Blood]]Relikt[[potion:Fire Potion]]Mikstura[[character:Ironclad]]Postać[[monster:Jaw Worm]]Potwór[[power:Strength]]Moc[[event:Neow]]Wydarzenie[[encounter:Lagavulin]]Starcie[[enchantment:Sharp]]Zaklęcie[[keyword:Exhaust]]Słowo kluczowe[[orb:Lightning]]Kula[[affliction:Bound]]Dolegliwość[[achievement:Minimalist]]OsiągnięcieSpireCodex.scan()Ponownie skanuje stronę w poszukiwaniu nowych wzorców [[...]] (dla SPA)SpireCodex.scan(element)Skanuje konkretny element DOMOsadź kompaktową, interaktywną przeglądarkę listy zmian pokazującą historię aktualizacji Spire Codex z przełączaniem wersji.
<div id="scx-changelog"></div>
<script src="https://spire-codex.com/widget/spire-codex-changelog.js"></script>data-version="1.0.4"Pokazuje konkretną wersję (domyślnie: najnowsza)Pełna baza danych gry dostępna przez publiczne REST API. Bez uwierzytelniania: limit strony na IP pokrywa przeglądanie i okazjonalne wywołania, a użycie API bez klucza dostaje bazowy limit poniżej. Do skryptów i narzędzi utwórz klucz API i wysyłaj go w nagłówku X-API-Key. Klucz grupuje twoje żądania według tożsamości zamiast IP (stabilnie między sieciami, nigdy niedzielony z innymi użytkownikami za tym samym NAT) i daje śledzenie użycia; limit jego poziomu obowiązuje per endpoint. Odpowiedzi zawierają X-RateLimit-Remaining / X-RateLimit-Reset, żebyś mógł dawkować żądania.
| Ruch na stronie | 300/minute | na IP |
| Bez klucza API | 15/minute | |
| Zarejestrowany użytkownik | 60/minute | utwórz w swoim profilu |
| Akademicki | 100/minute | przyznawany na prośbę |
| Płatny | 120/minute | wspierający |
Wszystkie limity liczą się per endpoint: tabela to twój przydział na każdej trasie, nie globalna pula. Kilka ciężkich endpointów ma własne budżety, które obowiązują każdego wywołującego niezależnie od klucza (zob. eksport rozgrywek poniżej; ZIP językowy to 10/godz.). Obserwuj X-RateLimit-Remaining i wstrzymaj się przy 429 (ustawiany jest Retry-After).
Odtwórz miniaturę karty z gry (używaną na ekranach Historii rozgrywek / Game Over) w dowolnym projekcie webowym. Sześć warstw PNG złożonych przez CSS mask-image, bez canvas, bez WebGL, tylko barwione sprite'y. Kolory pochodzą prosto ze zdekompilowanego kodu gry: NTinyCard, CardPoolModel.DeckEntryCardColor.



Ironclad / Attack / Common

Pobierz wszystkie dane gry jako jedno archiwum ZIP. Każde archiwum zawiera pliki JSON dla każdego typu encji (karty, relikty, potwory, moce i więcej).
Pełna dokumentacja Swagger/OpenAPI z możliwością wypróbowania.
Otwórz dokumentację API →Spire Codex jest open source. Pipeline ekstrakcji danych, API i frontend są dostępne na GitHubie.
Zobacz na GitHubie →GET /api/runs/export?limit=1000&start=2026-06-01T00:00:00ZStrumieniuje oficjalne rozgrywki jako JSONL, jedna rozgrywka na wiersz.
limit Ogranicza stronę; pełna strona zwraca kursor do następnej.start / end Ograniczają do półotwartego okna daty przesłania. Utrzymuj je stałe podczas stronicowania; kursor ich nie zawiera.Ten endpoint ma własny budżet 120 kredytów na godzinę, wspólny dla wywołujących z kluczem i bez: żądanie stronicowane kosztuje 1 kredyt, pobranie bez limitu kosztuje 60. Ciągła synchronizacja działa więc najlepiej jako stronicowane pobrania co ~30 s; przy 429 respektuj Retry-After i wznów z tym samym kursorem.
https://spire-codex.comKanał beta (niewydane treści z gałęzi beta Steam): dodaj to do dowolnego endpointu encji: ?channel=beta. Aktualna wersja beta: /api/beta/version. Pełna różnica względem main: /api/beta/diff.
Pełna interaktywna dokumentacja (generowana automatycznie z backendu, zawsze aktualna): /docs
Dodaj ten parametr zapytania do dowolnego endpointu: ?lang=jpn. Obsługiwanych jest 15 języków:
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


QuestWszystkie 10 PNG jest serwowanych z włączonym CORS, wstaw bazowy URL przed każdą nazwą pliku. Każdy sprite ma 128×128, RGBA, biały na przezroczystym (do barwienia przez 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 rarityŹródło: CardPoolModel.DeckEntryCardColor. Dopasuj je do pola color zwracanego przez /api/cards.
Źródło: NTinyCard.GetBannerColor. Dopasuj do pola rarity.
Nazwa pliku portretu: attack = Karty Ataku, power = Karty Mocy, skill = cała reszta (Umiejętność, Stan, Klątwa, …)
<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>Gotowa do użycia wersja React. Źródło: 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" />Każda karta z /api/cards zawiera dwa gotowe adresy URL pełnej karty wyrenderowanej przez grę (ramka, grafika, baner i tekst, dokładnie jak w grze). Karty starożytnych to animowane webp.
image_url_card — Karta bazowa. null dla jedynej karty bez renderu (mad_science); wtedy użyj image_url (grafiki portretu).image_url_card_upg — Karta ulepszona. null, gdy karta nie ma ulepszenia.// 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"
}Zlokalizowane rendery znajdują się w podfolderze języka, na przykład: cards-full/stable/jpn/bash.webp. Dostępnych jest wszystkie 15 języków.
Każda karta jest też renderowana z każdym zaklęciem, które może legalnie otrzymać, dokładnie tak, jak rysuje ją podgląd zaklęcia w grze (odznaka, wartość i dodany tekst karty). Adresy URL mają jeden schemat:
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}: identyfikatory małymi literami z /api/enchantments i /api/cards (np. sharp, corrupted, sown).