OverwolfSpire Codex متاح الآن على Overwolf. اعرف المزيد →

Slay the Spire 2 (STS2) المطورون

ابنِ أدوات وبوتات ومحتوى ببيانات Spire Codex. كل شيء مجاني ومفتوح.

أداة التلميحات

أضف تلميحات تظهر عند التمرير على طريقة Wowhead للبطاقات والآثار والجرعات إلى أي موقع. وسم script واحد وبلا أي اعتماديات.

التثبيت

<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
بلا مفتاح API15/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 رصيدًا في الساعة، يتشاركها أصحاب المفاتيح والمجهولون على السواء: الطلب المقسّم إلى صفحات يكلف رصيدًا واحدًا، والسحب غير المحدود (بلا limit) يكلف 60. لذا تعمل المزامنة المستمرة بأفضل شكل كسحوبات مقسّمة يفصل بينها نحو 30 ثانية. عند 429 التزم بقيمة Retry-After واستأنف بالمؤشر نفسه.

تحتاج إلى البيانات كاملة؟ الطلب بلا معاملات يحوّل إلى ملف ثابت يُعاد بناؤه مرة يومياً، /exports/runs-latest.jsonl.gz، بالشكل نفسه لكل سطر؛ ويذكر /api/exports/runs/manifest متى تم توليده وكم جولة يحتوي. كل سطر يحمل 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

قناة beta (محتوى غير مُصدَر من فرع beta على Steam): أضف هذا إلى أي نقطة وصول للكيانات: ?channel=beta. إصدار 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

الكيانات

GET/api/cardsكل البطاقات (تصفية: color، type، rarity، keyword، tag، spawns، search)
GET/api/cards/{id}بطاقة واحدة
GET/api/charactersكل الشخصيات
GET/api/characters/{id}شخصية واحدة
GET/api/relicsكل الآثار (تصفية: rarity، pool، ancient، search)
GET/api/relics/{id}أثر واحد
GET/api/potionsكل الجرعات (تصفية: rarity، pool، search)
GET/api/potions/{id}جرعة واحدة
GET/api/monstersكل الوحوش (تصفية: type، search)
GET/api/monsters/{id}وحش واحد
GET/api/powersكل القوى (تصفية: type، stack_type، search)
GET/api/powers/{id}قوة واحدة
GET/api/eventsكل الأحداث (تصفية: type، act، search)
GET/api/events/{id}حدث واحد
GET/api/encountersكل المواجهات (تصفية: room_type، act، search)
GET/api/encounters/{id}مواجهة واحدة
GET/api/enchantmentsكل التعزيزات
GET/api/enchantments/{id}تعزيز واحد
GET/api/keywordsالكلمات المفتاحية للبطاقات
GET/api/keywords/{id}كلمة مفتاحية واحدة
GET/api/intentsكل أنواع النوايا
GET/api/intents/{id}نية واحدة
GET/api/orbsكل أنواع الأجرام
GET/api/orbs/{id}جرم واحد
GET/api/afflictionsأنواع الآفات
GET/api/afflictions/{id}آفة واحدة
GET/api/modifiersمعدّلات الوضع المخصص
GET/api/modifiers/{id}معدّل واحد
GET/api/achievementsكل الإنجازات
GET/api/achievements/{id}إنجاز واحد
GET/api/badgesكل الشارات
GET/api/badges/{id}شارة واحدة
GET/api/epochsكل الحقب
GET/api/epochs/{id}حقبة واحدة
GET/api/storiesكل القصص
GET/api/stories/{id}قصة واحدة
GET/api/actsكل الفصول
GET/api/acts/{id}فصل واحد
GET/api/ascensionsكل مستويات الصعود
GET/api/ascensions/{id}مستوى الصعود واحد
GET/api/glossaryكل مصطلحات المسرد
GET/api/glossary/{id}مصطلح واحد

التجميعات والاستعلامات

GET/api/statsأعداد الكيانات
GET/api/ancient-poolsكل مجموعات آثار العتقاء مع الشروط
GET/api/ancient-pools/{id}مجموعات عتيق واحد
GET/api/unlocksالكيانات القابلة للفتح مجمّعة حسب النوع مع سياق الحقبة
GET/api/history/{entity_type}/{entity_id}تاريخ الإصدارات لكل كيان من سجلات التغييرات
GET/api/update-history/{entity_type}/{entity_id}تاريخ تحديثات اللعبة لكل كيان
GET/api/names/{entity_type}/{entity_id}البحث عن اسم كيان عبر اللغات
GET/api/searchبحث موحد في الموقع يشمل الكيانات ومدخلات المرجع والآليات والأدلة والأخبار وصفحات الموقع وملفات الصور، مع تسامح مع الأخطاء الإملائية (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/changelogsكل سجلات التغييرات
GET/api/changelogs/recent-additionsأحدث الكيانات المعروضة في شريط الصفحة الرئيسية
GET/api/changelogs/{tag}سجل تغييرات واحد حسب الوسم (مثل v1.0.20)
GET/api/newsإعلانات Steam (منسوخة محليًا لتبقى دائمًا)
GET/api/news/{gid}مقال إخباري واحد بمحتوى منقّح
GET/api/versionsإصدارات بيانات beta المتاحة لمنتقي الإصدار
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

المجتمع والإرسالات

GET/api/guidesكل الأدلة (تصفية: category، difficulty، tag، search)
GET/api/guides/{slug}دليل واحد مع markdown معروض
POST/api/guidesأرسل دليلًا (Discord webhook، بمعدل محدود)
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/listتصفح الجولات المرسلة مع عوامل تصفية وصفحات (يشمل ascension_min/ascension_max و winrate_min/winrate_max حسب معدل فوز المرسل، أي فئات المحتوى) كل صف يحمل player_token، وهو معرف مستعار ثابت للحساب المرسِل، وقيمته null في الجولات المجهولة. 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}جولة مرسلة واحدة حسب الهاش (بمعدل محدود)
GET/api/runs/statsإحصائيات المجتمع المجمّعة (تصفية حسب 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/metaسجل المخططات لمستكشف /stats/charts: المخططات المتاحة وعوامل التصفية والتقسيمات وإحصائيات الجولات
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/diffما يضيفه إصدار beta الحالي ويغيّره ويزيله لكل نوع كيان، وهو مصدر كل علامة BETA
GET/api/beta/versionإصدار 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-rankترتيب البذرة والترتيب العالمي لبذرة واحدة (?seed=&steam_id=)، وخانات الترتيب تكون null دون جولة فائزة
POST/api/auth/steam/ticketاستبدل تذكرة مصادقة ويب من Steamworks برمز JWT الخاص بالموقع (تسجيل دخول صامت داخل اللعبة)، ويعيد 503 إلى أن يملك الخادم مفتاح 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/versionsمعرّفات إصدارات اللعبة المختلفة التي أُرسلت منها جولات
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}/statsإحصائيات لاعب واحد لبطاقاته وآثاره وجرعاته وأحداثه ومتاجره ونيران مخيمه مع Lift شخصي؛ بنفس عوامل التصفية والخصوصية المستخدمة في الرؤى
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/feedbackأرسل ملاحظاتك (Discord webhook)

التنزيلات بالجملة

GET/api/exports/runsبث JSONL للجولات الرسمية (التنقل عبر limit/start/end/cursor، بميزانية خاصة من 120 رصيدًا في الساعة - انظر تصدير الجولات بالجملة أعلاه)
GET/api/exports/runs/manifestWhen the daily full run dump was generated and how many runs it holds
GET/api/exports/{lang}ملف ZIP لكل JSON الكيانات بلغة واحدة (10 في الساعة)
GET/api/imagesفئات معرض الصور
GET/api/images/searchابحث عن الصور باسم الملف
GET/api/images/game/{version}/{category}/browseتصفح مجلدات نسخة الأصول الكاملة صفحة بصفحة (path، offset، limit)
GET/api/images/game/{version}/{category}/downloadملف ZIP لملفات مجلد واحد من النسخة (path، بحد أقصى 2000 ملف)

تعدد اللغات

أضف معامل الاستعلام هذا إلى أي نقطة وصول: ?lang=jpn. 17 لغة مدعومة:

eng, ara, deu, esp, fra, ind, ita, jpn, kor, pol, ptb, rus, spa, tha, tur, zhs, zht

بداية سريعة

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

صورة البطاقة المصغّرة

أعد إنشاء مصغّرة البطاقة التي تعرضها اللعبة أثناء الجولة (المستخدمة في شاشتي سجل الجولات ونهاية اللعبة) في أي مشروع ويب. ست طبقات PNG مركّبة بخاصية CSS mask-image، بلا canvas وبلا WebGL، مجرد صور ملوّنة. الألوان مأخوذة مباشرة من كود اللعبة المفكّك: NTinyCard, CardPoolModel.DeckEntryCardColor.

معاينة

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

ملفات الصور

كل ملفات 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. طابقها مع الخانة color التي يعيدها /api/cards.

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

ألوان الندرة (الشريط)

المصدر: NTinyCard.GetBannerColor. طابقها مع الخانة rarity.

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

وصفة 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 تتضمن رابطين جاهزين للبطاقة الكاملة كما ترسمها اللعبة (الإطار والرسم والشريط والنص، تمامًا كما تظهر داخل اللعبة). البطاقات العتيقة صور webp متحركة.

  • image_url_card — البطاقة الأساسية. تكون null للبطاقة الوحيدة التي لا صورة لها (mad_science)، وفي هذه الحالة استخدم 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 متاحة.

صور البطاقات مع التعزيزات

كل بطاقة تُرسم أيضًا مع كل تعزيز يمكن أن تحمله وفق القواعد، تمامًا كما ترسمها معاينة التعزيز داخل اللعبة (الشارة والمقدار ونص البطاقة المضاف). تتبع الروابط نمطًا واحدًا:

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 (مثل sharp، corrupted، sown).
  • لا توجد إلا التركيبات الصالحة بين البطاقات والتعزيزات (التصدير يستخدم قواعد اللعبة نفسها)، لذا التركيبة غير الصالحة تعيد 404. الخانتان card_type / applicable_to في /api/enchantments تبيّنان البطاقات المؤهلة.
  • النسختان الأساسية والمرقّاة متاحتان لكل تركيبة، بكل اللغات الـ14، مع نص التعزيز مترجمًا بالكامل.

تصدير البيانات

نزّل كل بيانات اللعبة في أرشيف ZIP واحد. يحتوي كل أرشيف على ملفات JSON لكل نوع كيان (البطاقات والآثار والوحوش والقوى وغيرها).

وثائق API التفاعلية

وثائق Swagger/OpenAPI كاملة مع إمكانية تجربة الطلبات.

افتح وثائق API →

مفتوح المصدر

Spire Codex مفتوح المصدر. مسار استخراج البيانات و API والواجهة كلها متاحة على GitHub.

اعرض على GitHub →