Dokumentasi

Bangun denganCryptocardium.

Terbitkan kartu, danai akun, jalankan transaksi, dan pantau siklus hidupnya — dari cURL, dari SDK mana pun, atau dari agen AI Anda. Seluruh platform tersedia dalam satu REST API yang stabil dan satu server MCP native.

Selamat datang

Cryptocardium adalah program kartu tanpa KYC yang didanai dengan kripto. Setiap tindakan yang dapat Anda lakukan di panel — membuka akun, top-up, menerbitkan kartu, mengisi kartu, bertransaksi, memantau transaksi — tersedia melalui REST API dan server MCP yang sama.

Dokumentasi ini mencakup segalanya: konvensi (cara API berkomunikasi), sumber daya (apa yang bisa Anda minta), event (cara tetap tersinkronisasi), dan integrasi (Claude, ChatGPT, Cursor, agen apa pun).

API key dibuat di panel.

Daftar di /account, buka Pengaturan API, klik "Key baru". Teks lengkap ditampilkan sekali — salin ke secret manager Anda.

Mulai cepat

Dari nol ke kartu virtual aktif dalam tiga panggilan. Shell di bawah menggunakan cURL; ganti dengan klien HTTP apa pun.

1. Autentikasi

Tempatkan API key Anda di header Authorization. Setiap endpoint memerlukannya.

export CCM_KEY="ccm_live_a1b2c3d4..."

2. Isi ulang treasury

Buat alamat deposit USDT. Kirim dana; kami kreditkan setelah konfirmasi.

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. Terbitkan kartu & mulai transaksi

Pilih BIN (Visa Platinum untuk dompet, Visa Business untuk iklan), isi saldonya, dan kartu Anda siap digunakan.

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
Selesai.

Empat puluh tujuh detik median dari pendaftaran hingga autentikasi pertama. Bagian-bagian berikutnya mencakup hal lainnya — penanganan kesalahan, idempotency, webhooks, pengaturan agen — yang Anda perlukan di lingkungan produksi.

Autentikasi

Tiga jenis kredensial, dipilih berdasarkan bentuk integrasi:

JenisFormatDigunakan untuk
Bearer sesisess_…Skrip interaktif, pengujian, panel itu sendiri.
API keyccm_live_…Server produksi, CI, pekerjaan terjadwal, penggunaan jangka panjang.
OAuth 2.1 + DCReyJh… (JWT)Agen yang mendaftarkan diri saat runtime, pemberian izin terlingkup.

Header Bearer

Ketiganya melewati header yang sama:

Authorization: Bearer ccm_live_a1b2c3d4...

Buat API key

Key hanya dibuat di panel. Kami tidak pernah menerima permintaan pembuatan key melalui API tanpa sesi terotentikasi yang terhubung ke sesi panel itu sendiri.

  1. Masuk ke akun Anda.
  2. Buka Pengaturan API.
  3. Klik Key baru, beri nama yang mudah dikenali, simpan teks lengkapnya (ditampilkan sekali).
  4. Simpan di secret manager. Tambahkan ke lingkungan Anda sebagai CCM_KEY.
Perlakukan key seperti kata sandi.

Key ccm_live_ yang bocor memiliki izin tingkat akun. Putar ulang melalui /api-settings jika Anda mencurigai kebocoran — pencabutan berlaku seketika.

Pengujian & sandbox

Saat ini, top-up di bawah $200 diterima secara langsung tetapi diarahkan ke prosesor kartu sandbox, sehingga Anda dapat melakukan integrasi tanpa menggunakan penyelesaian nyata. Akun produksi mendapatkan pengalih mode sandbox per key.

  • Top-up $200+ → jalur produksi, penyelesaian nyata.
  • Top-up <$200 → jalur sandbox, otorisasi simulasi.
  • Kartu yang diterbitkan dari top-up sandbox memiliki "mode": "sandbox".

URL dasar & versi

URL dasar produksi:

https://api.cryptocardium.com/v1

Awalan v1 adalah bagian dari path. v1 adalah LTS selamanya — tidak ada perubahan yang memutus kompatibilitas yang akan pernah dikirimkan di bawahnya. Perubahan tambahan (kolom opsional baru, endpoint baru) dikirimkan secara transparan.

Perubahan yang memutus kompatibilitas akan berada di bawah awalan baru (v2) dengan tumpang tindih setidaknya enam bulan. Penghentian diumumkan melalui webhook (system.deprecation) dan riwayat perubahan.

Permintaan

Semua permintaan hanya HTTPS (TLS 1.3). Body permintaan berformat JSON; objek bersarang adalah kelas pertama. Body berformat form-encoded tidak didukung.

  • Content-Type: application/json untuk endpoint tulis.
  • <strong>Charset</strong>: UTF-8 selalu.
  • Metode HTTP: GET (baca), POST (buat / aksi), PATCH (pembaruan sebagian), DELETE (hapus).
  • Batas header: total 8 KB, 4 KB per nilai.
  • Batas body: 25 MB (100 MB untuk unggahan bukti sengketa).
  • Batas waktu: 30 detik koneksi, 60 detik baca. Operasi yang berjalan lama bersifat asinkron.

Respons

Setiap respons berformat JSON. Respons sukses mengembalikan 200/201/204 beserta body sumber daya. Kesalahan mengembalikan objek kesalahan terstruktur — lihat Kesalahan.

Amplop standar

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

Stempel waktu

Semua stempel waktu adalah ISO 8601 dalam UTC, diformat sebagai YYYY-MM-DDTHH:MM:SSZ. Tidak ada zona waktu lain dalam API.

Nilai moneter

Semua jumlah adalah desimal setara USD dalam kolom amount_usd. Presisi dua desimal. Didukung secara internal oleh USDT.

Paginasi

Endpoint daftar (/topups, /cards, /transactions, …) menggunakan paginasi berbasis kursor. Tidak ada offset, tidak ada LIMIT SQL.

GET /v1/transactions?limit=50&cursor=tx_8f3a91b7c4d2
  • limit — ukuran halaman, default 25, maks 100.
  • cursor — kirim kembali next_cursor dari respons sebelumnya.
  • Paginasi mengikuti urutan alami setiap sumber daya (biasanya <code>created_at</code> desc).
{
  "object": "list",
  "data": [ /* 50 items */ ],
  "has_more": true,
  "next_cursor": "tx_2bea88..."
}

Pemfilteran & pengurutan

Setiap endpoint daftar mendukung pemfilteran pada kolom utamanya melalui parameter kueri:

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

Parameter sort menerima satu kolom; awali dengan - untuk urutan menurun. Lihat referensi endpoint setiap sumber daya untuk kunci filter yang didukung.

Idempotency

Setiap permintaan tulis (POST, PATCH, DELETE) menerima header Idempotency-Key. Berikan nilai unik per operasi logis. Percobaan ulang dengan key yang sama mengembalikan respons asli.

POST /v1/cards
Idempotency-Key: card_create_b9f1a4...
Authorization: Bearer ccm_live_...
  • Key disimpan selama 24 jam. Setelah itu, key yang sama dapat digunakan kembali untuk operasi baru.
  • Format yang disarankan: <operation>_<uuid-v4>.
  • Key sama + body berbeda → 409 Conflict dengan conflict_idempotency_key.
  • Permintaan GET selalu idempoten dan tidak memerlukan (atau menerima) header tersebut.

Batas laju

Per API key:

JendelaBatasCatatan
Burst 1 detik60 reqLonjakan singkat ditoleransi.
1 menit1 000 reqBatas berkelanjutan.
1 hari50 000 reqAgregat per key.

Setiap respons membawa:

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

Saat melampaui batas, Anda akan mendapat 429 Too Many Requests beserta header Retry-After dalam detik. Patuhi hal ini; kami menerapkan exponential backoff pada pengguna yang berlebihan.

Kesalahan

Setiap respons kesalahan menggunakan bentuk yang sama:

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

Pemetaan status HTTP

StatusJenisArti
400invalid_request_errorPayload tidak valid, kolom yang diperlukan tidak ada.
401authentication_errorBearer tidak ada atau tidak valid.
403permission_errorBearer valid, tindakan tidak diizinkan (misalnya, gerbang saldo).
404not_found_errorSumber daya tidak ada (atau bukan milik Anda).
409conflict_errorKonflik status (misalnya, idempotency key yang digunakan ulang).
419session_expiredSesi panel habis waktu. Autentikasi ulang.
422validation_errorJSON payload valid, aturan bisnis gagal.
429rate_limit_errorPerlambat. Retry-After dalam detik.
500api_errorKesalahan kami. Kami sudah mendapat peringatan.
503service_unavailablePenerbit upstream down. Percobaan ulang otomatis disarankan.

Selalu catat request_id. Tiket dukungan merujuk langsung ke sana.

Akun

Akun adalah sumber daya root Anda. Semua yang lain (top-up, kartu, transaksi) dimiliki oleh sebuah akun.

Buat

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

Mengembalikan bearer sesi seketika. Tanpa KYC, tanpa unggahan dokumen, tanpa langkah verifikasi email yang diperlukan untuk mulai menggunakan API.

Ambil akun saat ini

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

Saldo & treasury

Saldo akun adalah kumpulan USDT yang dapat dibelanjakan. Top-up mengkreditnya, pemuatan kartu dan penarikan mendebitnya.

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

pending_usd mencakup top-up dalam proses (belum dikonfirmasi) dan pemuatan kartu dalam proses.

Top-up

Top-up adalah langkah asimetris di mana Anda mengkomit kripto on-chain dan kami mengkreditkan USDT setelah finalitas.

Buat

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

Mengembalikan alamat deposit, URI data QR, dan waktu kedaluwarsa (default 60 menit). Kirim jumlah yang tepat ke alamat; kami kreditkan setelah konfirmasi.

{
  "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"
}

Siklus hidup status

StatusArti
pendingMenunggu deposit on-chain.
completedDana dikreditkan ke saldo.
expiredJendela alamat ditutup. Deposit terlambat tetap dikreditkan otomatis.
cancelledAnda memanggil POST /v1/topups/:id/cancel.
errorPenyelesaian gagal (jarang terjadi). Dikembalikan otomatis.

Lebih baik gunakan webhook topup.confirmed daripada polling — hanya terpicu sekali dan menghemat 30+ polling.

Kartu

Kartu hadir dalam dua jenis — virtual (aktif dalam hitungan detik) dan fisik (dikirim dalam 5–9 hari, terkunci pada BIN Visa Gold).

Terbitkan

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

Katalog BIN

BINNamaTerbaik untukJenis
416842Visa BusinessBelanja iklan (3-D Secure)Virtual
557213Mastercard WorldMulti-mata uang, premiumVirtual
489517Visa PlatinumApple & Google PayVirtual
472305Visa CorporateLangganan SaaSVirtual
448585Visa GoldFisik saja (3-D Secure)Fisik

Tampilkan PAN lengkap + CVV

Nomor kartu lengkap, CVV, dan masa berlaku hanya dikembalikan melalui panggilan khusus yang diaudit:

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

Setiap pengungkapan dicatat dalam jejak audit. Agen sebaiknya mengungkapkan sekali per pembelian, tidak menyimpan, dan menghapus dari memori setelah digunakan.

Operasi

  • POST /v1/cards/:id/freeze — hentikan otorisasi.
  • POST /v1/cards/:id/unfreeze — lanjutkan.
  • POST /v1/cards/:id/load — tambahkan USDT ke kartu.
  • POST /v1/cards/:id/unload — kembalikan saldo yang belum dibelanjakan ke treasury.
  • POST /v1/cards/:id/cancel — penutupan permanen.
  • PATCH /v1/cards/:id/limits — batas transaksi / bulanan per kartu.
  • PATCH /v1/cards/:id/mcc — daftar izin/blokir MCC.
  • PATCH /v1/cards/:id/geo — daftar izin negara.

Isi kartu & saldo

Saldo kartu didenominasikan dalam USDT setara USD. Pengisian mengurangi dari treasury, menerapkan biaya jalur 2%, dan mengkreditkan kartu.

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
}

Pengisian bersifat atomik — panggilan hanya mengembalikan hasil setelah dana berpindah.

Transaksi

Setiap otorisasi, capture, pengembalian dana, dan penolakan adalah objek transaksi. Bersifat append-only dan tidak dapat diubah.

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
}

Filter pada status, card_id, mcc, merchant_name, created_after, created_before, amount_min, amount_max.

Penarikan

Kirim USDT treasury kembali ke dompet eksternal mana pun yang Anda kendalikan.

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

Min $10, maks saldo penuh Anda. Chain yang didukung: tron (termurah), ethereum, bsc. Pengiriman lintas jaringan tidak dapat dipulihkan — selalu verifikasi alamatnya.

Sengketa

Ajukan chargeback untuk transaksi mana pun:

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

Kode alasan: duplicate, not_received, fraud, not_as_described, cancelled_subscription, other.

Lampirkan bukti (struk, tangkapan layar, korespondensi) melalui POST /v1/disputes/:id/evidence. Kami mengajukan ke penerbit atas nama Anda — tanpa biaya tambahan.

Webhooks · berlangganan

Webhooks mendorong event ke endpoint HTTPS Anda saat terjadi. Hindari polling; gunakan webhooks.

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

Respons berisi signing_secret — simpan; Anda akan membutuhkannya untuk memverifikasi payload. Berlangganan ke "*" untuk menerima setiap event.

Webhooks · verifikasi tanda tangan

Setiap webhook membawa tanda tangan HMAC-SHA256 di header Cryptocardium-Signature:

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

Hitung tanda tangan yang diharapkan atas "{t}.{rawBody}" dengan signing_secret Anda. Bandingkan menggunakan fungsi constant-time.

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 · percobaan ulang & pemutaran ulang

Pengiriman at-least-once. Kami mencoba ulang pada setiap respons non-2xx atau timeout (10 detik).

PercobaanPenundaan
1segera
230 s
35 min
430 min
52 h
612 h
724 jam (terakhir)

Putar ulang event mana pun dari dasbor atau melalui POST /v1/webhooks/:id/replay/:event_id. Gunakan header Cryptocardium-Event-Id untuk deduplikasi di sisi Anda.

Katalog event

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

Server MCP

Kami menghosting server Model Context Protocol di https://mcp.cryptocardium.com/v1. Server ini mengekspos 40+ alat yang memetakan 1:1 ke endpoint REST, dengan nama yang ramah agen (create_topup, issue_card, reveal_pan, dll.).

Transport: Streamable HTTP. Auth: OAuth 2.1 dengan Dynamic Client Registration — agen mendaftarkan diri pada koneksi pertama, tidak perlu menempel API key ke konfigurasi agen.

MCP · pengaturan klien

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

Setelah mengotorisasi di browser Anda, agen memiliki akses ke setiap alat dalam katalog (atau hanya yang Anda berikan izinnya, jika Anda mempersempit cakupannya).

MCP · katalog alat

Alat mencerminkan endpoint REST. Contoh kecil (daftar lengkap ada di /api):

Akun create_account sign_in get_account enable_2fa
Treasury get_balance create_topup withdraw
Kartu issue_card load_card reveal_pan freeze_card set_card_limits
Tx & log list_transactions get_activity file_dispute

MCP · OAuth 2.1 + DCR

Agen mendaftarkan diri secara dinamis melalui RFC 7591. Alur:

  1. Agen POST /oauth/register — menerima client_id & client_secret.
  2. Pengguna diminta untuk mengotorisasi di browser (satu kali).
  3. Agen menerima access_token (terlingkup, terbatas waktu).
  4. Permintaan berikutnya membawa bearer JWT.

Cakupan per-alat

Batasi agen agar hanya membaca, hanya untuk kartu tertentu, atau hanya pada subset alat tertentu dengan meneruskan scope= saat pendaftaran. Contoh:

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

SDK & contoh

SDK resmi akan segera tersedia. Hingga saat itu, API adalah permukaan REST yang datar — setiap klien HTTP modern dapat menanganinya.

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);

Catatan perubahan

Perubahan aditif dirilis secara transparan. Perubahan yang merusak kompatibilitas akan berada di bawah awalan versi baru.

  • 2026-05-19 · v1.4 Ditambahkan

    POST /v1/cards/:id/load & /unload kini bersifat atomik. Event webhook card.loaded ditambahkan.

  • 2026-05-18 · v1.3 Ditambahkan

    Server MCP aktif di mcp.cryptocardium.com. OAuth 2.1 DCR. 40+ alat dipetakan dari REST.

  • 2026-05-17 · v1.2 Ditambahkan

    Program kartu Physical Gold (BIN 448585), 3-D Secure pada Visa Business dan Visa Gold.

  • 2026-05-15 · v1.1 Diubah

    Minimum top-up diturunkan menjadi $20 untuk routing sandbox, $200 untuk jalur produksi.

  • 2026-05-12 · v1.0 Dirilis

    v1 LTS. 50+ endpoint. Autentikasi Bearer + kunci idempotency + webhook HMAC.

Dukungan

Menemui kendala? Ada dua jalur:

  • Jelajahi FAQ pusat bantuan — lebih dari 30 tanya-jawab yang telah dijawab dan dapat dicari.
  • Buka tiket dukungan — hanya untuk pemegang kartu aktif, balasan dalam 24 jam.

Sertakan request_id dari respons yang gagal — hal itu mempercepat penyelesaian hingga 10×.

FAQ

Pertanyaan developer.

Everything people actually ask. Last updated .

Di mana spesifikasi OpenAPI-nya?

OpenAPI 3.1 tersedia di https://cryptocardium.com/openapi.json (JSON) dan /openapi.yaml. Ditautkan dari halaman utama melalui rel="service-desc".

Bagaimana cara autentikasi permintaan?

Tiga pilihan: (1) Bearer sesi dari proses masuk, (2) bearer API key yang dibuat di /api-settings, (3) access token OAuth 2.1 (direkomendasikan untuk agen AI, mendukung Dynamic Client Registration). Ketiganya dikirim melalui header Authorization.

Berapa batas lajunya?

600 permintaan per menit per API key, dengan burst 100 permintaan. Header X-RateLimit-Limit / X-RateLimit-Remaining / X-RateLimit-Reset dikembalikan pada setiap respons. Batas lebih tinggi tersedia atas permintaan melalui /contact.

Bagaimana cara kerja idempotency?

Sertakan header Idempotency-Key (UUID atau string acak 32 byte) pada POST dan PATCH. Permintaan ulang yang identik dalam 24 jam mengembalikan respons yang tersimpan dalam cache. Payload berbeda dengan key yang sama mengembalikan 409 Conflict.

Bagaimana format kesalahan dikembalikan?

Setiap respons non-2xx berbentuk { "error": "machine_readable_code", "message": "Pesan yang dapat dibaca manusia", "request_id": "req_..." }. Kode error adalah pengenal mesin yang bersifat kanonik; petakan logika klien Anda ke kode tersebut, bukan ke pesan.

Apakah ada SDK klien?

Contoh kode dalam cURL, JavaScript (Node + Fetch), dan Python tersedia langsung di seluruh dokumentasi. SDK resmi tersedia melalui organisasi GitHub; SDK komunitas ditautkan dari /api.

Apakah ada lingkungan sandbox?

Ada. Gunakan API key uji coba dari /api-settings (dengan awalan sk_test_). Semua endpoint tersedia; kartu yang diterbitkan di sandbox tidak diproses di jalur kartu nyata.