Référence API

Intégrez PrivCards dans vos applications. Émettez, alimentez, gelez et gérez des cartes virtuelles via notre API REST.

URL de Basehttps://api.privcards.com/v1
JSON RESTful
Authentification Bearer
Environnement Sandbox
Webhooks
Authentification

Clés API & Authentification

Toutes les requêtes API nécessitent un token Bearer. Générez votre clé API depuis Tableau de bord → Paramètres → Clés API.

Sécurité de la Clé API

N'exposez jamais votre clé dans le code côté client. Utilisez des variables d'environnement. Les clés préfixées sk_live_ sont en production, sk_test_ en sandbox.

request-headers
Authorization: Bearer sk_live_your_api_key_here
Content-Type: application/json
X-Idempotency-Key: optional-unique-key-for-safe-retries
Limites de Taux
1 000
Requêtes / Minute
50
Cartes / Minute
10 000
Requêtes / Heure
Codes d'Erreur
error-response.json
{
  "error": "insufficient_funds",
  "message": "Your wallet balance is too low to fund this card.",
  "code": 400,
  "request_id": "req_7f8a9b2c3d4e"
}
200
Requête réussie
201
Ressource créée
400
Paramètres invalides
401
Clé API manquante ou invalide
404
Ressource introuvable
429
Limite de taux dépassée
Cartes

Gestion des Cartes

Créez, gérez et contrôlez les cartes virtuelles Visa et Mastercard. Chaque carte est isolée avec son propre solde, ses limites et son cycle de vie.

Corps de la Requête
ParameterTypeDescription
bin_idstringrequiredBIN identifier (e.g. 491653). Use GET /bins to list available BINs.
amountnumberrequiredInitial funding amount in USD. Min: $1.00, Max: $5,000.00
labelstringoptionalCustom label for the card (max 64 chars)
spending_limitnumberoptionalMonthly spending limit in USD. Defaults to BIN maximum.
allowed_categoriesstring[]optionalMCC categories to whitelist (e.g. ["advertising", "software"])
auto_freeze_atnumberoptionalAuto-freeze when balance drops below this amount
metadataobjectoptionalKey-value pairs for your internal tracking (max 20 keys)
Exemple de Requête
curl
curl -X POST https://api.privcards.com/v1/cards \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "bin_id": "491653",
    "amount": 500,
    "label": "Meta Ads Campaign #12",
    "spending_limit": 2000,
    "allowed_categories": ["advertising"],
    "metadata": {"campaign": "spring_2026"}
  }'
Response 201 Created
response.json
{
  "id": "card_8xK2m9Lp4q",
  "bin_id": "491653",
  "network": "visa",
  "last4": "2039",
  "status": "active",
  "balance": 500.00,
  "spending_limit": 2000.00,
  "label": "Meta Ads Campaign #12",
  "allowed_categories": ["advertising"],
  "auto_freeze_at": null,
  "metadata": { "campaign": "spring_2026" },
  "created_at": "2026-04-15T12:00:00Z",
  "expires_at": "2029-04-15T23:59:59Z"
}
Paramètres de Requête
ParameterTypeDescription
statusstringoptionalactive, frozen, terminated
bin_idstringoptionalFilter by BIN
pageintegeroptionalPage number. Default: 1
per_pageintegeroptionalItems per page (1-100). Default: 25

apiDocs.cards.getDesc

Endpoint Sensible

Renvoie PAN, CVV et expiration complets. Sensible PCI — ne jamais journaliser ni stocker non chiffré. Limité à 30 req/min.

Suspend toutes les transactions. Le solde est préservé. La carte peut être dégelée ultérieurement.

Réactive les transactions sur une carte gelée. Renvoie l'objet carte avec status: "active".

Action Irréversible

Résilier une carte est permanent. Le solde restant est retourné instantanément à votre portefeuille.

Recharges

Recharge de Cartes

Ajoutez ou retirez des fonds des cartes individuelles. Les fonds proviennent du solde de votre portefeuille.

Corps de la Requête
ParameterTypeDescription
amountnumberrequiredAmount in USD to add. Min: $1.00, Max: $5,000.00

Renvoie les soldes mis à jour de la carte et du portefeuille.

Transactions

Historique des Transactions

Visualisez toutes les transactions de vos cartes. Inclut autorisations, règlements, remboursements et refus.

Paramètres de Requête
ParameterTypeDescription
card_idstringoptionalFilter by card
typestringoptionalauthorization, settlement, refund, decline
fromstringoptionalStart date (ISO 8601)
tostringoptionalEnd date (ISO 8601)
pageintegeroptionalPage number. Default: 1
Portefeuille

Portefeuille & Dépôts

Gérez le portefeuille de votre compte. Déposez de la crypto, consultez les soldes et suivez les dépôts entrants.

Response 200 OK
response.json
{
  "balance": 1312.50,
  "currency": "USD",
  "pending_deposits": 500.00,
  "total_deposited": 15000.00,
  "total_spent": 13687.50,
  "cards_active": 8,
  "cards_total_balance": 2450.00
}
Paramètres de Requête
ParameterTypeDescription
currencystringoptionalbtc, eth, sol, usdt. Omit to get all.
BINs

Sélection de BIN

Liste les plages de BIN disponibles avec leurs capacités, limites et taux d'acceptation.

Response 200 OK
response.json
{
  "data": [
    {
      "id": "491653",
      "network": "visa",
      "type": "advertising",
      "3ds": true,
      "apple_pay": true,
      "google_pay": true,
      "max_transaction": 5000.00,
      "max_monthly": 50000.00,
      "acceptance_rate": 97.2,
      "best_for": ["meta_ads", "google_ads", "tiktok_ads"]
    }
  ]
}
3D Secure

Authentification 3D Secure

Récupérez les défis 3DS et codes OTP. Toutes les cartes sont automatiquement inscrites en 3DS 2.0.

Response 200 OK
response.json
{
  "data": [
    {
      "id": "3ds_m4n5o6p7",
      "card_id": "card_8xK2m9Lp4q",
      "merchant": "SPOTIFY",
      "amount": 9.99,
      "otp": "847291",
      "status": "pending",
      "expires_at": "2026-04-15T15:05:00Z"
    }
  ]
}
Webhooks

Webhooks & Événements

Recevez des notifications en temps réel lors d'événements. Les payloads sont signés avec HMAC-SHA256.

Événements Disponibles
card.createdUne nouvelle carte a été émise
card.frozenUne carte a été gelée
card.unfrozenUne carte a été dégelée
card.terminatedUne carte a été résiliée
card.fundedFonds ajoutés à une carte
transaction.authorizedTransaction autorisée
transaction.settledTransaction réglée
transaction.declinedTransaction refusée
transaction.refundedRemboursement traité
3ds.challengeVérification 3DS requise
deposit.pendingDépôt crypto détecté
deposit.confirmedDépôt crypto confirmé
Vérification de Signature
verify-webhook.py
import hmac, hashlib

def verify_webhook(payload, signature, secret):
    expected = hmac.new(
        secret.encode(),
        payload.encode(),
        hashlib.sha256
    ).hexdigest()
    return hmac.compare_digest(expected, signature)
Corps de la Requête
ParameterTypeDescription
urlstringrequiredHTTPS endpoint URL to receive events
eventsstring[]requiredEvent types to subscribe. Use ["*"] for all.
secretstringoptionalCustom signing secret. Auto-generated if omitted.
SDKs

SDKs & Bibliothèques

Bibliothèques officielles client pour votre stack. Tous les SDKs supportent les environnements live et sandbox.

Python

Python

pip install privcards

Node.js

Node.js

npm i privcards

Go

Go

go get privcards

Démarrage Rapide — Python
quickstart.py
from privcards import Client

client = Client("sk_live_your_api_key")

# Create a card
card = client.cards.create(
    bin_id="491653",
    amount=500,
    label="Ad Spend"
)
print(card.id, card.last4)

# Get full card details (PAN, CVV)
details = client.cards.details(card.id)
print(details.pan, details.cvv)

# Fund the card
client.cards.fund(card.id, amount=200)

# List transactions
txns = client.transactions.list(card_id=card.id)
for t in txns.data:
    print(t.merchant.name, t.amount)
Démarrage Rapide — Node.js
quickstart.js
const { privcards } = require('privcards');

const client = new privcards('sk_live_your_api_key');

// Create a card
const card = await client.cards.create({
  binId: '491653',
  amount: 500,
  label: 'Ad Spend',
});

// Get 3DS OTPs
const challenges = await client.threeds.list({
  cardId: card.id,
  status: 'pending',
});

// Set up webhooks
await client.webhooks.create({
  url: 'https://yourapp.com/hooks',
  events: ['transaction.authorized', '3ds.challenge'],
});
Documentation API — PrivCards API de Carte Virtuelle