MineCardsDÉVELOPPEURS
CONSTRUIS AUTOUR DE TA COLLECTION

Ton univers. Tes outils.

Connecte ton projet à MineCards. Une API simple pour explorer les cartes et retrouver tes données, en lecture seule.

API v1
https://minecards.vercel.app/api/v1
  • Clé personnelle requise
  • JSON · GET · HTTPS
  • 60 requêtes / minute / compte
READ ONLY / v1
01 / QUICK START

Ta première requête.

Connecte-toi à MineCards, ouvre Paramètres → Tes clés API et donne un nom à ta connexion. Le code secret n’est affiché qu’une seule fois.

Dans ton environnement serveur, définis MINECARDS_API_KEY avec ce code, puis exécute cet exemple. La variable reste sur ton appareil ou ton serveur.

Exemple cURL
curl --get 'https://minecards.vercel.app/api/v1/cards' \
  --header "Authorization: Bearer $MINECARDS_API_KEY" \
  --data-urlencode 'q=creeper' \
  --data-urlencode 'limit=25'
02 / AUTH

Une clé, un compte.

Toutes les routes de données exigent l’en-tête Authorization: Bearer <clé>, y compris le catalogue et les profils publics. Une session navigateur ou un cookie ne remplace pas une clé.

Garde la clé côté serveur. Ne l’intègre pas dans le JavaScript public d’un site, une URL ou un dépôt. Si elle est exposée, révoque-la dans tes paramètres et crée-en une autre.

Tu peux conserver 5 clés actives et créer au maximum 20 clés par heure. La révocation coupe leur accès. Aucune clé ne peut acheter, échanger, ouvrir un booster ou modifier un compte.

03 / PAGINATION

Des réponses faciles à parcourir.

Les listes acceptent page (1 à 1 000, défaut 1) et limit (1 à 100, défaut 25). Suis nextPage jusqu’à ce qu’il soit nul. hasMore signale des résultats supplémentaires ; la navigation s’arrête à la page 1 000. Aucun total n’est calculé.

Structure d’une liste vide
{
  "data": [],
  "pagination": {
    "page": 1,
    "limit": 25,
    "hasMore": false,
    "nextPage": null
  }
}

Les filtres textuels sont limités à 100 caractères. q recherche un nom ou un identifiant de carte ; category et dimension filtrent les cartes. rarity accepte CHARBON, CUIVRE, FER, OR, DIAMANT ou NETHERITE. Les paramètres inconnus ou répétés sont refusés (400).

Les détails renvoient {data: objet} et n’acceptent pas les paramètres de pagination. Les dates sont au format ISO 8601 UTC ; les intervalles sont exprimés en secondes.

04 / ENDPOINTS

Tout ce que tu peux lire.

GET/cards

Catalogue des cartes

Parcours le catalogue, y compris les cartes inactives. active indique leur disponibilité dans les boosters ; les illustrations utilisent des URL absolues.

Réponse Card[]Filtres q, rarity, category, dimension
GET/cards/{id}

Une carte

Retrouve une carte du catalogue par son identifiant stable, par exemple creeper.

Réponse Card
GET/me/cards

Ta collection

Les cartes disponibles du compte auquel appartient la clé, avec leur stock total et la répartition standard/holographique. Les cartes réservées ne sont pas disponibles.

Réponse OwnCard[]Filtres q, rarity, category, dimension
GET/me/boosters

Tes boosters

Consulte les réserves, dons et prochaines disponibilités sans réclamer ni ouvrir de booster.

Réponse Boosters
GET/profiles

Profils publics

Recherche les profils visibles. Une collection privée n’est jamais exposée par cette liste.

Réponse Profile[]Filtres q
GET/profiles/{id}

Un profil

Consulte les informations publiques d’un joueur. Un profil masqué ou inexistant renvoie 404.

Réponse Profile
GET/arenas

Arènes

Découvre les arènes publiées, leurs adversaires et leurs badges.

Réponse Arena[]
GET/arenas/{id}

Une arène

Consulte les caractéristiques d’une arène sans lancer de bataille.

Réponse Arena
GET/auctions

Enchères

Le filtre status concerne le statut enregistré. Une enchère ACTIVE peut être échue mais encore en attente de règlement.

Réponse Auction[]Filtres status=ACTIVE | SOLD | EXPIRED | CANCELLED | ALL, rarity
GET/auctions/{id}

Une enchère

effectiveStatus tient compte de l’échéance ; settled confirme le règlement. Cette lecture ne déclenche aucun transfert.

Réponse Auction
GET/leaderboard

Classement

Consulte le classement public paginé.

Réponse LeaderboardEntry[]
05 / MODELS

Des données explicites.

Card

id, name, nameEn, description, descriptionEn, category, dimension, minecraftVersion, image, wikiUrl, rarity, attack, defense, power, active, isSecret

image est une URL absolue, ou une chaîne vide si le brouillon n’a pas encore d’illustration. Les textes sont fournis en français et en anglais. rarity peut être nulle si la carte n’est pas encore classée. active reste distinct de sa rareté.

power est la puissance entière de la carte, calculée avec attack + Math.floor(defense * 0.65). Ce calcul est déterministe, sans bonus aléatoire de combat. Elle est présente partout où une carte est renvoyée : catalogue, collection, vitrine de profil, enchères et défense d’arène.

La finition est purement visuelle : elle ne change ni l’identifiant, ni la rareté, ni les statistiques. finish vaut STANDARD ou HOLOGRAPHIC pour une carte de vitrine ou d’enchère ; le catalogue et la collection agrégée décrivent la carte de base sans ce champ.

Extrait des statistiques d’une carte
{
  "attack": 35,
  "defense": 100,
  "power": 100
}

Cartes secrètes

isSecret identifie une découverte Mythique. Ces cartes restent absentes de /cards et /cards/{id}, même pour leur propriétaire. Une carte obtenue peut apparaître dans /me/cards, une vitrine de profil ou une enchère autorisée. Son wikiUrl est null et sa finition est toujours HOLOGRAPHIC.

Le filtre rarity accepte MYTHIQUE sur les listes de cartes, de collection personnelle et d’enchères. Le catalogue public renvoie simplement une liste vide pour cette rareté.

OwnCard

cardId, quantity, standardQuantity, holographicQuantity, card: Card

Une ligne représente une carte de base. quantity reste le stock total disponible : standardQuantity + holographicQuantity. Les exemplaires réservés dans un échange ou une enchère sont exclus des trois compteurs.

Extrait des quantités par finition
{
  "cardId": "creeper",
  "quantity": 3,
  "standardQuantity": 2,
  "holographicQuantity": 1
}

Boosters

available, capacity, intervalSeconds, accruedAt, giftedStandard, giftedPremium, nextAt, premiumAvailable, premiumNextAt, premiumIntervalSeconds, specialAvailable, specialNextAt, specialIntervalSeconds, dailyPremiumAvailable, serverTime

Les délais classiques suivent le compte (600 s ou 180 s). Le booster MineCards+ à taux améliorés suit un délai de 18 000 s. Le booster Éclipse est réservé aux MineCards+ : délai de 43 200 s après chaque ouverture, sans cumul, avec une carte Diamant et une carte Netherite garanties sur 5 cartes. specialAvailable indique sa disponibilité ; specialNextAt est nul sans abonnement actif ou lorsque le booster est disponible. nextAt est nul si la réserve est pleine. dailyPremiumAvailable reste un alias de compatibilité de premiumAvailable.

Profile / ProfileDetail

id, username, bio, avatarId, bannerId, createdAt, premium, showCollection, showActivity

Le détail ajoute jusqu’à 6 showcaseCards et 3 showcaseBadges choisis par le joueur, collection (uniqueCards, totalCards) ou null, et activity (20 entrées maximum) ou null selon ses réglages. La vitrine affiche la finition holographique si le joueur en possède un exemplaire disponible. Les statistiques comptent toujours les cartes de base distinctes et le total des exemplaires. Aucun inventaire complet d’un autre joueur n’est renvoyé.

Arena

id, name, nameEn, description, descriptionEn, dimension, color, badge, champion, defense, score

champion contient id, username, usernameEn, avatarId et isNpc. Pour un PNJ, id et avatarId sont nuls. defense contient jusqu’à 3 cartes. Leurs attack, defense et power utilisent les statistiques enregistrées pour cette défense et peuvent différer du catalogue actuel ; badge peut être nul.

LeaderboardEntry

rank, id, username, avatarId, premium, score

score compte les cartes différentes disponibles dans la collection. Les joueurs privés ou bannis sont exclus du classement.

Auction

id, card, finish, startingPrice, currentBid, status, effectiveStatus, hasEnded, settled, createdAt, endsAt, settledAt, seller, highestBidder, bidCount

finish indique la finition de l’exemplaire vendu : STANDARD ou HOLOGRAPHIC, également présente dans card.finish. seller et highestBidder contiennent id, username et avatarId ; highestBidder peut être nul. effectiveStatus = SOLD ne garantit pas encore le transfert si settled = false.

Les modèles complets et les types sont décrits dans le fichier OpenAPI téléchargeable. OpenAPI 3.1

06 / LIMITS

Prévois les limites.

Le quota de 60 requêtes par minute est partagé par toutes les clés d’un même compte. Respecte Retry-After sur une réponse 429 et espace tes lectures. X-RateLimit-Limit et X-RateLimit-Remaining indiquent le quota ; X-RateLimit-Reset donne sa réinitialisation en secondes Unix. Les réponses utilisent Cache-Control: no-store.

Codes HTTP de l’API
HTTPSignification
400Paramètre incorrect ou non reconnu.
401Clé absente, invalide ou révoquée.
404Ressource introuvable ou non visible.
405Méthode non autorisée : utilise GET.
429Quota dépassé : attends Retry-After.
503Service indisponible : réessaie plus tard.
Format d’erreur
{
  "error": {
    "code": "invalid_api_key",
    "message": "A valid API key is required."
  }
}

OPTIONS répond aux vérifications CORS. Access-Control-Allow-Origin: * permet les intégrations, sans donner d’accès anonyme aux données. Les cookies ne servent pas à l’authentification de cette API.