Kairos Archive

Card

One record per card as a game piece; reprints share one record.

A card is the game piece: its rules, cost and stats. Reprints share one record. Gameplay data lives here and applies to every printing of the card.

Where it appears

  • registry.json → cards[]
  • cards/{codex_id}.json, which adds printings, name_history and card_history
  • index/cards.json, a subset of the fields

Fields

Every field is present on every record; a value that does not apply is null, never missing. Types are from the release's schema; the schema itself is the contract.

FieldTypeMeaning
codex_idcodex ID, C plus six digitsThe card's permanent ID.
namestringThe current name. Earlier names are in name_history.
typestring or nullObserved values: Artifact, Aura, Avatar, Magic, Minion, Site.
categorystring or nullCoarser grouping: Spell (Minion, Magic, Artifact, Aura), Site, Avatar, Token.
raritystring or nullThe rarity printed on the card. Observed values: Ordinary, Exceptional, Elite, Unique; null on Avatars and some tokens.
slotstring or nullThe rarity slot the card is distributed in. Agrees with rarity except for Avatars (no printed rarity) and tokens.
subtypesarray of stringIn upstream's order, e.g. ["Beast", "Spirit"].
elementsarray of stringIn upstream's order. ["None"] means colourless (Artifacts, Avatars, most Sites).
keywordsarray of stringAbility keywords the card carries (Airborne, Genesis, Spellcaster, ...), as upstream tags them.
umbrellasarray of stringCross-subtype groupings rules text refers to (Evil, Knight, Royalty).
costinteger or nullMana cost. null for Sites and Avatars, and for X costs.
attackinteger or nullPrinted attack; null when the card has none.
defenseinteger or nullPrinted defense; null when the card has none.
powerinteger or nullDerived: Sorcery's power - equal to attack when attack equals defense, otherwise floor((attack + defense) / 2); null when either is null. Published so every consumer computes the same number.
lifeinteger or nullOnly Avatars have a life value.
thr_airinteger, 0 or moreAir threshold: the number of Air the card needs in play to be cast. 0 when none.
thr_earthinteger, 0 or moreEarth threshold. 0 when none.
thr_fireinteger, 0 or moreFire threshold. 0 when none.
thr_waterinteger, 0 or moreWater threshold. 0 when none.
rules_textstringCurrent text the card plays by, applying to every printing. Canonicalised: \n line endings, no trailing whitespace, one line per ability. Changes are recorded in rules_history.
backface object: the gameplay fields of a card (see Card) or nullThe back face of a double-faced card; null for every other card. The card's own fields are its front.
erratabooleanRegistry-owned: true once any gameplay field of the card (type, elements, cost, attack, defense, life, thresholds, rules_text, back) has changed since it was printed. Seeded from the old upstream UPDATED: marker; set whenever a sync observes such a change (see card_history); corrected only through data/overrides.json. Rarity, slot, subtypes, keywords and umbrellas are classification, so a change to them is not errata.
set_codesarray of set code: three digits, or three letters for the registry's ownDerived, sorted: the sets this card appears in. For products and finishes, follow printing_ids.
printing_idsarray of printing ID, P plus six digitsDerived, sorted, and it only ever grows.
default_printing_idprinting ID, P plus six digits or nullDerived: the representative printing, by a fixed rule so every consumer picks the same one - not retired, showing the card's current face (printed_as_current) over older values, Booster over other products, Standard over other finishes, most recently released, lowest id. A reprint that changed the card's stats therefore becomes the default even when it is a promo; otherwise a promo never outranks a Booster printing. A registry maintainer can pin a different printing through data/overrides.json, with a reason. null only for a card with no printings.
api_urlstringDerived: this card's JSON object on api.kairosarchive.net, under the moving major alias (/v3/ always redirects to the newest verified v3.x release), so the address leads to the current record from any copy.
kairos_urlstringDerived: this card's page on kairosarchive.net.
image_urlsobject: small, normal, large, original or nullDerived: the image of the card's default_printing_id (its front face), null while that printing has no image.
image_status"missing", "lowres" or "ok"Derived: the default printing's image_status.
origin"api" or "manual"—
manualobject: source, recorded, confirmed_at, withdrawn or null—
notesarray of object: text, source, recordedWhat the registry knows about this card that the official API does not say, oldest first. Empty for most records.

Example

Card · from release v3.4.0
{
  "codex_id": "C000139",
  "name": "Askelon Phoenix",
  "type": "Minion",
  "category": "Spell",
  "rarity": "Elite",
  "slot": "Elite",
  "subtypes": [
    "Beast"
  ],
  "elements": [
    "Fire"
  ],
  "keywords": [
    "Airborne"
  ],
  "umbrellas": [],
  "cost": 5,
  "attack": 4,
  "defense": 4,
  "power": 4,
  "life": null,
  "thr_air": 0,
  "thr_earth": 0,
  "thr_fire": 2,
  "thr_water": 0,
  "rules_text": "Airborne\nIf Askelon Phoenix would take fire damage, it gains +1 power this turn instead.",
  "back": null,
  "errata": true,
  "set_codes": [
    "001",
    "002"
  ],
  "printing_ids": [
    "P000569",
    "P000570",
    "P000571",
    "P000572"
  ],
  "default_printing_id": "P000571",
  "api_url": "https://api.kairosarchive.net/v3/cards/C000139.json",
  "kairos_url": "https://kairosarchive.net/cards/C000139",
  "image_urls": {
    "small": "https://api.kairosarchive.net/images/P000571.806b0ecb6963.small.webp",
    "normal": "https://api.kairosarchive.net/images/P000571.806b0ecb6963.normal.webp",
    "large": "https://api.kairosarchive.net/images/P000571.806b0ecb6963.large.webp",
    "original": "https://api.kairosarchive.net/images/P000571.806b0ecb6963.original.png"
  },
  "image_status": "lowres",
  "origin": "api",
  "manual": null,
  "notes": []
}

Reference: registry API contract and published object definitions. Report a data or documentation issue.