슬레이 더 스파이어 2 (STS2) 개발자
Spire Codex 데이터로 도구, 봇, 콘텐츠를 만들어 보세요. 모두 무료이며 공개되어 있습니다.
툴팁 위젯
Wowhead 스타일의 카드, 유물, 물약 호버 툴팁을 어떤 웹사이트에든 추가하세요. 스크립트 태그 하나, 의존성 제로.
설치
<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 대신 계정 기준으로 집계되고(네트워크가 바뀌어도 안정적이며 같은 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로 스트리밍합니다. 한 줄에 런 하나입니다.
limit 페이지 크기를 제한합니다. 페이지가 가득 차면 다음 페이지용 커서를 반환합니다.start / end 제출 시각의 반개구간으로 제한합니다. 페이지를 넘기는 동안 고정하세요. 커서에는 포함되지 않습니다.이 엔드포인트는 시간당 120크레딧의 자체 예산이 있으며 키 유무와 관계없이 모든 호출자가 공유합니다. 페이지 요청은 1크레딧, 제한 없는 전체 가져오기(limit 없음)는 60크레딧입니다. 지속적인 동기화는 약 30초 간격의 페이지 요청이 가장 좋습니다. 429가 오면 Retry-After를 지키고 같은 커서로 재개하세요.
전체 데이터가 필요하면 매개변수 없는 호출이 하루 한 번 다시 생성되는 정적 파일 /exports/runs-latest.jsonl.gz 로 리디렉션되며, 줄 형식은 같습니다. /api/exports/runs/manifest 가 생성 시각과 런 수를 알려줍니다. 각 줄에는 제출 계정의 안정적인 가명 ID인 player_token 이 포함되며, 익명 런에서는 null 입니다.
한 패치만 필요하세요? /api/exports/runs?version=v0.111.0 은 매니페스트의 versions 맵에 있는 버전별 정적 파일 /exports/runs-v0.111.0.jsonl.gz 로 리디렉션됩니다. limit 및 cursor 와 함께 쓰면 해당 패치만 페이징합니다.
기본 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));미니 카드 스프라이트
게임 내 카드 썸네일(런 기록 / 게임 오버 화면에 사용)을 어떤 웹 프로젝트에서든 재현하세요. CSS mask-image로 합성한 PNG 레이어 6장이며, 캔버스도 WebGL도 없이 색을 입힌 스프라이트만 씁니다. 색상은 디컴파일한 게임 코드에서 그대로 가져왔습니다: NTinyCard, CardPoolModel.DeckEntryCardColor.
미리보기



Ironclad / Attack / Common


Silent / Skill / Uncommon


Defect / Power / Rare


Necrobinder / Skill / Rare


Regent / Attack / Uncommon


Curse


Event


Quest스프라이트 에셋
PNG 10개 모두 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이 두 개 포함됩니다. 고대 카드는 애니메이션 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은 하나의 패턴을 따릅니다:
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개 언어 모두에서 마법 부여 텍스트가 완전히 현지화되어 있습니다.
데이터 내보내기
모든 게임 데이터를 ZIP 파일 하나로 다운로드하세요. 각 파일에는 엔티티 유형별(카드, 유물, 몬스터, 파워 등) JSON 파일이 들어 있습니다.
대화형 API 문서
직접 실행해 볼 수 있는 전체 Swagger/OpenAPI 문서.
API 문서 열기 →오픈 소스
Spire Codex는 오픈 소스입니다. 데이터 추출 파이프라인, API, 프런트엔드 모두 GitHub에서 볼 수 있습니다.
GitHub에서 보기 →