OverwolfSpire Codex jest już na Overwolf. Dowiedz się więcej →

Slay the Spire 2 (STS2) Deweloperzy

Twórz narzędzia, boty i treści z danymi Spire Codex. Wszystko jest darmowe i otwarte.

Widżet podpowiedzi

Dodaj podpowiedzi po najechaniu w stylu Wowhead dla kart, reliktów i mikstur na dowolnej stronie. Jeden tag script, zero zależności.

Instalacja

<script src="https://spire-codex.com/widget/spire-codex-tooltip.js"></script>

Składnia

[[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ęcie

API JavaScript

SpireCodex.scan()Ponownie skanuje stronę w poszukiwaniu nowych wzorców [[...]] (dla SPA)
SpireCodex.scan(element)Skanuje konkretny element DOM

Widżet listy zmian

Osadź kompaktową, interaktywną przeglądarkę listy zmian pokazującą historię aktualizacji Spire Codex z przełączaniem wersji.

Instalacja

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

REST API

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. Utwórz go na stronie swojego profilu. 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.

Limity żądań

Ruch na stronie300/minutena IP
Bez klucza API15/minute
Zarejestrowany użytkownik60/minuteutwórz w swoim profilu
Akademicki100/minuteprzyznawany na prośbę
Płatny120/minutewspierają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).

Masowy eksport rozgrywek

GET /api/exports/runs?limit=1000&start=2026-06-01T00:00:00Z

Strumieniuje 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.

Potrzebujesz całego zbioru? Wywołanie bez parametrów przekierowuje do pliku statycznego odbudowywanego raz dziennie, /exports/runs-latest.jsonl.gz, o tym samym kształcie wiersza; /api/exports/runs/manifest podaje czas wygenerowania i liczbę przebiegów. Każdy wiersz zawiera player_token, stały pseudonimowy identyfikator konta zgłaszającego, null dla anonimowych przebiegów.

Tylko jeden patch? /api/exports/runs?version=v0.111.0 przekierowuje do statycznego pliku dla tej wersji z mapy versions w manifeście, /exports/runs-v0.111.0.jsonl.gz; w połączeniu z limit i cursor stronicuje pojedynczy patch.

Bazowy URL

https://spire-codex.com

Kanał 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.

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.

Endpointy

Pełna interaktywna dokumentacja (generowana automatycznie z backendu, zawsze aktualna): /docs

Encje

GET/api/cardsWszystkie karty (filtry: color, type, rarity, keyword, tag, spawns, search)
GET/api/cards/{id}Pojedyncza karta
GET/api/charactersWszystkie postacie
GET/api/characters/{id}Pojedyncza postać
GET/api/relicsWszystkie relikty (filtry: rarity, pool, ancient, search)
GET/api/relics/{id}Pojedynczy relikt
GET/api/potionsWszystkie mikstury (filtry: rarity, pool, search)
GET/api/potions/{id}Pojedyncza mikstura
GET/api/monstersWszystkie potwory (filtry: type, search)
GET/api/monsters/{id}Pojedynczy potwór
GET/api/powersWszystkie moce (filtry: type, stack_type, search)
GET/api/powers/{id}Pojedyncza moc
GET/api/eventsWszystkie wydarzenia (filtry: type, act, search)
GET/api/events/{id}Pojedyncze wydarzenie
GET/api/encountersWszystkie starcia (filtry: room_type, act, search)
GET/api/encounters/{id}Pojedyncze starcie
GET/api/enchantmentsWszystkie zaklęcia
GET/api/enchantments/{id}Pojedyncze zaklęcie
GET/api/keywordsSłowa kluczowe kart
GET/api/keywords/{id}Pojedyncze słowo kluczowe
GET/api/intentsWszystkie typy zamiarów
GET/api/intents/{id}Pojedynczy zamiar
GET/api/orbsWszystkie typy kul
GET/api/orbs/{id}Pojedyncza kula
GET/api/afflictionsTypy dolegliwości
GET/api/afflictions/{id}Pojedyncza dolegliwość
GET/api/modifiersModyfikatory trybu niestandardowego
GET/api/modifiers/{id}Pojedynczy modyfikator
GET/api/achievementsWszystkie osiągnięcia
GET/api/achievements/{id}Pojedyncze osiągnięcie
GET/api/badgesWszystkie odznaki
GET/api/badges/{id}Pojedyncza odznaka
GET/api/epochsWszystkie epoki
GET/api/epochs/{id}Pojedyncza epoka
GET/api/storiesWszystkie historie
GET/api/stories/{id}Pojedyncza historia
GET/api/actsWszystkie akty
GET/api/acts/{id}Pojedynczy akt
GET/api/ascensionsWszystkie poziomy ascensji
GET/api/ascensions/{id}Pojedyncza ascensja
GET/api/glossaryWszystkie hasła słownika
GET/api/glossary/{id}Pojedyncze hasło

Agregacje i wyszukiwania

GET/api/statsLiczba encji
GET/api/ancient-poolsWszystkie pule reliktów starożytnych z warunkami
GET/api/ancient-pools/{id}Pule jednego starożytnego
GET/api/unlocksOdblokowywalne encje pogrupowane według typu z kontekstem epoki
GET/api/history/{entity_type}/{entity_id}Historia wersji per encja na podstawie list zmian
GET/api/update-history/{entity_type}/{entity_id}Historia aktualizacji per encja według łatek gry
GET/api/names/{entity_type}/{entity_id}Wyszukiwanie nazwy encji we wszystkich językach
GET/api/searchUjednolicone wyszukiwanie w witrynie po encjach, wpisach referencyjnych, mechanikach, poradnikach, aktualnościach, stronach i plikach graficznych, z tolerancją literówek (q, lang)
GET/api/search/semanticMeaning-based entity search, same item shape as /api/search (q, limit); empty when the feature is off
GET/api/merchant/configMerchant pricing config extracted from the game
GET/api/mechanics/constantsMechanics constants: room odds, gold ranges, ascension tuning
GET/api/mechanics/sectionsIndex of the mechanics pages
GET/api/mechanics/sections/{slug}One mechanics page as markdown with template tokens resolved
GET/api/changelogsWszystkie listy zmian
GET/api/changelogs/recent-additionsNajnowsze encje pokazywane w pasku na stronie głównej
GET/api/changelogs/{tag}Pojedyncza lista zmian według tagu (np. v1.0.20)
GET/api/newsOgłoszenia Steam (kopiowane lokalnie dla trwałości)
GET/api/news/{gid}Pojedynczy artykuł z oczyszczoną treścią
GET/api/versionsDostępne wersje danych beta dla wyboru wersji
GET/api/news/codexSpire Codex site news, newest first
GET/api/news/codex/{slug}One site news entry
GET/api/announcementsActive site banner messages

Languages

GET/api/languagesAvailable languages with display names
GET/api/translationsTranslation maps for filter values and UI strings (lang)
GET/api/localizationsThe game's own localization tables as ICU MessageFormat, all of them or the ones named in ?tables= (max 50; unknown names are 404)
GET/api/localizations/tablesNames of the available localization tables
GET/api/localizations/{table}One localization table

Społeczność i zgłoszenia

GET/api/guidesWszystkie poradniki (filtry: category, difficulty, tag, search)
GET/api/guides/{slug}Pojedynczy poradnik z wyrenderowanym markdownem
POST/api/guidesPrześlij poradnik (webhook Discord, z limitem żądań)
POST/api/runsSubmit a run for community stats and leaderboards. The run is attached to an account only with Authorization: Bearer <jwt>; a bare steam_id is kept as a hint
POST/api/runs/claimAttach the signed-in account to previously-submitted anonymous runs by hash
GET/api/runs/listPrzeglądaj przesłane rozgrywki z filtrami i stronicowaniem (w tym ascension_min/ascension_max oraz winrate_min/winrate_max według współczynnika zwycięstw zgłaszającego, przedziały treści) Każdy wiersz zawiera player_token, stały pseudonimowy identyfikator konta zgłaszającego, null dla anonimowych przebiegów. total_is_lower_bound is true when the exact count ran out of time and total is a capped lower bound.
GET/api/runs/leaderboardRun leaderboards (fastest, highest_ascension); filter by character, players, game_mode, ascension_min, winrate_min (the content brackets), build_id
GET/api/runs/shared/{run_hash}Pojedyncza przesłana rozgrywka po hashu (z limitem żądań)
GET/api/runs/statsZagregowane statystyki społeczności (filtruj po character, ascension, username)
GET/api/runs/community-statsThe /stats hub dataset: event decision splits, deadliest encounters, win rates by ascension/character, records. Takes the same bracket keys as the metrics tables; an unknown bracket returns HTTP 400
GET/api/charts/metaRejestr wykresów dla eksploratora /charts: dostępne wykresy, filtry, podziały i statystyki rozgrywek
GET/api/charts/{chart}One pre-aggregated chart (filter: players, ascension, game_mode, username, split, bracket=a10|wr30|wr50|wr75, build_id, plus per-chart params). A saved chart id from the chart builder returns that saved chart instead
POST/api/chartsSave a chart spec to your profile (bearer token, 100 per account)
PATCH/api/charts/{id}Update the title, visibility or spec of your own saved chart; DELETE removes it
GET/api/charts/mineYour saved charts, newest first (bearer token)
GET/api/charts/publicNewest public saved charts (limit)
GET/api/tierlists/shared/{share_id}Public read-only view of a shared tier list
GET/api/beta/diffCo aktualna beta dodaje, zmienia i usuwa per typ encji; zasila każdą etykietę BETA
GET/api/beta/versionAktualna wersja beta
GET/api/runs/scores/{type}Codex Score + Codex Elo per entity (cards/relics/potions); ?bracket= grades within a run bracket (a10|wr30|wr50|wr75, a game version, or any metrics bracket; unknown is HTTP 400) (the in-game mod sends the same via ?stat_filter=a10|a10_wr30|a10_wr50|a10_wr75); relics accept ?act=1|2|3 to rank by acquisition act; ?character= switches to that character's slice (entries gain a scope field)
GET/api/runs/leaderboard/seed-rankZiarno + globalna pozycja dla jednego ziarna (?seed=&steam_id=); pola rankingu są null bez wygranej rozgrywki
POST/api/auth/steam/ticketWymień bilet uwierzytelniający Steamworks na JWT witryny (ciche logowanie w grze); 503 dopóki serwer nie ma klucza Steam
GET/api/runs/metrics/{type}Dense metrics table for cards/relics/potions, one row per entity: Codex Score, win_rate with a Wilson 95% win_rate_ci, hold_rate, lift and lift_n over the floor-adjusted expectation (null under 20 seats), Codex Elo and pick_rate from free choice screens for cards and relics, a wax block on relics (Toy Box copies split out), and used/use_rate on potions. Counts are per seat, so a 4P run is four seats; the response carries total_runs, total_seats, total_wins and data_through. ?bracket=all|solo|2p|3p|4p|a10|daily|custom|wr30|wr50|wr75 or a composite like solo:standard; ?character= switches to that character's slice (rows gain per-character Elo and Pick%). An unknown bracket returns HTTP 400
GET/api/runs/metrics/shopsShop shelf table, one row per card, relic or potion: seen, bought, buy_rate, and the buyers' win_rate, win_rate_ci and lift. Same bracket keys as the other metrics tables
GET/api/runs/metrics/eventsEvent option table: chosen, share of that event's choices, win_rate, win_rate_ci and lift. Same bracket keys as the other metrics tables
GET/api/runs/metrics/campfiresRest-site choice table (rest, smith, and the rest) with a localized name per ?lang=: chosen, share, low_hp_share, win_rate, win_rate_ci and lift. Same bracket keys as the other metrics tables
GET/api/runs/versionsUnikalne identyfikatory buildów gry z przesłanymi rozgrywkami
GET/api/runs/leaderboard/rank/{run_hash}Rank of one winning run within its ladder (category)
GET/api/leaderboards/eloTop players by Codex Elo over solo A10 standard runs, refreshed nightly; powers /top-players (limit, min_runs)
GET/api/runs/stats/{type}/{id}Community stats for one card, relic or potion, with per-bracket and per-character splits
GET/api/runs/stats/{type}/{id}/historyDaily Codex Score and Elo history for one entity (bracket=all|a10|wr30|wr50|wr75)
GET/api/runs/top/{type}/{character}Most-picked entities of a type for one character (limit)
GET/api/runs/encounter-statsPer-encounter appearances, fatal rate, avg damage and turns, per character too (act, room_type, multiplayer, bracket, build_id, encounter, page, limit)
GET/api/runs/encounter-seriesThe given encounters (max 20) rolled up per bracket and per recent game version
GET/api/runs/pulseCommunity run and win totals plus data_through
GET/api/runs/snapshot-statusWhether the stats are loaded or rebuilding
GET/api/runs/{run_hash}/similarNearest winning solo decks to a run and what they took that it didn't
GET/api/runs/archetypesCommunity deck archetypes, clustered nightly
GET/api/runs/encounter-buildsWhich archetypes die to an encounter and which walk past it (encounter)
GET/api/runs/deck-advisorWhat the winning decks nearest a partial deck carry that it doesn't yet (character, cards, relics)
GET/api/runs/pick-coachNearest archetypes for a partial deck and a score per offered card (character, cards, relics, offer, target)
GET/api/pairings/{item_type}/{item_id}Cards, relics and potions that show up in the same runs as this item
GET/api/draft-recs/{item_type}/{item_id}Cards players most often draft when they already hold this item
POST/api/draft-adviceRank the offered cards for the current deck
GET/api/replaysRuns with a replay to watch; same filters and row shape as /api/runs/list plus replay_url
GET/api/replays/summaryHow many replays are watchable, overall and per character
GET/api/runs/{run_hash}/replayThe stored replay journal as gzip; POST uploads one for a run you own, DELETE removes it
GET/api/players/{username}/insightsOne player's public insights with community comparison; 404 for unknown or private profiles
GET/api/players/{username}/statsWłasne statystyki gracza dla kart, reliktów, mikstur, wydarzeń, sklepów i ognisk z osobistym Lift; te same filtry i prywatność co insights
GET/api/presence/activeLive runs from the in-game mod, deepest first
GET/api/presence/{steam_id}One player's live run; 404 when they aren't in one
GET/api/thanksGitHub contributors, special thanks, and public supporters
GET/api/mod/latestLatest mod build and the game version it was verified against
GET/api/rate-limitsThe public rate-limit tiers
POST/api/feedbackPrześlij opinię (webhook Discord)

Pobieranie masowe

GET/api/exports/runsStrumień JSONL oficjalnych rozgrywek (stronicowanie limit/start/end/cursor; własny budżet 120 kredytów na godzinę, zob. masowy eksport powyżej)
GET/api/exports/runs/manifestWhen the daily full run dump was generated and how many runs it holds
GET/api/exports/{lang}ZIP ze wszystkimi JSON encji dla jednego języka (10/godz.)
GET/api/imagesKategorie galerii obrazów
GET/api/images/searchSzukaj obrazów po nazwie pliku
GET/api/images/game/{version}/{category}/browseStronicowane przeglądanie folderów pełnego zrzutu zasobów (path, offset, limit)
GET/api/images/game/{version}/{category}/downloadZIP z plikami jednego folderu zrzutu (path; maksymalnie 2000 plików)

Wielojęzyczność

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

Szybki start

cURL

curl https://spire-codex.com/api/cards?color=ironclad&rarity=Rare

Python

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 miniaturowej karty

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.

Podgląd

Ironclad / Attack / Common
Silent / Skill / Uncommon
Defect / Power / Rare
Necrobinder / Skill / Rare
Regent / Attack / Uncommon
Curse
Event
Quest

Zasoby sprite'ów

Wszystkie 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

Kolory puli (rewers karty)

Źródło: CardPoolModel.DeckEntryCardColor. Dopasuj je do pola color zwracanego przez /api/cards.

ironclad#D62000
silent#5EBD00
defect#3EB3ED
necrobinder#CD4EED
regent#E36600
colorless#A3A3A3
event#A3A3A3
curse#585B61
quest#24476A
status#FFFFFF
token#FFFFFF

Kolory rzadkości (baner)

Źródło: NTinyCard.GetBannerColor. Dopasuj do pola rarity.

Basic#9C9C9C
Starter#9C9C9C
Common#9C9C9C
Uncommon#64FFFF
Rare#FFDA36
Curse#E669FF
Event#13BE1A
Ancient#13BE1A
Quest#F46836
Status#9C9C9C
Token#9C9C9C

Minimalny przepis HTML + CSS

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>

Komponent React

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" />

Pełne obrazy kart

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.

Rendery zaklętych kart

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).
  • Istnieją tylko prawidłowe kombinacje karty i zaklęcia (eksport używa reguł stosowalności samej gry), więc nieprawidłowa kombinacja zwraca 404. Pola card_type / applicable_to w /api/enchantments opisują, które karty się kwalifikują.
  • Dla każdej kombinacji istnieją warianty bazowy i ulepszony, we wszystkich 14 językach, z w pełni zlokalizowanym tekstem zaklęcia.

Eksport danych

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

Pobierz dane po angielsku (ZIP)

Dostępnych 15 języków. Przykładowe pobrania: Japoński, Koreański, Chiński, Francuski, Niemiecki

Interaktywna dokumentacja API

Pełna dokumentacja Swagger/OpenAPI z możliwością wypróbowania.

Otwórz dokumentację API →

Open source

Spire Codex jest open source. Pipeline ekstrakcji danych, API i frontend są dostępne na GitHubie.

Zobacz na GitHubie →