スレイ・ザ・スパイア2 (STS2) 開発者
Spire Codex のデータでツール、ボット、コンテンツを作れます。すべて無料でオープンです。
ツールチップウィジェット
Wowhead 風のホバー表示ツールチップ(カード・レリック・ポーション)をどんなサイトにも追加できます。script タグ1つ、依存関係ゼロ。
インストール
<script src="https://spire-codex.com/widget/spire-codex-tooltip.js"></script>構文
[[Strike]]カードのツールチップ(既定タイプ)[[card:Bash]]カード(明示)[[relic:Burning Blood]]レリック[[potion:Fire Potion]]ポーション[[character:Ironclad]]キャラクター[[monster:Jaw Worm]]モンスター[[power:Strength]]パワー[[event:Neow]]イベント[[encounter:Lagavulin]]エンカウント[[enchantment:Sharp]]エンチャント[[keyword:Exhaust]]キーワード[[orb:Lightning]]オーブ[[affliction:Bound]]アフリクション[[achievement:Minimalist]]実績JavaScript API
SpireCodex.scan()新しい [[...]] パターンをページから再スキャン(SPA向け)SpireCodex.scan(element)特定の DOM 要素をスキャン更新履歴ウィジェット
Spire Codex の更新履歴をバージョン切り替え付きで表示する、コンパクトで対話的な更新履歴ビューアを埋め込めます。
インストール
<div id="scx-changelog"></div>
<script src="https://spire-codex.com/widget/spire-codex-changelog.js"></script>data-version="1.0.4"特定のバージョンを表示(既定:最新)REST API
ゲームの全データベースに公開 REST API でアクセスできます。認証は不要です。IPごとのサイト利用枠でブラウジングや軽い呼び出しはまかなえ、キーなしの API 利用には下記の基本レートが適用されます。 スクリプトやツールでは、API キーを作成して X-API-Key ヘッダーで送信してください。 プロフィールページで作成できます。 キーを使うとリクエストは IP ではなく ID 単位で扱われ(ネットワークが変わっても安定し、同じ NAT 配下の他ユーザーと共有されません)、利用状況を確認できます。ティアの上限はエンドポイントごとに適用されます。レスポンスには X-RateLimit-Remaining / X-RateLimit-Reset が含まれるので、リクエストの間隔調整に使えます。
レート制限
| サイトのトラフィック | 300/minute | IPごと |
| APIキーなし | 15/minute | |
| 登録ユーザー | 60/minute | プロフィールで作成 |
| 学術 | 100/minute | 申請制 |
| 有料 | 120/minute | サポーター |
すべての上限はエンドポイントごとに数えます。表は各ルートでの許容量であり、全体のプールではありません。一部の重いエンドポイントには、キーの有無にかかわらず全呼び出し元に適用される独自の予算があります(下記のラン エクスポート参照。言語 ZIP は 10回/時)。X-RateLimit-Remaining を監視し、429 が返ったら待機してください(Retry-After が設定されます)。
ランの一括エクスポート
GET /api/exports/runs?limit=1000&start=2026-06-01T00:00:00Z公式ランを JSONL としてストリーミングします(1行1ラン)。
limit ページの上限を決めます。ページが満杯なら次ページ用のカーソルが返ります。start / end 投稿日時の半開区間で絞り込みます。ページ送り中は固定してください。カーソルには含まれません。このエンドポイントには1時間あたり120クレジットの独自予算があり、キーの有無を問わず全呼び出し元で共有されます。ページ付きリクエストは1クレジット、上限なしの取得(limit なし)は60クレジットです。継続的な同期は約30秒間隔のページ付き取得が最適です。429 が返ったら Retry-After に従い、同じカーソルで再開してください。
全データが必要な場合、パラメータなしの呼び出しは1日1回再生成される静的ファイル /exports/runs-latest.jsonl.gz にリダイレクトされます(行の形式は同じ)。/api/exports/runs/manifest で生成日時とラン数を確認できます。各行には player_token(送信アカウントの安定した仮名ID、匿名ランでは null)が含まれます。
1つのパッチだけ? /api/exports/runs?version=v0.111.0 はマニフェストの versions マップにあるバージョン別の静的ファイル /exports/runs-v0.111.0.jsonl.gz へリダイレクトします。limit と cursor と組み合わせると、1つのパッチ内をページングします。
ベース URL
https://spire-codex.comベータチャンネル(Steam ベータブランチの未公開コンテンツ):任意のエンティティのエンドポイントに次を付けます: ?channel=beta. 現在のベータ版: /api/beta/version. 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.
エンドポイント
完全な対話型ドキュメント(バックエンドから自動生成、常に最新): /docs
エンティティ
集計と検索
Languages
コミュニティと投稿
一括ダウンロード
多言語
任意のエンドポイントに次のクエリパラメータを付けます: ?lang=jpn. 15言語に対応:
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));ミニカードスプライト
ゲーム内のカードサムネイル(ラン履歴 / ゲームオーバー画面で使用)を任意の Web プロジェクトで再現できます。CSS の mask-image で合成した6枚の PNG レイヤーで、canvas も WebGL も不要、色付けしたスプライトだけです。 色はデコンパイルしたゲームコードから直接取得しています: NTinyCard, CardPoolModel.DeckEntryCardColor.
プレビュー



Ironclad / Attack / Common


Silent / Skill / Uncommon


Defect / Power / Rare


Necrobinder / Skill / Rare


Regent / Attack / Uncommon


Curse


Event


Questスプライト素材
10枚の PNG はすべて CORS 有効で配信されます。各ファイル名の前にベース URL を付けてください。各スプライトは 128×128、RGBA、透明背景に白(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プール(カード背面)の色
出典: CardPoolModel.DeckEntryCardColor. /api/cards が返す color フィールドと照合してください。
レアリティ(バナー)の色
出典: NTinyCard.GetBannerColor. rarity フィールドと照合してください。
最小限の HTML + CSS レシピ
ポートレートのファイル名: attack = アタックカード, power = パワーカード, skill = その他すべて(スキル、状態、呪い、…)
<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>React コンポーネント
そのまま使える React 版。ソース: 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" />カードの完全画像
/api/cards の各カードには、ゲームでレンダリングされた完全なカード(枠、イラスト、バナー、テキストをゲーム内そのままに)のすぐ使える URL が2つ含まれます。エンシェントカードはアニメーション webp です。
image_url_card— 基本カード。レンダリングのない唯一のカード(mad_science)では null になるので、その場合は image_url(ポートレート画像)にフォールバックしてください。image_url_card_upg— 強化カード。強化がないカードでは null。
// 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"
}ローカライズ版のレンダリングは言語別サブフォルダにあります。例: cards-full/stable/jpn/bash.webp. 15言語すべてが利用できます。
エンチャント済みカードのレンダリング
各カードは、正規に付与できる各エンチャント付きでもレンダリングされ、ゲーム内のエンチャントプレビューと同じ描画(バッジ、数値、追加テキスト)になります。URL は次の1つのパターンに従います:
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}: /api/enchantments と /api/cards の小文字 ID(例:sharp, corrupted, sown)。- 存在するのは有効なカードとエンチャントの組み合わせのみで(エクスポートはゲーム自身の適用ルールを使用)、無効な組み合わせは 404 になります。/api/enchantments の card_type / applicable_to フィールドが、どのカードが対象かを示します。
- すべての組み合わせに基本版と強化版があり、14言語すべてでエンチャントのテキストが完全にローカライズされています。
データエクスポート
全ゲームデータを1つの ZIP アーカイブでダウンロードできます。各アーカイブにはエンティティ種別ごと(カード、レリック、モンスター、パワーなど)の JSON ファイルが含まれます。
対話型 API ドキュメント
その場で試せる機能付きの完全な Swagger/OpenAPI ドキュメント。
API ドキュメントを開く →オープンソース
Spire Codex はオープンソースです。データ抽出パイプライン、API、フロントエンドはすべて GitHub で公開しています。
GitHub で見る →