API & Agents

Une API qui pense
comme un wallet.

REST v1 pour les humains. MCP natif pour Claude, ChatGPT, Cursor et tout agent IA. Créez un compte, rechargez, émettez des cartes, dépensez, consultez les transactions, déposez des litiges — entièrement autonome, sans intervention humaine.

REST v1 · 50+ endpoints MCP v0.4 · 40+ outils OAuth 2.1 + DCR Webhooks HMAC
Deux surfaces

Un programme. Deux façons d'intégrer.

REST pour les intégrations que vous contrôlez de bout en bout. MCP pour les agents qui pilotent l'intégration de façon autonome.

API REST v1 Pour vos serveurs, scripts et SDK
  • 50+ endpoints, toutes les actions de compte couvertes
  • Typé JSON Schema · spec OpenAPI 3.1
  • Idempotent, paginé, basé sur les curseurs
  • Clés générées dans le panneau → Paramètres API
  • Webhooks signés HMAC avec protection contre la réémission
  • Limité par clé · burst 60 req/s, soutenu 1000 req/min
  • Rétrocompatible, versionné (v1 LTS à vie)
Catalogue des endpoints
Serveur MCP Pour Claude, ChatGPT, Cursor, Continue, tout agent
  • Serveur Model Context Protocol natif, hébergé par nos soins
  • 40+ outils mappés 1:1 depuis les endpoints REST, noms optimisés pour les agents
  • Transport HTTP streamable · sans état ou avec session
  • OAuth 2.1 + DCR — les agents s'enrôlent eux-mêmes à l'exécution
  • Intégration directe pour Claude Desktop, Cursor, Continue, mcp-cli
  • Permissions par outil — restreindre un agent en lecture seule, ou à une seule carte
  • Même SLA, mêmes limites de débit, même journal d'audit
Intégration MCP
Démarrage rapide

De zéro à une carte active en trois appels.

Inscription, rechargement, émission d'une carte. L'ensemble du flux tient en une seule session shell — pour les humains comme pour les agents.

Les clés API sont générées dans le panneau via /api-settings. Le token bearer ci-dessous est un bearer de session éphémère issu de la réponse d'inscription — pratique pour les tests, mais en production remplacez-le par une clé ccm_live_… persistante.

1 · inscription & obtention d'une clé API
# Create an account — no KYC, no documents
curl https://api.cryptocardium.com/v1/accounts \
  -H "Content-Type: application/json" \
  -d '{
    "email": "[email protected]",
    "password": "long-random-string"
  }'

# → 201 Created · session bearer in the response
{
  "id": "acc_8f3a91b7c4d2",
  "email": "[email protected]",
  "bearer": "sess_94d72b6c..."
}
2 · rechargement de votre trésorerie
# Create a USDT-TRC20 deposit address
curl https://api.cryptocardium.com/v1/topups \
  -H "Authorization: Bearer $CCM_KEY" \
  -H "Idempotency-Key: top_d919ceaf1b4f2f86" \
  -d '{
    "amount_usd": 500,
    "asset": "USDT",
    "chain": "tron"
  }'

{
  "id": "top_4e21a99c7b",
  "status": "pending",
  "amount_usd": 500,
  "deposit_address": "T9zFR...kQp",
  "qr_data_uri": "data:image/png;base64,...",
  "expires_at": "2026-05-19T08:00:00Z"
}
3 · émission d'une carte & dépense
# Once your top-up confirms, issue a Visa Platinum
# loaded with $300, Apple/Google Pay-ready.
curl https://api.cryptocardium.com/v1/cards \
  -H "Authorization: Bearer $CCM_KEY" \
  -d '{
    "type": "virtual",
    "bin": "489517",
    "load_usd": 300,
    "wallet_provision": ["apple_pay", "google_pay"]
  }'

{
  "id": "card_8f3a91b7c4d2",
  "bin": "489517",
  "last4": "4218",
  "status": "active",
  "balance_usd": 300,
  "wallet": {"apple_pay": "ready", "google_pay": "ready"}
}
Catalogue des endpoints

Chaque action, programmable.

Compte, recharges, cartes, transactions, journaux, retraits, contestations, webhooks — toute la surface du panneau, exposée en endpoints REST et outils MCP.

Compte & profil

7 endpoints
  • POST /v1/accounts Créer un nouveau compte (sans KYC, sans documents). create_account
  • POST /v1/sessions Se connecter avec e-mail + mot de passe (retourne le bearer). sign_in
  • DELETE /v1/sessions Déconnecter la session en cours. sign_out
  • GET /v1/accounts/me Retourner le compte courant, le solde, l'état du 2FA. get_account
  • PATCH /v1/accounts/me Mettre à jour l'e-mail, le mot de passe, les notifications du compte. update_account
  • POST /v1/accounts/me/totp Enregistrer un authentificateur (retourne secret + URI). enable_2fa
  • DELETE /v1/accounts/me/totp Désactiver le 2FA (nécessite le mot de passe + un code valide). disable_2fa

Clés API

3 endpoints
  • GET /v1/api_keys Lister vos clés API (préfixe uniquement, jamais le secret). list_api_keys
  • POST /v1/api_keys Créer une nouvelle clé. Texte en clair retourné UNE SEULE FOIS. create_api_key
  • DELETE /v1/api_keys/:id Révoquer une clé immédiatement. revoke_api_key

Solde & trésorerie

2 endpoints
  • GET /v1/balance Solde USDT courant. get_balance
  • GET /v1/balance/history Série temporelle des variations de solde. get_balance_history

Recharges

4 endpoints
  • POST /v1/topups Créer une recharge : retourne l'adresse de dépôt + QR. create_topup
  • GET /v1/topups Lister vos recharges (filtre par statut, date). list_topups
  • GET /v1/topups/:id Obtenir une recharge (statut, confirmations, txid). get_topup
  • POST /v1/topups/:id/cancel Annuler une recharge en attente. cancel_topup

Cartes · émission

5 endpoints
  • GET /v1/cards Lister vos cartes (filtre par statut, type, BIN). list_cards
  • POST /v1/cards Émettre une nouvelle carte (virtuelle ou physique). issue_card
  • GET /v1/cards/:id Métadonnées de la carte (statut, BIN, last4, solde). get_card
  • GET /v1/cards/:id/pan PAN + CVV complets (sensible, usage unique, audité). reveal_pan
  • POST /v1/cards/:id/replace Remplacer une carte (nouveau PAN, réémission virtuelle). replace_card

Cartes · opérations

8 endpoints
  • POST /v1/cards/:id/load Charger de l'USDT depuis le solde sur la carte. load_card
  • POST /v1/cards/:id/unload Rapatrier le solde non dépensé vers votre trésorerie. unload_card
  • POST /v1/cards/:id/freeze Bloquer la carte (autorisations refusées). freeze_card
  • POST /v1/cards/:id/unfreeze Réactiver une carte bloquée. unfreeze_card
  • POST /v1/cards/:id/cancel Annuler définitivement la carte. cancel_card
  • PATCH /v1/cards/:id/limits Définir les plafonds par transaction / jour / mois de la carte. set_card_limits
  • PATCH /v1/cards/:id/mcc Autoriser ou refuser des catégories MCC (listes). set_mcc_rules
  • PATCH /v1/cards/:id/geo Géo-bloquer la carte sur des pays spécifiques. set_card_geo

Transactions

4 endpoints
  • GET /v1/transactions Lister toutes les transactions de carte (paginées). list_transactions
  • GET /v1/transactions/:id Événement unique d'autorisation/capture/remboursement. get_transaction
  • GET /v1/cards/:id/transactions Historique des transactions par carte. list_card_transactions
  • GET /v1/transactions/:id/auth Message d'autorisation brut (champs ISO 8583). get_auth_details

Activité & journaux d'audit

3 endpoints
  • GET /v1/activity Flux d'événements unifié (recharges + cartes + dépenses). get_activity
  • GET /v1/activity?type=error Filtrer par type d'événement (topup/card/spend/error). filter_activity
  • GET /v1/audit_log Journal d'audit du compte (connexions, utilisations de clés). get_audit_log

Retraits

3 endpoints
  • POST /v1/withdrawals Retirer de l'USDT vers un portefeuille externe. withdraw
  • GET /v1/withdrawals Lister vos demandes de retrait. list_withdrawals
  • GET /v1/withdrawals/:id Obtenir un retrait (statut, txid on-chain). get_withdrawal

Contestations & rétrofacturations

4 endpoints
  • POST /v1/disputes Ouvrir une rétrofacturation sur une transaction. file_dispute
  • GET /v1/disputes Lister vos contestations (ouvertes / traitées / clôturées). list_disputes
  • GET /v1/disputes/:id Contestation individuelle (statut, réponse, preuves). get_dispute
  • POST /v1/disputes/:id/evidence Joindre des preuves (reçus, captures d'écran, notes). add_dispute_evidence

Webhooks

5 endpoints
  • GET /v1/webhooks Lister vos abonnements webhook. list_webhooks
  • POST /v1/webhooks S'abonner à des événements (URL + types d'événements). create_webhook
  • PATCH /v1/webhooks/:id Mettre à jour l'URL, les événements ou faire tourner la clé de signature. update_webhook
  • DELETE /v1/webhooks/:id Se désabonner. delete_webhook
  • POST /v1/webhooks/:id/replay/:eid Rejouer un événement vers votre endpoint. replay_webhook

Support & système

4 endpoints
  • POST /v1/tickets Ouvrir un ticket de support (nécessite une carte active). open_ticket
  • GET /v1/tickets Lister vos tickets. list_tickets
  • GET /v1/system/health Bilan de santé (émetteur, rails, statut réseau). get_system_health
  • GET /v1/system/limits Vos limites de débit courantes + plafonds de dépense. get_limits
Autonomie des agents

Ce qu'un agent Claude ou ChatGPT accomplit seul.

Pour une tâche comme « acheter 100 crédits cloud avec de la crypto », un agent enchaîne les appels ci-dessous sans intervention humaine. Chaque étape est un unique appel d'outil.

  1. 01

    POST /v1/accounts · create_account

    L'agent génère un nouvel e-mail et un mot de passe, puis les soumet. Sans KYC, sans documents. Reçoit un token bearer en ~200 ms.

  2. 02

    POST /v1/topups · create_topup

    L'agent demande une recharge dans la crypto supportée de son choix (USDT-TRC20 est la moins chère). Reçoit une adresse de dépôt. Envoie la crypto depuis son portefeuille. Le webhook se déclenche dès confirmation des fonds.

  3. 03

    POST /v1/cards · issue_card

    L'agent sélectionne le BIN adapté au marchand (Visa Business pour les annonces, Visa Platinum pour les portefeuilles mobiles, Visa Corporate pour le SaaS), charge $X et obtient une carte active.

  4. 04

    GET /v1/cards/:id/pan · reveal_pan

    L'agent révèle le PAN + CVV + expiration (usage unique, audité). Les utilise lors du paiement chez le marchand. Les défis 3-D Secure sont approuvés via callback webhook.

  5. 05

    GET /v1/activity · get_activity

    L'agent interroge (ou s'abonne via webhook) les événements d'autorisation. Confirme que la dépense a été traitée. Lit le nom du marchand, le MCC, le montant, la devise.

  6. 06

    POST /v1/cards/:id/freeze · freeze_card

    Mission accomplie. L'agent bloque (ou annule) la carte. Le solde non dépensé peut être rapatrié vers la trésorerie. L'ensemble du flux a pris moins d'une minute.

Intégration MCP

Intégration directe pour Claude, ChatGPT, Cursor.

Ajoutez notre serveur MCP hébergé à la configuration de votre agent. Celui-ci découvre automatiquement 40+ outils — chaque endpoint REST est mappé à un nom d'outil compréhensible par l'agent.

Claude Desktop / Claude Code Runtime d'agent de référence d'Anthropic
~/.config/claude/claude_desktop_config.json
{
  "mcpServers": {
    "cryptocardium": {
      "url": "https://mcp.cryptocardium.com/v1",
      "transport": "http"
    }
  }
}
Cursor / Continue / mcp-cli Tout client compatible MCP
# Streamable HTTP transport, OAuth 2.1 DCR
mcp-cli add cryptocardium \
  --url https://mcp.cryptocardium.com/v1 \
  --auth oauth

# The agent enrols itself on first connection,
# no API key needs to be pasted.
40+ outils

Chaque endpoint REST dispose d'un outil MCP correspondant, nommé pour la compréhension de l'agent. Quelques exemples :

create_account sign_in create_topup get_topup issue_card load_card reveal_pan freeze_card unfreeze_card set_card_limits set_mcc_rules list_transactions get_activity withdraw file_dispute create_webhook get_audit_log get_balance get_system_health … 21 de plus
Auth & sécurité

Trois méthodes d'authentification.

Tokens bearer pour les scripts simples. Clés API pour les serveurs en production. OAuth 2.1 avec DCR pour les agents qui s'enregistrent eux-mêmes.

Session bearer

Issu de POST /v1/sessions. Éphémère (30 jours). Idéal pour les tests et les scripts interactifs.

Authorization: Bearer sess_94d72b6c…

Clé API

Depuis API Settings. Persistante (jusqu'à révocation). Porte les permissions du compte. Recommandée pour les intégrations backend.

Authorization: Bearer ccm_live_a1b2c3d4…

OAuth 2.1 + DCR

Les agents s'enregistrent à l'exécution via le Dynamic Client Registration. Permissions par outil — restreindre un agent en lecture seule, ou à une seule carte spécifique.

POST /oauth/register
  → client_id, client_secret
POST /oauth/token
  → access_token (scoped)
Webhooks

Abonnez-vous à chaque événement.

Payloads signés HMAC-SHA256. Livraison au moins une fois avec nouvelles tentatives. Rejouez n'importe quel événement depuis le tableau de bord ou l'API.

Types d'événements

  • account.created · nouvelle inscription
  • account.signed_in · début de session
  • topup.created · adresse de dépôt émise
  • topup.confirmed · finalité on-chain atteinte
  • topup.expired · fenêtre d'adresse expirée
  • topup.error · règlement échoué (kill-switch, remboursement)
  • card.issued · nouvelle carte active
  • card.loaded · fonds ajoutés à une carte
  • card.frozen · bloquée par l'agent ou l'administrateur
  • card.cancelled · définitivement désactivée
  • transaction.authorized · pré-dépense
  • transaction.captured · réglée par le marchand
  • transaction.refunded · remboursement reçu
  • transaction.declined · avec code de refus
  • dispute.opened · rétrofacturation déposée
  • dispute.resolved · gagnée / perdue
  • withdrawal.broadcasted · transaction on-chain envoyée
  • system.maintenance · maintenance planifiée
vérifier un webhook
# Headers we set on every webhook
Cryptocardium-Signature: t=1718999999,
  v1=4a8b2f...
Cryptocardium-Event-Id: evt_a1b2c3d4

# Verify (Node example)
const sig = req.headers['cryptocardium-signature'];
const [t, v1] = parseSig(sig);
const expected = hmac(
  'sha256',
  SIGNING_SECRET,
  `${t}.${rawBody}`
);
if (!timingSafeEqual(v1, expected)) reject();
60 req/s Rafale

Par clé API. De courtes rafales au-dessus du débit nominal sont tolérées sur des fenêtres inférieures à la seconde.

1k req/min Soutenu

Par clé API. Les requêtes excédentaires reçoivent 429 Too Many Requests avec un en-tête Retry-After.

25 MB Payload max

Corps des requêtes et des réponses. Les preuves de contestation acceptent les uploads en streaming jusqu'à 100 Mo.

99.99% Disponibilité · 90j

Multi-région actif-actif. Page de statut sur status.cryptocardium.com.

Ouvrir l'API

Construisez, automatisez, déléguez à vos agents.
Tout ce que les cartes peuvent faire, votre code peut le faire.

Inscrivez-vous, rendez-vous dans le panneau, générez une clé, branchez-la dans votre agent. Soixante secondes de zéro à la dépense autonome.

FAQ

API et serveur MCP, en clair.

Everything people actually ask. Last updated .

Où se trouve la spécification OpenAPI ?

La spécification OpenAPI 3.1 lisible par machine pour la surface REST v1 est publiée sur https://cryptocardium.com/openapi.json (et le stub YAML sur /openapi.yaml). Importez-la dans Postman, Insomnia, Stoplight ou tout outil IA qui consomme OpenAPI.

Comment fonctionne la découverte du serveur MCP ?

La fiche serveur est publiée sur https://cryptocardium.com/.well-known/mcp/server-card.json (format MCP SEP-1649). Les métadonnées d'autorisation se trouvent sur /.well-known/oauth-authorization-server (RFC 8414) et /.well-known/oauth-protected-resource (RFC 9728). Les clients MCP récupèrent le serveur de bout en bout sans configuration manuelle.

Quels transports MCP sont pris en charge ?

HTTP streamable uniquement (spec MCP 2025-06-18), avec mise à niveau SSE optionnelle pour les opérations longue durée. Le transport HTTP+SSE déprécié n'est pas pris en charge.

Un agent IA peut-il s'enregistrer sans onboarding manuel ?

Oui. Le Dynamic Client Registration (RFC 7591) est pris en charge sur le serveur d'autorisation OAuth 2.1. Un agent POSTe ses métadonnées sur /oauth/register et reçoit immédiatement un client_id et un client_secret. Les portées initiales sont restreintes ; l'agent peut demander des portées élevées via le flux de consentement OAuth standard.

L'API prend-elle en charge les micropaiements x402 ?

Oui. Les endpoints payants peuvent retourner HTTP 402 avec un en-tête PAYMENT-REQUIRED structuré (scheme=exact, network=base, asset=USDC). L'agent réessaie avec PAYMENT-SIGNATURE. Alignement natif avec Visa TAP et Mastercard Agent Pay.

Comment les webhooks sont-ils authentifiés ?

Chaque événement webhook est signé avec HMAC-SHA256. La clé de signature est générée une seule fois lors de l'abonnement, renouvelable à la demande. Les clés d'idempotence permettent une réémission sûre. Événements du cycle de vie couverts : transitions d'état de recharge, émission de carte, autorisation, capture, remboursement, litige, règlement.

Les portées sont-elles par outil ou par appel ?

Les portées sont par outil. Vous pouvez accorder à un agent un accès en lecture seule sur les cartes (card:read), ou en émission uniquement sans révélation (card:issue sans card:reveal_pan), ou le restreindre à une seule carte via des politiques d'accès à grain fin. Les droits de portée sont révocables à tout moment.

Quelle est la limite de débit ?

600 requêtes par minute par clé API, avec un burst de 100 requêtes. Des plafonds plus élevés sur demande via /contact. Les limites sont exposées sur /v1/system/limits.