दस्तावेज़ीकरण

इसके साथ बनाएंCryptocardium।

कार्ड जारी करें, खाते में धन डालें, लेन-देन शुरू करें और उनके जीवनचक्र को देखें — cURL से, किसी भी SDK से, अपने AI एजेंट से। पूरा प्लेटफ़ॉर्म एक स्थिर REST API और एक नेटिव MCP सर्वर है।

स्वागत

Cryptocardium एक no-KYC कार्ड प्रोग्राम है जो क्रिप्टो से वित्त पोषित है। पैनल में आप जो भी कार्रवाई कर सकते हैं — खाता खोलना, टॉप-अप करना, कार्ड जारी करना, उसे लोड करना, खर्च करना, लेन-देन देखना — वह सब उसी REST API और MCP सर्वर के माध्यम से उपलब्ध है।

ये डॉक्स सब कुछ कवर करते हैं: परंपराएँ (API कैसे बात करता है), संसाधन (आप क्या माँग सकते हैं), इवेंट (आप कैसे सिंक में रहते हैं), और एकीकरण (Claude, ChatGPT, Cursor, कोई भी एजेंट)।

API keys पैनल में बनाई जाती हैं।

/account पर साइन अप करें, API Settings खोलें, "New key" पर क्लिक करें। पूरा प्लेनटेक्स्ट एक बार दिखाया जाता है — इसे किसी सीक्रेट मैनेजर में सहेजें।

त्वरित प्रारंभ

शून्य से तीन कॉल में एक लाइव वर्चुअल कार्ड तक। नीचे दिया शेल cURL का उपयोग करता है; किसी भी HTTP क्लाइंट से बदलें।

1. प्रमाणीकरण करें

अपनी API key को Authorization header में रखें। प्रत्येक endpoint के लिए यह आवश्यक है।

export CCM_KEY="ccm_live_a1b2c3d4..."

2. ट्रेज़री में टॉप-अप करें

एक USDT डिपॉज़िट पता बनाएँ। धन भेजें; हम पुष्टि पर जमा करते हैं।

curl https://api.cryptocardium.com/v1/topups \
  -H "Authorization: Bearer $CCM_KEY" \
  -H "Idempotency-Key: top_$(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{ "amount_usd": 500, "asset": "USDT", "chain": "tron" }'

3. कार्ड जारी करें & खर्च करें

एक BIN चुनें (वॉलेट के लिए Visa Platinum, विज्ञापन के लिए Visa Business), उसे लोड करें, और आप लाइव हैं।

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"]
  }'

# → 201 Created · card is live, balance loaded, wallet-ready
बस इतना।

साइनअप से पहले auth तक सैंतालीस सेकंड औसत। शेष अनुभाग बाकी सब कुछ कवर करते हैं — त्रुटि हैंडलिंग, इडेम्पोटेंसी, webhooks, एजेंट सेटअप — जो आपको प्रोडक्शन में चाहिए होगा।

प्रमाणीकरण

तीन प्रकार के क्रेडेंशियल, एकीकरण के आकार के अनुसार चुनें:

प्रकारप्रारूपउपयोग
सेशन bearersess_…इंटरेक्टिव स्क्रिप्ट, परीक्षण, पैनल स्वयं।
API keyccm_live_…प्रोडक्शन सर्वर, CI, शेड्यूल्ड जॉब, दीर्घकालिक।
OAuth 2.1 + DCReyJh… (JWT)एजेंट जो रनटाइम पर स्वयं नामांकित होते हैं, स्कोप्ड अनुदान।

Bearer header

तीनों एक ही header से गुज़रते हैं:

Authorization: Bearer ccm_live_a1b2c3d4...

API key बनाएँ

Keys केवल पैनल में बनाई जाती हैं। हम API पर बिना पैनल सेशन से जुड़े प्रमाणीकृत सेशन के कभी key निर्माण अनुरोध स्वीकार नहीं करते।

  1. अपने खाते में साइन इन करें।
  2. API Settings खोलें।
  3. New key पर क्लिक करें, इसे एक पहचानने योग्य नाम दें, प्लेनटेक्स्ट सहेजें (एक बार दिखाया जाता है)।
  4. किसी सीक्रेट मैनेजर में संग्रहीत करें। अपने वातावरण में CCM_KEY के रूप में जोड़ें।
Keys को पासवर्ड की तरह मानें।

लीक हुई ccm_live_ key में खाता-स्तर की अनुमति होती है। यदि आपको एक्सपोज़र का संदेह हो तो /api-settings के माध्यम से रोटेट करें — रद्दीकरण तत्काल है।

परीक्षण & सैंडबॉक्स

आज, $200 से कम के टॉप-अप लाइव के रूप में स्वीकार किए जाते हैं लेकिन सैंडबॉक्स कार्ड प्रोसेसर की ओर रूट किए जाते हैं, ताकि आप वास्तविक सेटलमेंट जलाए बिना एकीकरण कर सकें। प्रोडक्शन खाते प्रति key सैंडबॉक्स-मोड टॉगल प्राप्त करते हैं।

  • $200+ टॉप-अप → प्रोडक्शन रेल, वास्तविक सेटलमेंट।
  • $200 से कम टॉप-अप → सैंडबॉक्स रेल, सिमुलेटेड ऑथराइज़ेशन।
  • सैंडबॉक्स टॉप-अप से जारी कार्ड "mode": "sandbox" रखते हैं।

Base URL & संस्करण

प्रोडक्शन base URL:

https://api.cryptocardium.com/v1

v1 prefix पथ का हिस्सा है। v1 LTS-फॉरएवर है — इसके अंतर्गत कभी भी ब्रेकिंग परिवर्तन नहीं भेजे जाएंगे। ऐडिटिव परिवर्तन (नए वैकल्पिक फ़ील्ड, नए endpoints) पारदर्शी रूप से भेजे जाते हैं।

ब्रेकिंग परिवर्तन एक नए prefix (v2) के अंतर्गत कम से कम छह महीने के ओवरलैप के साथ जाते हैं। deprecations की घोषणा webhook (system.deprecation) और परिवर्तन सूची के माध्यम से की जाती है।

अनुरोध

सभी अनुरोध HTTPS-केवल हैं (TLS 1.3)। अनुरोध निकाय JSON हैं; नेस्टेड ऑब्जेक्ट प्रथम श्रेणी हैं। फ़ॉर्म-एनकोडेड निकाय समर्थित नहीं हैं।

  • Content-Type: राइट endpoints के लिए application/json
  • <strong>Charset</strong>: सदैव UTF-8।
  • HTTP methods: GET (पढ़ें), POST (बनाएँ / कार्रवाई), PATCH (आंशिक अपडेट), DELETE (हटाएँ)।
  • Header सीमाएँ: कुल 8 KB, प्रति मान 4 KB।
  • Body सीमा: 25 MB (विवाद साक्ष्य अपलोड के लिए 100 MB)।
  • Timeouts: 30 s कनेक्ट, 60 s पढ़ें। दीर्घकालिक ऑपरेशन async हैं।

प्रतिक्रियाएँ

प्रत्येक प्रतिक्रिया JSON है। सफलता प्रतिक्रियाएँ resource body के साथ 200/201/204 लौटाती हैं। त्रुटियाँ एक संरचित error ऑब्जेक्ट लौटाती हैं — त्रुटियाँ देखें।

मानक envelope

{
  "id": "card_8f3a91b7c4d2",
  "object": "card",
  "created_at": "2026-05-19T07:30:00Z",
  "updated_at": "2026-05-19T07:30:00Z",
  ...
}

टाइमस्टैम्प

सभी टाइमस्टैम्प UTC में ISO 8601 हैं, YYYY-MM-DDTHH:MM:SSZ के रूप में स्वरूपित। API में कोई अन्य timezone नहीं है।

मौद्रिक मान

सभी राशियाँ amount_usd फ़ील्ड में USD-समकक्ष दशमलव हैं। दो-दशमलव सटीकता। आंतरिक रूप से USDT द्वारा समर्थित।

पृष्ठांकन

सूची endpoints (/topups, /cards, /transactions, …) cursor-paginated हैं। कोई offset नहीं, कोई SQL LIMIT नहीं।

GET /v1/transactions?limit=50&cursor=tx_8f3a91b7c4d2
  • limit — पृष्ठ आकार, डिफ़ॉल्ट 25, अधिकतम 100।
  • cursor — पिछली प्रतिक्रिया से next_cursor वापस पास करें।
  • पृष्ठांकन प्रत्येक resource के प्राकृतिक क्रम का अनुसरण करता है (आमतौर पर <code>created_at</code> desc)।
{
  "object": "list",
  "data": [ /* 50 items */ ],
  "has_more": true,
  "next_cursor": "tx_2bea88..."
}

फ़िल्टरिंग & क्रमबद्धता

प्रत्येक सूची endpoint query parameters के माध्यम से अपने प्राथमिक फ़ील्ड पर फ़िल्टरिंग का समर्थन करता है:

GET /v1/transactions
  ?card_id=card_8f3a91b7c4d2
  &status=captured
  &created_after=2026-05-01T00:00:00Z
  &sort=-amount_usd

sort parameter एक single फ़ील्ड स्वीकार करता है; अवरोही के लिए - से प्रारंभ करें। समर्थित filter keys के लिए प्रत्येक resource का endpoint संदर्भ देखें।

इडेम्पोटेंसी

प्रत्येक राइट अनुरोध (POST, PATCH, DELETE) एक Idempotency-Key header स्वीकार करता है। प्रति लॉजिकल ऑपरेशन एक unique मान पास करें। समान key के साथ पुनः प्रयास मूल प्रतिक्रिया लौटाते हैं।

POST /v1/cards
Idempotency-Key: card_create_b9f1a4...
Authorization: Bearer ccm_live_...
  • Keys 24 घंटे के लिए संग्रहीत की जाती हैं। उसके बाद, समान key को ताज़ा ऑपरेशन के लिए पुनः उपयोग किया जा सकता है।
  • अनुशंसित प्रारूप: <operation>_<uuid-v4>
  • समान key + अलग body → 409 Conflict के साथ conflict_idempotency_key
  • GET अनुरोध हमेशा idempotent होते हैं और header की आवश्यकता (या स्वीकृति) नहीं करते।

दर सीमाएँ

प्रति API key:

विंडोसीमानोट्स
1 s बर्स्ट60 reqछोटी स्पाइक्स सहन की जाती हैं।
1 मिनट1 000 reqनिरंतर उच्चतम सीमा।
1 दिन50 000 reqप्रति key कुल।

प्रत्येक प्रतिक्रिया में शामिल है:

X-RateLimit-Limit:     1000
X-RateLimit-Remaining: 943
X-RateLimit-Reset:     1718999999

जब आप सीमा पार कर लेते हैं, तो आपको सेकंड में Retry-After header के साथ 429 Too Many Requests मिलेगा। इसका पालन करें; हम बुरे व्यवहार करने वालों पर exponential-backoff लगाते हैं।

त्रुटियाँ

प्रत्येक error प्रतिक्रिया एक ही आकार का उपयोग करती है:

{
  "object": "error",
  "type": "invalid_request_error",
  "code": "missing_required_field",
  "message": "Field 'bin' is required.",
  "param": "bin",
  "request_id": "req_a9f4b1..."
}

HTTP status मैपिंग

Statusप्रकारअर्थ
400invalid_request_errorविकृत payload, अनुपस्थित फ़ील्ड।
401authentication_errorbearer अनुपस्थित या अमान्य।
403permission_errorbearer मान्य है, कार्रवाई अनुमत नहीं (जैसे, balance gate)।
404not_found_errorसंसाधन मौजूद नहीं (या आपका नहीं)।
409conflict_errorState संघर्ष (जैसे, पुनः उपयोग की गई idempotency key)।
419session_expiredपैनल सेशन समाप्त हो गया। पुनः प्रमाणित करें।
422validation_errorPayload वैध JSON है, business rule विफल।
429rate_limit_errorधीमे करें। Retry-After सेकंड में।
500api_errorहमारी गलती। हम पहले ही अलर्ट हो चुके हैं।
503service_unavailableUpstream issuer डाउन है। Auto-retry अनुशंसित।

हमेशा request_id लॉग करें। सपोर्ट टिकट इसे सीधे संदर्भित करते हैं।

खाते

खाता आपका root संसाधन है। बाकी सब कुछ (टॉप-अप, कार्ड, लेन-देन) एक खाते से संबंधित है।

बनाएँ

POST /v1/accounts
{
  "email": "[email protected]",
  "password": "long-random-string"
}

तुरंत एक session bearer लौटाता है। API का उपयोग शुरू करने के लिए कोई KYC नहीं, कोई दस्तावेज़ अपलोड नहीं, कोई ईमेल सत्यापन चरण आवश्यक नहीं।

वर्तमान प्राप्त करें

GET /v1/accounts/me
{
  "id": "acc_8f3a91b7c4d2",
  "email": "[email protected]",
  "balance_usd": 487.20,
  "twofa_enabled": true,
  "created_at": "2026-05-18T20:14:00Z"
}

शेष & ट्रेज़री

खाता शेष खर्च योग्य USDT पूल है। टॉप-अप इसे जमा करते हैं, कार्ड लोड और निकासी इसे डेबिट करते हैं।

GET /v1/balance
{
  "object": "balance",
  "available_usd": 487.20,
  "pending_usd": 200.00,
  "updated_at": "2026-05-19T07:30:00Z"
}

pending_usd में-उड़ान टॉप-अप (अभी तक पुष्टि नहीं) और में-उड़ान कार्ड लोड शामिल हैं।

टॉप-अप

टॉप-अप वह असममित चरण है जहाँ आप ऑन-चेन क्रिप्टो कमिट करते हैं और हम finality के बाद USDT जमा करते हैं।

बनाएँ

POST /v1/topups
{
  "amount_usd": 500,
  "asset": "USDT",
  "chain": "tron"
}

एक डिपॉज़िट पता, QR data URI, और एक expiry (डिफ़ॉल्ट 60 मिनट) लौटाता है। पते पर सटीक राशि भेजें; हम पुष्टि पर जमा करते हैं।

{
  "id": "top_4e21a99c7b",
  "status": "pending",
  "amount_usd": 500,
  "deposit_address": "T9zFR...kQp",
  "qr_data_uri": "data:image/png;base64,...",
  "expires_at": "2026-05-19T08:30:00Z"
}

Status जीवनचक्र

Statusअर्थ
pendingऑन-चेन डिपॉज़िट की प्रतीक्षा में।
completedशेष राशि में धन जमा।
expiredपते की विंडो बंद। विलंबित जमा अभी भी auto-credit होते हैं।
cancelledआपने POST /v1/topups/:id/cancel कॉल किया।
errorसेटलमेंट विफल (दुर्लभ)। Auto-refunded।

पोलिंग के बजाय topup.confirmed webhook को प्राथमिकता दें — यह एक बार फायर होता है और आपको 30+ polls बचाता है।

कार्ड

कार्ड दो प्रकार के होते हैं — वर्चुअल (सेकंड में लाइव) और फ़िज़िकल (5–9 दिन में भेजा जाता है, Visa Gold BIN पर लॉक)।

जारी करें

POST /v1/cards
{
  "type": "virtual",
  "bin": "489517",
  "load_usd": 300,
  "wallet_provision": ["apple_pay", "google_pay"]
}

BIN सूची

BINनामसर्वोत्तमप्रकार
416842Visa Businessविज्ञापन खर्च (3-D Secure)वर्चुअल
557213Mastercard Worldमल्टी-करेंसी, प्रीमियमवर्चुअल
489517Visa PlatinumApple & Google Payवर्चुअल
472305Visa CorporateSaaS सदस्यताएँवर्चुअल
448585Visa Goldकेवल फ़िज़िकल (3-D Secure)फ़िज़िकल

पूरा PAN + CVV प्रकट करें

पूरा कार्ड नंबर, CVV और expiry केवल एक समर्पित, ऑडिटेड कॉल पर लौटाए जाते हैं:

GET /v1/cards/:id/pan
{
  "pan": "4895 1712 ●●●● 4218",
  "cvv": "347",
  "expires_at": "2029-08",
  "audit_id": "audit_8c2e3f..."
}

प्रत्येक reveal audit trail में लॉग किया जाता है। एजेंट्स को प्रति खरीदारी एक बार reveal करना चाहिए, कभी संग्रहीत नहीं करना चाहिए, और उपयोग के बाद memory से हटा देना चाहिए।

ऑपरेशन

  • POST /v1/cards/:id/freeze — ऑथराइज़ेशन रोकें।
  • POST /v1/cards/:id/unfreeze — पुनः शुरू करें।
  • POST /v1/cards/:id/load — कार्ड में USDT जोड़ें।
  • POST /v1/cards/:id/unload — अप्रयुक्त शेष को treasury में वापस ले जाएँ।
  • POST /v1/cards/:id/cancel — स्थायी सेवानिवृत्ति।
  • PATCH /v1/cards/:id/limits — प्रति-कार्ड लेन-देन / मासिक सीमाएँ।
  • PATCH /v1/cards/:id/mcc — MCC allow/deny सूचियाँ।
  • PATCH /v1/cards/:id/geo — देश allow-lists।

कार्ड लोड & शेष राशि

कार्ड शेष USD-समकक्ष USDT में मापी जाती है। एक लोड treasury से कटौती करता है, 2% रेल शुल्क लागू करता है, और कार्ड को क्रेडिट करता है।

POST /v1/cards/:id/load
{ "amount_usd": 200 }
{
  "card_id": "card_8f3a91b7c4d2",
  "loaded_usd": 200.00,
  "rail_fee_usd": 4.00,
  "new_card_balance_usd": 200.00,
  "new_treasury_balance_usd": 283.20
}

लोड atomic हैं — कॉल तभी लौटती है जब धन स्थानांतरित हो जाता है।

लेन-देन

प्रत्येक ऑथराइज़ेशन, capture, refund और decline एक transaction ऑब्जेक्ट है। ये append-only और immutable हैं।

GET /v1/cards/:id/transactions?status=captured&limit=50
{
  "object": "list",
  "data": [
    {
      "id": "tx_b1c2d3",
      "object": "transaction",
      "card_id": "card_8f3a91b7c4d2",
      "status": "captured",
      "amount_usd": 42.95,
      "merchant": { "name": "OpenAI", "mcc": "7372" },
      "auth_response_code": "00",
      "created_at": "2026-05-19T03:14:00Z"
    }
  ],
  "has_more": false
}

status, card_id, mcc, merchant_name, created_after, created_before, amount_min, amount_max पर फ़िल्टर करें।

निकासी

treasury USDT को अपने नियंत्रण वाले किसी भी external wallet में भेजें।

POST /v1/withdrawals
{
  "amount_usd": 100,
  "chain": "tron",
  "address": "T9zFR...kQp"
}

न्यूनतम $10, अधिकतम आपकी पूरी शेष राशि। समर्थित chains: tron (सबसे सस्ता), ethereum, bsc। Cross-network भेजना अपूरणीय है — हमेशा पते की जाँच करें।

विवाद

किसी भी लेन-देन पर chargeback दर्ज करें:

POST /v1/disputes
{
  "transaction_id": "tx_b1c2d3",
  "reason": "duplicate",
  "description": "Merchant charged twice on 2026-05-19, same order #4921."
}

Reason codes: duplicate, not_received, fraud, not_as_described, cancelled_subscription, other

POST /v1/disputes/:id/evidence के माध्यम से साक्ष्य (रसीद, स्क्रीनशॉट, पत्राचार) संलग्न करें। हम आपकी ओर से issuer के साथ दाखिल करते हैं — कोई अतिरिक्त शुल्क नहीं।

Webhooks · सदस्यता

Webhooks घटनाओं को होते ही आपके HTTPS endpoint पर push करते हैं। पोलिंग से बचें; webhooks का उपयोग करें।

POST /v1/webhooks
{
  "url": "https://yourapp.example.com/webhooks/cryptocardium",
  "events": [
    "topup.confirmed",
    "card.issued",
    "transaction.captured",
    "transaction.declined"
  ],
  "description": "Production sync"
}

प्रतिक्रिया में एक signing_secret है — इसे संग्रहीत करें; payloads सत्यापित करने के लिए आपको इसकी आवश्यकता होगी। प्रत्येक इवेंट प्राप्त करने के लिए "*" की सदस्यता लें।

Webhooks · हस्ताक्षर सत्यापन

प्रत्येक webhook Cryptocardium-Signature header में HMAC-SHA256 हस्ताक्षर रखता है:

Cryptocardium-Signature: t=1718999999,v1=4a8b2f0e6c9d...
Cryptocardium-Event-Id:  evt_a1b2c3d4
Cryptocardium-Delivery:  dlv_8f3a91...

अपने signing_secret के साथ "{t}.{rawBody}" पर अपेक्षित हस्ताक्षर की गणना करें। constant-time function का उपयोग करके तुलना करें।

Node.js

import crypto from 'crypto';

export function verify(rawBody, sigHeader, secret) {
  const [t, v1] = sigHeader.split(',')
    .map(s => s.split('=')[1]);
  const expected = crypto
    .createHmac('sha256', secret)
    .update(`${t}.${rawBody}`)
    .digest('hex');
  return crypto.timingSafeEqual(
    Buffer.from(v1), Buffer.from(expected)
  );
}

Python

import hmac, hashlib

def verify(raw_body: bytes, sig_header: str, secret: str) -> bool:
    parts = dict(p.split('=') for p in sig_header.split(','))
    t, v1 = parts['t'], parts['v1']
    expected = hmac.new(
        secret.encode(),
        f"{t}.{raw_body.decode()}".encode(),
        hashlib.sha256
    ).hexdigest()
    return hmac.compare_digest(v1, expected)

PHP

function verify($rawBody, $sigHeader, $secret): bool {
    $parts = [];
    foreach (explode(',', $sigHeader) as $p) {
        [$k, $v] = explode('=', $p, 2);
        $parts[$k] = $v;
    }
    $expected = hash_hmac('sha256',
        "{$parts['t']}.{$rawBody}", $secret);
    return hash_equals($expected, $parts['v1']);
}

Webhooks · पुनः प्रयास & रिप्ले

At-least-once delivery। हम किसी भी non-2xx प्रतिक्रिया या timeout (10 s) पर पुनः प्रयास करते हैं।

प्रयासविलंब
1तत्काल
230 s
35 min
430 min
52 h
612 h
724 h (अंतिम)

dashboard से या POST /v1/webhooks/:id/replay/:event_id के माध्यम से कोई भी इवेंट रिप्ले करें। अपनी तरफ deduplication के लिए Cryptocardium-Event-Id header का उपयोग करें।

इवेंट सूची

Account account.created account.signed_in account.signed_out account.password_changed account.totp_enabled account.totp_disabled
Top-ups topup.created topup.confirmed topup.expired topup.cancelled topup.error
Cards card.issued card.loaded card.unloaded card.frozen card.unfrozen card.cancelled card.replaced
Tx transaction.authorized transaction.captured transaction.refunded transaction.declined transaction.reversed
Dispute dispute.opened dispute.responded dispute.won dispute.lost
Withdraw withdrawal.created withdrawal.broadcasted withdrawal.confirmed withdrawal.failed
System system.maintenance system.deprecation

MCP सर्वर

हम https://mcp.cryptocardium.com/v1 पर एक Model Context Protocol सर्वर होस्ट करते हैं। यह REST endpoints से 1:1 मैपिंग करने वाले 40+ टूल expose करता है, एजेंट-अनुकूल नामों के साथ (create_topup, issue_card, reveal_pan, आदि)।

Transport: Streamable HTTP। Auth: OAuth 2.1 with Dynamic Client Registration — एजेंट पहले connect पर स्वयं नामांकित होते हैं, एजेंट की config में कोई API key paste करने की आवश्यकता नहीं।

MCP · क्लाइंट सेटअप

Claude Desktop / Claude Code

// ~/.config/claude/claude_desktop_config.json
{
  "mcpServers": {
    "cryptocardium": {
      "url": "https://mcp.cryptocardium.com/v1",
      "transport": "http"
    }
  }
}

Cursor / Continue / mcp-cli

# Adds the server, kicks off OAuth DCR on first connect
mcp-cli add cryptocardium \
  --url https://mcp.cryptocardium.com/v1 \
  --auth oauth

अपने browser में ऑथराइज़ करने के बाद, एजेंट को catalog के प्रत्येक टूल तक पहुँच मिलती है (या केवल वे जो आपने granted किए, यदि आपने scope सीमित किया)।

MCP · टूल सूची

टूल REST endpoints को मिरर करते हैं। एक छोटा नमूना (पूरी सूची /api में है):

खाता create_account sign_in get_account enable_2fa
Treasury get_balance create_topup withdraw
कार्ड issue_card load_card reveal_pan freeze_card set_card_limits
Tx & लॉग list_transactions get_activity file_dispute

MCP · OAuth 2.1 + DCR

एजेंट RFC 7591 के माध्यम से स्वयं को dynamically पंजीकृत करते हैं। Flow:

  1. एजेंट POST /oauth/register करता है — client_id & client_secret प्राप्त करता है।
  2. उपयोगकर्ता को browser में ऑथराइज़ करने के लिए prompt किया जाता है (एकल-बार)।
  3. एजेंट access_token (scoped, time-limited) प्राप्त करता है।
  4. बाद के अनुरोध JWT bearer रखते हैं।

प्रति-टूल स्कोप

रजिस्ट्रेशन के समय scope= पास करके किसी एजेंट को केवल-पढ़ने, किसी विशेष कार्ड, या टूल के एक उपसमूह तक सीमित करें। उदाहरण:

scope=read           # list & get only, no writes
scope=cards:write    # manage cards but not withdraw
scope=card:card_8f3a91b7c4d2  # single card

SDK और उदाहरण

आधिकारिक SDK जल्द आ रहे हैं। तब तक, API एक सपाट REST सतह है — हर आधुनिक HTTP क्लाइंट इसे संभालता है।

Node.js (fetch)

const res = await fetch('https://api.cryptocardium.com/v1/cards', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${process.env.CCM_KEY}`,
    'Idempotency-Key': `card_${crypto.randomUUID()}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    type: 'virtual', bin: '489517', load_usd: 300
  })
});
const card = await res.json();

Python (requests)

import requests, os, uuid

r = requests.post(
    'https://api.cryptocardium.com/v1/cards',
    headers={
        'Authorization': f"Bearer {os.environ['CCM_KEY']}",
        'Idempotency-Key': f"card_{uuid.uuid4()}",
    },
    json={'type': 'virtual', 'bin': '489517', 'load_usd': 300}
)
card = r.json()

PHP (curl)

$ch = curl_init('https://api.cryptocardium.com/v1/cards');
curl_setopt_array($ch, [
    CURLOPT_POST => 1,
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ' . $_ENV['CCM_KEY'],
        'Idempotency-Key: card_' . bin2hex(random_bytes(16)),
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'type' => 'virtual',
        'bin' => '489517',
        'load_usd' => 300,
    ]),
]);
$card = json_decode(curl_exec($ch), true);

परिवर्तन-लॉग

अतिरिक्त परिवर्तन पारदर्शी रूप से जारी होते हैं। ब्रेकिंग परिवर्तन एक नए वर्शन प्रिफिक्स के अंतर्गत आते हैं।

  • 2026-05-19 · v1.4 जोड़ा गया

    POST /v1/cards/:id/load और /unload अब परमाणु हैं। card.loaded वेबहुक इवेंट जोड़ा गया।

  • 2026-05-18 · v1.3 जोड़ा गया

    MCP सर्वर mcp.cryptocardium.com पर लाइव। OAuth 2.1 DCR। REST से 40+ टूल मैप किए गए।

  • 2026-05-17 · v1.2 जोड़ा गया

    फिज़िकल गोल्ड कार्ड प्रोग्राम (BIN 448585), Visa Business और Visa Gold पर 3-D Secure।

  • 2026-05-15 · v1.1 बदला गया

    टॉप-अप न्यूनतम सैंडबॉक्स रूटिंग के लिए $20 और प्रोडक्शन रेल के लिए $200 तक कम किया गया।

  • 2026-05-12 · v1.0 जारी किया गया

    v1 LTS। 50+ एंडपॉइंट। Bearer auth + idempotency keys + HMAC webhooks।

सहायता

अटके हुए हैं? दो रास्ते हैं:

विफल रिस्पॉन्स से request_id शामिल करें — इससे समाधान 10× तेज़ हो जाता है।

FAQ

डेवलपर प्रश्न।

Everything people actually ask. Last updated .

OpenAPI विनिर्देश कहाँ है?

OpenAPI 3.1, https://cryptocardium.com/openapi.json (JSON) और /openapi.yaml पर उपलब्ध है। rel="service-desc" के माध्यम से होमपेज से लिंक किया गया है।

अनुरोध कैसे प्रमाणीकृत किए जाते हैं?

तीन विकल्प हैं: (1) साइन-इन से Bearer सेशन, (2) /api-settings पर बनाई गई bearer API key, (3) OAuth 2.1 access token (AI एजेंट्स के लिए अनुशंसित, Dynamic Client Registration का समर्थन करता है)। तीनों को Authorization header में भेजा जाता है।

दर सीमा क्या है?

प्रति API key प्रति मिनट 600 अनुरोध, 100-अनुरोध बर्स्ट के साथ। X-RateLimit-Limit / X-RateLimit-Remaining / X-RateLimit-Reset हेडर प्रत्येक प्रतिक्रिया पर लौटाए जाते हैं। /contact के माध्यम से अनुरोध पर उच्च सीमाएँ उपलब्ध हैं।

इडेम्पोटेंसी कैसे काम करती है?

POST और PATCH पर Idempotency-Key header (कोई भी UUID या 32-बाइट रैंडम स्ट्रिंग) पास करें। 24 घंटों के भीतर समान पुनः प्रयास कैश की गई प्रतिक्रिया लौटाते हैं। समान key के साथ अलग पेलोड 409 Conflict लौटाते हैं।

त्रुटियाँ कैसे लौटाई जाती हैं?

प्रत्येक non-2xx प्रतिक्रिया { "error": "machine_readable_code", "message": "Human-readable", "request_id": "req_..." } के रूप में होती है। error code प्रामाणिक मशीन-पठनीय पहचानकर्ता है; अपने क्लाइंट लॉजिक को उससे मैप करें, message से नहीं।

क्या क्लाइंट SDK उपलब्ध हैं?

cURL, JavaScript (Node + Fetch) और Python में कोड नमूने पूरे डॉक्स में इनलाइन हैं। आधिकारिक SDK GitHub संगठन के माध्यम से उपलब्ध हैं; समुदाय SDK /api से लिंक किए गए हैं।

क्या कोई सैंडबॉक्स वातावरण है?

हाँ। /api-settings से एक test API key का उपयोग करें (sk_test_ से प्रारंभ)। सभी endpoints मिरर किए गए हैं; सैंडबॉक्स में जारी किए गए कार्ड वास्तविक कार्ड रेल पर क्लियर नहीं होते।