Skip to main content
A ruling is an authoritative explanation of how a Card’s effect interacts with another rule, card, or game state. Rulings are issued by the Elestrals organized-play team in response to actual questions that came up at events, and they’re the source of truth when a card’s printed text is ambiguous. Every Card carries a rulings array. Most have zero entries; a few well-traveled cards have a half-dozen.

The shape

Fields

How rulings work

  • Rulings do not modify the Card’s effects array. The printed text is still the printed text; the ruling is an external clarification.
  • Rulings are cumulative. A new ruling doesn’t supersede an older one unless explicitly stated. Display them all, ordered by date.
  • Rulings don’t have format scope today. A ruling on a Card applies in every format. If that ever changes, the field will become non-null non-breakingly.

Display recommendations

The expected UI pattern is to show the Card’s printed effect text first, then a clearly labeled “Rulings” section underneath:
Don’t merge ruling text into the effect text. They serve different purposes and your users should be able to tell them apart at a glance.

When rulings change

Existing ruling text is treated as immutable once issued. If a previous ruling was wrong or the rules engine has shifted, the original ruling stays in place (with its original id and date) and a new ruling is appended that supersedes it. The text of the newer ruling will say so explicitly:
This is intentional: TCG players have long memories and a ruling that silently changed would erode trust.

Card vs Printing

Rulings live on the Card, not on individual Printings. A reprint of the same Card carries the same rulings array. There is no separate ruling system for promo-only or starter-deck cards — if a card-game-mechanic ruling exists, it’s on the Card record.

Searching by ruling text

There is no full-text endpoint for rulings today. If you need to find every Card whose ruling mentions “counter rune,” you’ll need to fetch the Card list via the updated_since cycle and grep client-side. We track interest in a /v1/rulings/search endpoint — write to support if your use case needs it.