はじめに

サイト本体と同じデータを読み取り専用で提供する JSON API です。カード、デッキ、大会、プレイヤー成績を扱います。

API キーは不要です。 すべてのエンドポイントは公開されており、認証もトークンも登録も不要です。

GET でも POST でもよく、パラメータはクエリ文字列でもボディでも送れます。 下の「パラメータの送信」を参照してください。

ベース URL
https://cardsrealm.com/ja-jp/api/

言語セグメントはパスの一部で、カード名やその他の翻訳テキストの言語を決めます。サイトが対応するロケールならどれでも使えます。

ゲームの選び方。 方法は2つあり、結果は同じです。ゲーム専用のサブドメインを呼ぶか、game_id パラメータを渡すか。どちらも指定しない場合は、呼び出したドメインのゲームになります。

リクエスト例
curl "https://cardsrealm.com/en-us/api/getRecentDecks?game_id=1&limit=2"
価格はセント単位の整数です。 price が 77 で currency_prefix が $ なら 0.77 です。表示する前に 100 で割ってください。
適正な利用について。 現在、厳密なレート制限はかけていません。常識的にご利用ください。キャッシュできるものはキャッシュし、小さなリクエストを多数投げるよりページ単位のリクエストをお使いください。公開 API を閉じさせるのは濫用です。

パラメータの送信

すべてのエンドポイントは GET と POST の両方に応答し、以下のどの形式からでもパラメータを読み取ります。応答は変わりません。

送信方法Content-Type
クエリ文字列(GET または POST)—
単純なフォームapplication/x-www-form-urlencoded
マルチパートフォームmultipart/form-data
JSONapplication/json
同じ呼び出しを3通りで
curl "https://cardsrealm.com/ja-jp/api/getRecentDecks?game_id=1&limit=2"

curl -X POST "https://cardsrealm.com/ja-jp/api/getRecentDecks" \
     -d "game_id=1" -d "limit=2"

curl -X POST "https://cardsrealm.com/ja-jp/api/getRecentDecks" \
     -H "Content-Type: application/json" \
     -d '{"game_id": 1, "limit": 2}'
数値は数値のままで構いません。 フォームではすべての値が文字列として届きますが、JSON なら "1" ではなく 1 を送れます。どちらもすべてのエンドポイントで受け付けます。
Content-Type ヘッダーを手で設定しないでください Postman、Insomnia、HTTP ライブラリでのことです。ツールに書かせてください。マルチパートでは boundary を含める必要があり、ボディと一致しない Content-Type はすべてのフィールドを空で届かせます。その場合の応答は、あなたのフィールドではなく封筒についての 400 です。
レスポンス
{
  "error": "リクエストのボディからフィールドを読み取れませんでした。form-data、x-www-form-urlencoded、または JSON で送ってください。",
  "hint": "Postman や Insomnia を使っている場合は、Content-Type ヘッダーを削除してツールに生成させてください。"
}
ブラウザからの呼び出しも可能です。 自分のドメインのページから、ブラウザで直接呼び出せます。Cookie も認証情報も読み取りません。

cardinfo

GET/ja-jp/api/cardinfo

カード名で引いた1枚の全情報。テキスト、マナ・コスト、レアリティ、収録セット、現在の価格を返します。

パラメータタイプパターン注意事項
cardnamestringPath to exile最大50文字。
currencystringロケールの通貨3文字。
game_idintドメインのゲーム1 = Magic, 2 = Yu-Gi-Oh, 3 = Pokémon, 4 = Runeterra.
language_codestringパスの言語返されるカード名とテキストの言語。
リクエスト例
curl "https://cardsrealm.com/ja-jp/api/cardinfo?cardname=Lightning%20Bolt&currency=USD"
レスポンス例
{
  "name_of_card": "Lightning Bolt",
  "name_ing": "Lightning Bolt",
  "type_of_card": "Instant",
  "text_of_card": "Lightning Bolt deals 3 damage to any target.",
  "price": 77,
  "currency_prefix": "$",
  "path_of_card": "oj7-lightning-bolt",
  "card_url": "https://mtg.cardsrealm.com/en-us/card/lightning-bolt"
}

getCardsInfo

GET/ja-jp/api/getCardsInfo

複数のカードの名前・画像・裏面・タイプを 1 回の呼び出しで返します。cardinfo の内容から価格と各版を除いたもので、デッキリスト全体をまとめて扱えます。

パラメータタイプパターン注意事項
cardsstring必須英語のカード名を | で区切って指定します。名前は最大 250 件、1 件につき最大 100 文字です。指定がない場合は 400 を返します。
game_idintドメインのゲームcardinfo と同じです。
language_codestringパスの言語返されるカード名と画像の言語。
リクエスト例
curl "https://cardsrealm.com/ja-jp/api/getCardsInfo?cards=Lightning%20Bolt%7CSol%20Ring"
レスポンス例
[
  {
    "name_ing": "Lightning Bolt",
    "name_of_card": "Lightning Bolt",
    "image_of_card": "https://cdn.cardsrealm.com/images/cartas/clu-ravnica-clue-edition/EN/med/lightning-bolt-141.png?5541",
    "back_of_card": "",
    "type_of_card": "Instant"
  },
  {
    "name_ing": "Sol Ring",
    "name_of_card": "Sol Ring",
    "image_of_card": "https://cdn.cardsrealm.com/images/cartas/sld-secret-lair-drop/EN/med/sol-ring-2063.png?7315",
    "back_of_card": "",
    "type_of_card": "Artifact"
  }
]
サイトが知らない名前は結果に含まれません。送った一覧と返ってきた一覧を突き合わせてください。

getCardsRelated

GET/ja-jp/api/getCardsRelated

カードのリストが一緒に持ち込むカード――生成するトークン、紋章、呼び出すカード。デッキリストを手元に持っていて、そのデッキにどのトークンが必要かを知りたい人のためのもので、デッキ全体を1回のリクエストで調べられます。

パラメータタイプパターン注意事項
cardsstring必須英語のカード名を | で区切って指定します。名前は最大 250 件、1 件につき最大 100 文字です。指定がない場合は 400 を返します。
game_idintドメインのゲームcardinfo と同じです。
language_codestringパスの言語返されるカード名とテキストの言語。
リクエスト例
curl "https://cardsrealm.com/ja-jp/api/getCardsRelated?cards=Young%20Pyromancer%7CLingering%20Souls"
レスポンス例
[
  {
    "card_id": 20194,
    "name_of_card": "Elemental Token",
    "name_ing": "Elemental Token",
    "image_of_card": "https://cdn.cardsrealm.com/images/cartas/tdsc-duskmourn-commander-tokens/EN/med/elemental-token-9.png?1457",
    "back_of_card": "https://cdn.cardsrealm.com/images/cartas/tust-unstable-tokens/en/back/elemental-token-11.png?3508",
    "type_of_card": "Token creature — elemental",
    "set_name": "Duskmourn: House of Horror Commander Tokens",
    "related_to": "Young Pyromancer"
  }
]
related_to には、そのカードを場に出すリスト内のカード名が " | " 区切りで入ります。デッキの2枚のカードが生成する同じトークンは、両方の名前を添えて1回だけ返ります。
トークンはそれを生成するカードの版で返され、image_of_cardはその版の画像です。リスト内の異なるカードが同じトークンの異なる版を生成する場合、同じトークン名が異なるイラストで複数回返ることがあります。複数のセットで再録されたカードは最新の版で返されます。

getCardArts

GET/ja-jp/api/getCardArts

1 枚のカードのすべてのアート(印刷版)を、新しい順に返します。カードページに表示されるエディション一覧と同じものを、card_id ではなくカード名で検索します。デッキリストしか手元にない場合を想定しており、たとえば play.cardsrealm.com のテーブルでは対戦中にカードのアートを差し替えられます。

パラメータタイプパターン注意事項
cardnamestring必須カード名。英語、または language_code の言語で指定します。最大 100 文字。指定しない場合、呼び出しは 400 を返します。
game_idintドメインのゲームcardinfo と同じです。
language_codestringパスの言語返されるカード名と画像の言語。
リクエスト例
curl "https://cardsrealm.com/ja-jp/api/getCardArts?cardname=Lightning%20Bolt"
レスポンス例
[
  {
    "card_set_id": 9525351,
    "print_name": "Secret Lair Drop",
    "set_rarity": 2,
    "set_number": "2579",
    "set_artist": "Jessica Fong",
    "name_ing": "Lightning Bolt",
    "name_of_card": "Lightning Bolt",
    "image_of_card": "https://cdn.cardsrealm.com/images/cartas/sld-secret-lair-drop/EN/med/lightning-bolt-2579.png?2214",
    "back_of_card": ""
  }
]
レスポンスは最大 120 件の印刷版のリストで、新しいものから古いものの順に並びます。片面だけのカードでは back_of_card は空になります。

getDeckByPath

GET/ja-jp/api/getDeckByPath/<deck_path>

getDeckByID と同じデッキを、リンクに含まれるパスから返します。id ではなくリンクしかない場合に使います。

パラメータタイプパターン注意事項
deck_pathstring必須クエリ文字列ではなく URL に入れます。リンクの /decks/ の後ろの部分です(mkh-sidar)。
currencystringBRL3文字。
リクエスト例
curl "https://cardsrealm.com/ja-jp/api/getDeckByPath/mkh-sidar"
応答は getDeckByID と同じで、該当するデッキがなければ 404 を返します。

getRecentDecks

GET/ja-jp/api/getRecentDecks

最近公開されたデッキを新しい順に返します。

パラメータタイプパターン注意事項
pageint1ページ番号。
limitint501ページあたりのデッキ数。上限は500で、超えるとエラーを返します。
game_idint1cardinfo と同じです。
リクエスト例
curl "https://cardsrealm.com/ja-jp/api/getRecentDecks?page=1&limit=2"
レスポンス例
[
  {
    "deck_id": 374859,
    "deck_title": "Attack of the myrs",
    "deck_owner": "jarrod long",
    "deck_format_name": "Commander",
    "deck_colours": "B G R U W",
    "total_cards": 100,
    "deck_url": "https://cardsrealm.com/decks/en-us/l8dh-attack-of-the-myrs"
  }
]

getDeckByID

GET/ja-jp/api/getDeckByID

デッキリストの全文。カード一覧は cards キーに入り、枚数・board(main または side)・カードごとの価格を含みます。

パラメータタイプパターン注意事項
deck_idint0デッキの数値 id。
currencystringBRL3文字。
リクエスト例
curl "https://cardsrealm.com/ja-jp/api/getDeckByID?deck_id=374859&currency=USD"
レスポンス例
{
  "deck_title": "Attack of the myrs",
  "user_name": "jarrod long",
  "tour_type_name": "Commander",
  "deck_quantity_main": 99,
  "deck_quantity_side": 1,
  "cards": [
    {
      "name_ing": "Command Tower",
      "deck_quantity": 1,
      "deck_sideboard": 0,
      "card_price_total": 18
    }
  ]
}
存在しない deck_id は、エラーではなく 200 とほぼ空のオブジェクトを返します。残りを使う前に deck_title があるか確認してください。

getDeckResults

GET/ja-jp/api/getDeckResults

アーキタイプの成績。全体の戦績に加え、他の各アーキタイプとの対戦成績を by_meta で返します。

パラメータタイプパターン注意事項
deck_namestring空アーキタイプ名。最大40文字。
weekint4何週間さかのぼるか。上限は52です。
formatstringStandard最大20文字。
game_idint1cardinfo と同じです。
リクエスト例
curl "https://cardsrealm.com/ja-jp/api/getDeckResults?deck_name=Grixis%20Affinity&format=Pauper&week=8"

getPlayerResults

GET/ja-jp/api/getPlayerResults

プレイヤーの成績。by_meta で各アーキタイプごとの内訳も返します。

パラメータタイプパターン注意事項
player_namestring空最大40文字。
weekint52何週間さかのぼるか。
player_platformstringcardsrealm_nicknameどの名前で検索するか。cardsrealm_nickname、mtgo、arena、riot、display のいずれかです。それ以外はエラーになります。
リクエスト例
curl "https://cardsrealm.com/ja-jp/api/getPlayerResults?player_name=Carrubs&player_platform=mtgo"

getPastTournaments

GET/ja-jp/api/getPastTournaments

すでに開催された大会を新しい順に返します。

パラメータタイプパターン注意事項
pageint1ページ番号。
formatstring空最大20文字。空欄はすべてのフォーマットを意味します。
game_idint1cardinfo と同じです。
リクエスト例
curl "https://cardsrealm.com/ja-jp/api/getPastTournaments?format=Pauper&page=1"
レスポンス例
[
  {
    "tournament_id": 810845,
    "tournament_name": "Domingooouuu Pauper 86",
    "tournament_path": "https://cardsrealm.com/tournament/en-us/1k3c9-domingooouuu-pauper-86",
    "format_name": "Pauper",
    "game_name": "Magic: the Gathering",
    "datetime_utc": "Sun, 16 Aug 2026 16:30:00 GMT"
  }
]

getTournamentInfo

GET/ja-jp/api/getTournamentInfo

大会の全情報。大会そのものに加え、各ラウンドを round_info、最終順位を standings で返します。存在しない id はエラーではなく空のリストを返します。

パラメータタイプパターン注意事項
tournament_idint1大会の数値 id。
リクエスト例
curl "https://cardsrealm.com/ja-jp/api/getTournamentInfo?tournament_id=810845"

getUserTournaments

GET/ja-jp/api/getUserTournaments

あるアカウントが主催した大会。

パラメータタイプパターン注意事項
nicknamestringCards Realm最大30文字。
リクエスト例
curl "https://cardsrealm.com/ja-jp/api/getUserTournaments?nickname=leon-diniz"

エラーとサポート

コード意味
200成功。ボディは常に JSON です。
400呼び出しが拒否されました。名前が長すぎる、数値でない数値、許可されていない値、または読み取れないボディのいずれかです。
500こちら側で何かが壊れています。ぜひご連絡ください。

拒否された呼び出しは 400 とオブジェクトを返します。invalid_fields は確認すべきパラメータを挙げ、特定のフィールドが原因でない場合は含まれません。

レスポンス
{
  "error": "週は数値である必要があります",
  "invalid_fields": ["week"]
}
これは2026年9月8日に変わりました。 以前、拒否された呼び出しは 404 と裸の文字列を返していました。メッセージは同じですが、ステータスと封筒は違います。 変更履歴

質問や、ここにない項目が必要な場合は Discord までご連絡ください。 Discord