Pour commencer

Une API JSON en lecture seule sur les mêmes données qui alimentent le site : cartes, decks, tournois et résultats des joueurs.

Pas de clé d'API. Chaque point d'accès est public et ne demande ni authentification, ni jeton, ni inscription.

Chaque requête est un GET. Tous les paramètres passent par la chaîne de requête.

URL de base
https://cardsrealm.com/fr-mc/api/

Le segment de langue fait partie du chemin et détermine la langue des noms de cartes et des autres textes traduits. N'importe quelle locale servie par le site fonctionne.

Choisir le jeu. Deux moyens, au résultat identique : appeler le sous-domaine du jeu, ou passer le paramètre game_id. Sans l'un ni l'autre, vous obtenez le jeu du domaine appelé.

Exemple de requête
curl "https://cardsrealm.com/en-us/api/getRecentDecks?game_id=1&limit=2"
Les prix sont des entiers en centimes. Un price de 77 avec un currency_prefix $ vaut 0,77. Divisez par 100 avant l'affichage.
Usage raisonnable. Aucune limite stricte de débit n'est appliquée aujourd'hui, alors soyez raisonnable : mettez en cache ce que vous pouvez et préférez une requête paginée à beaucoup de petites. C'est l'abus qui ferme une API ouverte.

cardinfo

GET/fr-mc/api/cardinfo

Tout ce que le site sait d'une carte, cherchée par son nom : texte, coût en mana, rareté, éditions et prix actuels.

ParamètreTypeModèleRemarques
cardnamestringPath to exile50 caractères au maximum.
currencystringdevise de la localeTrois lettres.
game_idintjeu du domaine1 = Magic, 2 = Yu-Gi-Oh, 3 = Pokémon, 4 = Runeterra.
language_codestringlangue du cheminLangue du nom et du texte de la carte renvoyés.
Exemple de requête
curl "https://cardsrealm.com/fr-mc/api/cardinfo?cardname=Lightning%20Bolt&currency=USD"
Exemple de réponse
{
  "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"
}

getRecentDecks

GET/fr-mc/api/getRecentDecks

Les decks publiés le plus récemment, du plus récent au plus ancien.

ParamètreTypeModèleRemarques
pageint1Numéro de page.
limitint50Decks par page. Le plafond est 500 ; au-delà, l'appel renvoie une erreur.
game_idint1Comme dans cardinfo.
Exemple de requête
curl "https://cardsrealm.com/fr-mc/api/getRecentDecks?page=1&limit=2"
Exemple de réponse
[
  {
    "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/fr-mc/api/getDeckByID

Une decklist complète. La liste des cartes se trouve sous la clé cards, avec quantité, board (main ou side) et prix par carte.

ParamètreTypeModèleRemarques
deck_idint0L'identifiant numérique du deck.
currencystringBRLTrois lettres.
Exemple de requête
curl "https://cardsrealm.com/fr-mc/api/getDeckByID?deck_id=374859&currency=USD"
Exemple de réponse
{
  "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
    }
  ]
}
Un deck_id inexistant renvoie 200 avec un objet presque vide, pas une erreur. Vérifiez la présence de deck_title avant d'utiliser le reste.

getDeckResults

GET/fr-mc/api/getDeckResults

Les performances d'un archétype : bilan global, plus un détail by_meta de ses résultats face à chaque autre archétype.

ParamètreTypeModèleRemarques
deck_namestringvideNom de l'archétype, 40 caractères au maximum.
weekint4Nombre de semaines en arrière. Le plafond est 52.
formatstringStandard20 caractères au maximum.
game_idint1Comme dans cardinfo.
Exemple de requête
curl "https://cardsrealm.com/fr-mc/api/getDeckResults?deck_name=Grixis%20Affinity&format=Pauper&week=8"

getPlayerResults

GET/fr-mc/api/getPlayerResults

Le bilan d'un joueur, avec un détail by_meta de ses résultats avec chaque archétype.

ParamètreTypeModèleRemarques
player_namestringvide40 caractères au maximum.
weekint52Nombre de semaines en arrière.
player_platformstringcardsrealm_nicknameLe nom sur lequel vous cherchez. L'un de cardsrealm_nickname, mtgo, arena, riot ou display. Toute autre valeur renvoie une erreur.
Exemple de requête
curl "https://cardsrealm.com/fr-mc/api/getPlayerResults?player_name=Carrubs&player_platform=mtgo"

getPastTournaments

GET/fr-mc/api/getPastTournaments

Les tournois déjà disputés, du plus récent au plus ancien.

ParamètreTypeModèleRemarques
pageint1Numéro de page.
formatstringvide20 caractères au maximum. Vide signifie tous les formats.
game_idint1Comme dans cardinfo.
Exemple de requête
curl "https://cardsrealm.com/fr-mc/api/getPastTournaments?format=Pauper&page=1"
Exemple de réponse
[
  {
    "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/fr-mc/api/getTournamentInfo

Un tournoi complet : l'événement, ses rondes dans round_info et le classement final dans standings. Un id inexistant renvoie une liste vide, pas une erreur.

ParamètreTypeModèleRemarques
tournament_idint1L'identifiant numérique du tournoi.
Exemple de requête
curl "https://cardsrealm.com/fr-mc/api/getTournamentInfo?tournament_id=810845"

getUserTournaments

GET/fr-mc/api/getUserTournaments

Les tournois organisés par un compte.

ParamètreTypeModèleRemarques
nicknamestringCards Realm30 caractères au maximum.
Exemple de requête
curl "https://cardsrealm.com/fr-mc/api/getUserTournaments?nickname=leon-diniz"

Erreurs et assistance

CodeSignification
200Succès. Le corps est toujours du JSON.
404L'appel a été rejeté. Le corps est une chaîne JSON indiquant ce qui n'allait pas : un nom trop long, un nombre qui n'en est pas un, ou une valeur hors de la liste acceptée.

Des questions, ou un champ dont vous avez besoin et qui manque ici ? Écrivez-nous sur le Discord. Discord