Slay the Spire 2 (STS2) Pengembang
Buat alat, bot, dan konten dengan data Spire Codex. Semuanya gratis dan terbuka.
Widget Tooltip
Tambahkan tooltip hover ala Wowhead untuk kartu, pusaka, dan ramuan ke situs mana pun. Satu tag script, tanpa dependensi.
Instalasi
<script src="https://spire-codex.com/widget/spire-codex-tooltip.js"></script>Sintaks
[[Strike]]Tooltip kartu (tipe bawaan)[[card:Bash]]Kartu (eksplisit)[[relic:Burning Blood]]Pusaka[[potion:Fire Potion]]Ramuan[[character:Ironclad]]Karakter[[monster:Jaw Worm]]Monster[[power:Strength]]Kuasa[[event:Neow]]Event[[encounter:Lagavulin]]Pertemuan[[enchantment:Sharp]]Efek[[keyword:Exhaust]]Kata Kunci[[orb:Lightning]]Bola[[affliction:Bound]]Penyakit[[achievement:Minimalist]]PencapaianJavaScript API
SpireCodex.scan()Pindai ulang halaman untuk pola [[...]] baru (untuk SPA)SpireCodex.scan(element)Pindai elemen DOM tertentuWidget Changelog
Sematkan penampil changelog yang ringkas dan interaktif, berisi riwayat pembaruan Spire Codex dengan pilihan versi.
Instalasi
<div id="scx-changelog"></div>
<script src="https://spire-codex.com/widget/spire-codex-changelog.js"></script>data-version="1.0.4"Tampilkan versi tertentu (bawaan: terbaru)REST API
Seluruh database game bisa diakses lewat REST API publik. Tanpa autentikasi: jatah situs per IP mencakup penjelajahan dan panggilan ringan, dan pemakaian API tanpa kunci mendapat batas dasar di bawah. Untuk skrip dan alat, buat kunci API dan kirim sebagai header X-API-Key. Buat di halaman profilmu. Kunci mengelompokkan permintaanmu berdasarkan identitas, bukan IP (stabil di jaringan mana pun, tidak pernah berbagi dengan pengguna lain di balik NAT yang sama) dan memberimu pelacakan pemakaian. Batas tingkatannya berlaku per endpoint. Respons membawa X-RateLimit-Remaining / X-RateLimit-Reset supaya kamu bisa mengatur laju permintaan.
Batas laju
| Trafik Situs | 300/minute | per IP |
| Tanpa kunci API | 15/minute | |
| Pengguna Terdaftar | 60/minute | buat di profilmu |
| Akademik | 100/minute | diberikan atas permintaan |
| Dibayar | 120/minute | pendukung |
Semua batas dihitung per endpoint: tabel ini jatahmu di tiap rute, bukan kuota global. Beberapa endpoint berat punya anggaran sendiri yang berlaku untuk semua pemanggil apa pun kuncinya (lihat ekspor perjalanan di bawah; ZIP bahasa 10/jam). Pantau X-RateLimit-Remaining dan tahan dulu saat 429 (Retry-After disertakan).
Ekspor perjalanan massal
GET /api/exports/runs?limit=1000&start=2026-06-01T00:00:00ZMengalirkan perjalanan resmi sebagai JSONL, satu perjalanan per baris.
limit Membatasi halaman. Halaman penuh mengembalikan kursor untuk halaman berikutnya.start / end Batasi ke jendela waktu kirim setengah terbuka. Jaga nilainya tetap selama berpindah halaman, kursor tidak menyimpannya.Endpoint ini punya anggaran sendiri 120 kredit per jam, dipakai bersama oleh pemanggil berkunci maupun anonim: permintaan berhalaman memakan 1 kredit, tarikan tanpa batas (tanpa limit) memakan 60. Jadi sinkronisasi rutin paling pas dilakukan sebagai tarikan berhalaman berjarak ~30 detik. Saat 429, patuhi Retry-After dan lanjutkan dengan kursor yang sama.
Butuh seluruh datanya? Panggilan tanpa parameter dialihkan ke file statis yang dibuat ulang sekali sehari, /exports/runs-latest.jsonl.gz, dengan bentuk baris yang sama; /api/exports/runs/manifest melaporkan kapan file itu dibuat dan berapa perjalanan isinya. Tiap baris membawa player_token, id pseudonim yang stabil untuk akun pengirim, null pada perjalanan anonim.
Cuma satu patch? /api/exports/runs?version=v0.111.0 mengalihkan ke berkas statis per versi dari peta versions di manifes, /exports/runs-v0.111.0.jsonl.gz; jika digabung dengan limit dan cursor, yang dihalamankan adalah satu patch saja.
URL dasar
https://spire-codex.comKanal beta (konten belum rilis dari cabang beta Steam): tambahkan ini ke endpoint entitas mana pun: ?channel=beta. Versi beta saat ini: /api/beta/version. Diff lengkap terhadap main: /api/beta/diff.
The community stats pages were reorganized: /community-stats, /leaderboards/metrics, /charts, and the /meta page now live under /stats, /leaderboards/elo is /top-players, and run submission moved to /runs/submit. Old URLs redirect.
Endpoint
Dokumentasi interaktif lengkap (dibuat otomatis dari backend, selalu terbaru): /docs
Entitas
Agregasi & Pencarian
Languages
Komunitas & Kiriman
Unduhan Massal
Multi-Bahasa
Tambahkan parameter kueri ini ke endpoint mana pun: ?lang=jpn. 17 bahasa didukung:
eng, ara, deu, esp, fra, ind, ita, jpn, kor, pol, ptb, rus, spa, tha, tur, zhs, zht
Mulai Cepat
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));Sprite Kartu Mini
Buat ulang thumbnail kartu dalam perjalanan milik game (dipakai di layar Riwayat / Game Over) di proyek web mana pun. Enam lapis PNG digabung dengan CSS mask-image, tanpa canvas, tanpa WebGL, cuma sprite yang diwarnai. Warnanya diambil langsung dari kode game hasil dekompilasi: NTinyCard, CardPoolModel.DeckEntryCardColor.
Pratinjau



Ironclad / Attack / Common


Silent / Skill / Uncommon


Defect / Power / Rare


Necrobinder / Skill / Rare


Regent / Attack / Uncommon


Fool / Attack / Rare


Curse


Event


QuestAset sprite
Semua 10 PNG disajikan dengan CORS aktif, tinggal taruh URL dasar di depan tiap nama file. Tiap sprite berukuran 128×128, RGBA, putih di atas transparan (untuk diwarnai lewat 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 rarityWarna kelompok (punggung kartu)
Sumber: CardPoolModel.DeckEntryCardColor. Cocokkan dengan kolom color yang dikembalikan /api/cards.
Warna kelangkaan (pita)
Sumber: NTinyCard.GetBannerColor. Cocokkan dengan kolom rarity.
Resep HTML + CSS minimal
Nama file potret: attack = Kartu Serangan, power = Kartu Kuasa, skill = sisanya (Teknik, Status, Kutukan, …)
<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>Komponen React
Versi React siap pakai. Sumber: 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" />Gambar kartu lengkap
Tiap kartu dari /api/cards menyertakan dua URL siap pakai untuk kartu lengkap hasil render game (bingkai, gambar, pita, dan teks, persis seperti di dalam game). Kartu Ancient berupa webp animasi.
image_url_card— Kartu dasar. null untuk satu kartu yang tidak punya render (mad_science); pakai image_url (gambar potretnya) sebagai gantinya.image_url_card_upg— Kartu yang ditingkatkan. null kalau kartunya tidak punya peningkatan.
// 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"
}Render terjemahan ada di subfolder bahasa, misalnya: cards-full/stable/jpn/bash.webp. Semua 15 bahasa tersedia.
Render kartu dengan efek
Tiap kartu juga dirender dengan setiap efek kartu yang sah untuknya, persis seperti pratinjau efek di dalam game (lencana, jumlah, dan teks kartu tambahan). URL-nya mengikuti satu pola:
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}: id huruf kecil dari /api/enchantments dan /api/cards (mis. sharp, corrupted, sown).- Hanya kombinasi kartu dan efek yang sah yang tersedia (ekspor memakai aturan game sendiri), jadi kombinasi tidak sah menghasilkan 404. Kolom card_type / applicable_to di /api/enchantments menjelaskan kartu mana yang memenuhi syarat.
- Varian dasar dan yang ditingkatkan tersedia untuk tiap kombinasi, dalam 14 bahasa, dengan teks efek yang sepenuhnya diterjemahkan.
Ekspor Data
Unduh semua data game dalam satu arsip ZIP. Tiap arsip berisi file JSON untuk semua tipe entitas (kartu, pusaka, monster, kuasa, dan lainnya).
Dokumentasi API Interaktif
Dokumentasi Swagger/OpenAPI lengkap dengan fitur coba langsung.
Buka Dokumentasi API →Open Source
Spire Codex itu open source. Pipeline ekstraksi data, API, dan frontend semuanya tersedia di GitHub.
Lihat di GitHub →