Développeurs

API Swapoon

Points d’accès publics pour les actifs et les taux, plus une API d’affiliation authentifiée.

Introduction

L’API Swapoon comporte deux volets. Les points d’accès publics sont en lecture seule et ne nécessitent aucune authentification : ils listent les actifs pris en charge et les taux en vigueur. L’API d’affiliation s’authentifie par clé et permet de créer de véritables échanges automatiquement crédités sur votre compte affilié. Tous les points d’accès se trouvent sous l’URL de base ci-dessous et renvoient du JSON.

https://swapoon.io/api/v1

Format des réponses

Les points d’accès publics encapsulent leurs données dans une enveloppe success/data. L’API d’affiliation renvoie un objet plat comportant un booléen ok et les champs pertinents au premier niveau.

// Public endpoints { "success": true, "data": { ... } } // Affiliate API { "ok": true, ... } // Affiliate API — error { "ok": false, "error": "Human-readable message" }

Points d’accès publics

GET /pairs public

Liste des actifs pris en charge, avec leurs limites et décimales.

// 200 OK { "success": true, "data": { "pairs": [ { "key": "XMR", "symbol": "XMR", "name": "Monero", "chain": "Monero", "decimals": 12, "min": "0.15", "max": "500", "min_usd": 25 } ] } }
GET /rates public

Taux de change actuels (mis en cache). L’actif de référence est le XMR.

// 200 OK { "success": true, "data": { "rates": [ ... ], "updated_at": "2026-06-30T12:00:00Z", "base": "XMR" } }

API d’affiliation

Présentation

L’API d’affiliation vous permet d’intégrer Swapoon à votre propre site ou application. Chaque échange créé par ce biais est automatiquement crédité sur votre compte affilié : vous percevez 0.5 % du volume de chaque échange finalisé, versés manuellement en Monero. Générez votre clé d’API depuis votre tableau de bord affilié.

Authentification

Transmettez votre clé secrète sous forme de jeton Bearer à chaque requête. Gardez-la confidentielle : elle permet de créer de véritables échanges. En cas de fuite, révoquez-la et régénérez-la depuis votre tableau de bord (l’ancienne clé cesse immédiatement de fonctionner).

# Header Authorization: Bearer sk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Seule l’empreinte de la clé est conservée côté serveur. La clé complète n’est affichée qu’une fois, à la création.

GET /coins auth

Jetons pris en charge avec leurs clés, symboles, chaînes et décimales.

// 200 OK { "ok": true, "coins": [ { "key": "XMR", "symbol": "XMR", "name": "Monero", "chain": "Monero", "decimals": 12 }, { "key": "BTC", "symbol": "BTC", "name": "Bitcoin", "chain": "Bitcoin", "decimals": 8 } ] }
GET /rate auth

Estimation pour une paire. Paramètres de requête : from, to (clés de jeton issues de /coins), amount (unités lisibles).

# Request GET /api/v1/rate?from=XMR&to=BTC&amount=0.5 // 200 OK { "ok": true, "from": "XMR", "to": "BTC", "amount_in": 0.5, "amount_out": "0.00251", "rate": 0.00502, "min": 0.15, "max": 500, "eta": "15–30 min" }
POST /swaps auth

Créer un véritable échange, crédité sur votre compte. Corps (JSON) : from, to, amount, to_address, et facultativement refund_address. Envoyez le dépôt à l’adresse retournée.

# Request body { "from": "XMR", "to": "BTC", "amount": 0.5, "to_address": "bc1q...", "refund_address": "4A..." // optional } // 201 Created { "ok": true, "id": "a1b2c3d4e5f6...", "status": "awaiting_deposit", "deposit_address": "4B...", "deposit_amount": "0.5", "deposit_symbol": "XMR", "expected_output": "0.00251", "to_symbol": "BTC", "to_address": "bc1q..." }

Crée une transaction réelle avec des fonds réels. Vérifiez soigneusement to_address : les échanges sont irréversibles.

GET /swaps/{id} auth

Statut de l’un de vos échanges. Seuls les échanges créés avec votre clé sont visibles.

// 200 OK { "ok": true, "id": "a1b2c3d4e5f6...", "status": "completed", "from_symbol": "XMR", "to_symbol": "BTC", "deposit_address": "4B...", "deposit_amount": "0.5", "expected_output": "0.00251", "to_address": "bc1q...", "created_at": "2026-07-08T09:56:56Z" }

Statuts : awaiting_deposit, deposit_detected, deposit_confirmed, exchanging, sending, completed, expired, refunded.

GET /swaps auth

Historique paginé de vos échanges. Paramètre de requête : per_page (1 à 50, 20 par défaut).

// 200 OK { "ok": true, "swaps": [ { "id": "a1b2c3d4...", "status": "completed", "from_symbol": "XMR", "to_symbol": "BTC", "deposit_amount": "0.5", "expected_output": "0.00251", "created_at": "2026-07-08T09:56:56Z" } ], "page": 1, "pages": 3, "total": 42 }
GET /stats auth

Vos totaux d’affiliation : clics, échanges, volume, gains perçus et en attente.

// 200 OK { "ok": true, "stats": { "code": "cryptojoe", "clicks": 128, "swaps": 42, "volume_usd": 15230.50, "earned_usd": 76.15, "paid_usd": 50.00, "pending_usd": 26.15, "payout_mode": "xmr_manual", "active": true } }

Erreurs

Les erreurs utilisent les codes de statut HTTP standards avec un corps ok: false.

401Clé d’API absente ou invalide.
404Échange introuvable (ou ne vous appartenant pas).
422Paramètres invalides, jeton inconnu ou montant hors limites.
429Limite de débit dépassée.

Limites de débit

Points d’accès publics : 120 requêtes par minute et par IP. Lectures d’affiliation : 120 par minute et par clé. Création d’échange (POST /swaps) : 10 par minute et par clé, car elle engage des fonds réels. Tout dépassement renvoie un 429.

Des questions ?

Écrivez-nous si vous développez avec l’API Swapoon.

Nous contacter