API Luno

Développez des applications personnalisées ou intégrez les paiements grâce à notre puissante API Bitcoin

L’API Luno vous permet de :

  • Accéder aux données actuelles et passées des marchés du Bitcoin et de l’Ethereum
  • Envoyer des ordres de trading et consulter le statut des ordres
  • Acheter et vendre des Bitcoins et de l’Ethereum
  • Envoyez et recevez des Bitcoins et de l’Ethereum
  • Générer des adresses de portefeuille d’Ethereum et de Bitcoin

Grâce à l’API Luno, chacun peut avoir accès au Bitcoin et à l’Ethereum.

Utilisez toujours HTTPS pour appeler l’API. Les requêtes HTTP sans certificat TLS peuvent renvoyer l’erreur 403. Les requêtes sans certificat TLS peuvent entraîner la fuite de vos identifiants d’authentification.

Veillez à ce que votre client valide le certificat SSL du serveur. De nombreuses librairies (par ex. urllib2 dans Python2) ne valident pas les certificats du serveur par défaut. L’échec de vérification du certificat du serveur rend votre application vulnérable aux attaques de l’homme du milieu (HDM).

Les horodatages sont toujours représentés sous la forme d’un nombre entier de millisecondes depuis l’Epoch UTC (horodatage Unix).

Les cours et volumes sont toujours représentés comme des chaînes décimales, par ex. "123,3432". Nous utilisons des chaînes plutôt que des floats pour conserver la précision.

Paramètres pour les appels POST sont envoyés au format URL encodé (application/x-www-form-urlencoded).

Les appels aux API de données du marché sont limités à 1 appel par seconde par adresse IP. Tous les autres appels d’API sont limités à 1 appel par seconde par client. Le rate limiting des appels d’API permet des pics jusqu’à cinq appels consécutifs. Le dépassement de la limite renvoie le code d’erreur HTTP 429.

La librairie Go est la méthode recommandée pour accéder à l’API : voir sur GitHub.

Les librairies suivantes ont été mises en place par des tiers ou ne sont plus en phase de développement actif et sont listées ici pour votre commodité. Aucun support associé n’est fourni par Luno et elles peuvent être obsolètes. Un examen approfondi du code est recommandé avant de les inclure dans un projet.

Les appels à l’API Données du marché sont accessibles à tous sans authentification. Les données renvoyées peuvent être mises en cache pendant maximum 1 seconde. L'API de streaming peut être utilisée si des données de marché ayant une latence plus faible sont nécessaires.

Téléscripteur

Renvoie les derniers indicateurs de téléscripteur.

Définition

GET https://api.mybitx.com/api/1/ticker

Arguments

pair string obligatoire Currency pair e.g. XBTZAR or ETHXBT

Exemple de demande

$ curl https://api.mybitx.com/api/1/ticker?pair=XBTZAR

Exemple de réponse

{
  "ask": "1050.00",
  "timestamp": 1366224386716,
  "bid": "924.00",
  "rolling_24_hour_volume": "12.52",
  "last_trade": "950.00"
}

Tous les téléscripteurs

Renvoie les derniers indicateurs de téléscripteur de toutes les plateformes Luno Exchange actives.

Définition

GET https://api.mybitx.com/api/1/tickers

Exemple de demande

$ curl https://api.mybitx.com/api/1/tickers

Exemple de réponse

{
  "tickers": [
    {
      "timestamp": 1405413955793,
      "bid": "6801.00",
      "ask": "6900.00",
      "last_trade": "6900.00",
      "rolling_24_hour_volume": "12.455579",
      "pair":"XBTZAR"
    },
    {
      "timestamp": 1405413955337,
      "bid": "5000.00",
      "ask":"6968.00",
      "last_trade": "6830.00",
      "rolling_24_hour_volume": "0.00",
      "pair":"XBTNAD"
    }
  ]
}

Carnet d’ordres

Renvoie une liste des 100 meilleures offres d’achat et de vente dans le carnet d’ordres. Les offres de vente sont classées par ordre croissant. Les offres d’achat sont classées par ordre décroissant. Des ordres au même prix sont regroupés.

Définition

GET https://api.mybitx.com/api/1/orderbook_top

Arguments

pair string obligatoire Currency pair e.g. XBTZAR or ETHXBT

Exemple de demande

$ curl https://api.mybitx.com/api/1/orderbook_top?pair=XBTZAR

Exemple de réponse

{
  "timestamp": 1366305398592,
  "bids": [
    {
      "volume": "0.10",
      "price": "1100.00"
    },
    {
      "volume": "0.10",
      "price": "1000.00"
    },
    {
      "volume": "0.10",
      "price": "900.00"
    }
  ],
  "asks": [
    {
      "volume": "0.10",
      "price": "1180.00"
    },
    {
      "volume": "0.10",
      "price": "2000.00"
    }
  ]
}

Carnet d'ordres (plein)

Renvoie une liste de toutes les offres d’achat et de vente dans le carnet d’ordres. Les offres de vente sont classées par ordre croissant. Les offres d’achat sont classées par ordre décroissant. Plusieurs ordres au même prix ne sont pas regroupés.

Attention : Ceco est susceptible de renvoyer une grande quantité de données. Vous devriez en général utiliser GetOrderBook ou le même API de streaming.

Définition

GET https://api.mybitx.com/api/1/orderbook

Arguments

pair string obligatoire Currency pair e.g. XBTZAR or ETHXBT

Exemple de demande

$ curl https://api.mybitx.com/api/1/orderbook?pair=XBTZAR

Exemple de réponse

{
  "timestamp": 1366305398592,
  "bids": [
    {
      "volume": "0.10",
      "price": "1100.00"
    },
    {
      "volume": "0.10",
      "price": "1000.00"
    },
    {
      "volume": "0.10",
      "price": "900.00"
    }
  ],
  "asks": [
    {
      "volume": "0.10",
      "price": "1180.00"
    },
    {
      "volume": "0.10",
      "price": "2000.00"
    }
  ]
}

Trades

Renvoie une liste des trades les plus récents. Renvoi de 100 résultats maximum par appel.

Définition

GET https://api.mybitx.com/api/1/trades

Arguments

pair string obligatoire Currency pair e.g. XBTZAR or ETHXBT
since integer optionnel Fetch trades executed after this time, specified as a Unix timestamp in milliseconds.

Exemple de demande

$ curl https://api.mybitx.com/api/1/trades?pair=XBTZAR

Exemple de réponse

{
  "trades": [
    {
      "volume": "0.10",
      "timestamp": 1366052621774,
      "price": "1000.00",
      "is_buy": true
    },
    {
      "volume": "1.20",
      "timestamp": 1366052621770,
      "price": "1020.50",
      "is_buy": false
    }
  ]
}

Certains appels d’API exigent que votre application s’authentifie elle-même. Cela se fait via une clé API associée à votre compte. Vous pouvez créer une clé API en consultant la rubrique Clés API sur la page des paramètres.

Une clé API est composée d’un identifiant et d’une partie secrète. Par exemple : cnz2yjswbv3jd (identifiant de clé) et 0hydMZDb9HRR3Qq-iqALwZtXLkbLR4fWxtDZvkB9h4I (clé secrète).

Les requêtes API sont authentifiées via l’authentification HTTP de base avec l’identifiant de clé comme nom d’utilisateur et la clé secrète comme mot de passe. Une clé manquante, incorrecte ou révoquée renvoie l’erreur 401.

Permissions

Chaque clé API reçoit un ensemble de permissions lors de sa création. La clé peut uniquement être utilisée pour appeler les fonctions API autorisées.

Voici une liste des permissions possibles :

  • Perm_R_Balance = 1 (Afficher le solde)
  • Perm_R_Transactions = 2 (Afficher les transactions)
  • Perm_W_Send = 4 (Envoyer à n'importe quelle adresse)
  • Perm_R_Addresses = 8 (Afficher les adresses)
  • Perm_W_Addresses = 16 (Créer des adresses)
  • Perm_R_Orders = 32 (Afficher les ordres)
  • Perm_W_Orders = 64 (Créer des ordres)
  • Perm_R_Withdrawals = 128 (Afficher les retraits)
  • Perm_W_Withdrawals = 256 (Créer des retraits)
  • Perm_R_Merchant = 512 (Afficher les factures vendeurs)
  • Perm_W_Merchant = 1024 (Créer des factures vendeurs)
  • Perm_W_ClientDebit = 8192 (Comptes débit)
  • Perm_W_ClientCredit = 16384 (Comptes crédit)
  • Perm_R_Beneficiaries = 32768 (Afficher les bénéficiaires)
  • Perm_W_Beneficiaries = 65536 (Créer et supprimer des bénéficiaires)

Un ensemble de permissions est représenté avec l’opérateur bitwise OU entre chaque permission de l’ensemble. Par exemple, l’ensemble de permissions requis pour afficher les soldes et les ordres est Perm_R_Balance | Perm_R_Orders = 33.

Toutes les transactions sur la plateforme Luno s’exécutent sur des comptes. Chaque compte est libellé dans une monnaie unique et contient une liste d'entrées ordonnée qui suit le solde courant.

Chaque compte possède un solde et un solde disponible séparés. Le solde disponible peut être inférieur au solde si des fonds ont été réservés (par ex. pour un ordre limite ouvert). Les entrées du compte affectent le solde et le solde disponible de manière indépendante.

Les entrées du compte sont numérotées consécutivement. Les entrées ne sont jamais réordonnées ou supprimées. Les attributs clés de l’entrée (les soldes courants et l’index) ne sont jamais modifiés. Ainsi, un compte réagit comme un journal dans lequel on ajoute uniquement des transactions.

Créer un compte

Créer un compte supplémentaire pour la monnaie indiquée.

Définition

POST https://api.mybitx.com/api/1/accounts

Arguments

currency string obligatoire Le code de monnaie pour le compte que vous voulez créer, p. ex. XBT, IDR, MYR, ZAR
name string obligatoire Le libellé à utiliser pour ce compte, p. ex. "Trading ACC".

Vous devez être vérifié(e) pour trader des currency afin de pouvoir créer un compte. Un utilisateur est limité à 4 comptes par monnaie.

Exemple de demande

$ curl -u keyid:keysecret -X POST -d currency=XBT -d name=Moon https://api.mybitx.com/api/1/accounts

Exemple de réponse

{
  "id": "319323232",
  "name": "Moon",
  "currency": "XBT"
}

Permissions requises

Perm_W_Addresses

Soldes

Renvoyer la liste de tous les comptes et de leurs soldes respectifs.

Définition

GET https://api.mybitx.com/api/1/balance

Exemple de demande

$ curl -u keyid:keysecret https://api.mybitx.com/api/1/balance

Exemple de réponse

{
  "balance": [
    {
      "account_id": "1224342323",
      "asset": "XBT",
      "balance": "1.012423",
      "reserved": "0.01",
      "unconfirmed": "0.421",
      "name": "XBT Account"
    },
    {
      "account_id": "2997473",
      "asset": "ZAR",
      "balance": "1000.00",
      "reserved": "0.00",
      "unconfirmed": "0.00",
      "name": "ZAR Account"
    }
  ]
}

Permissions requises

Perm_R_Balance

Transactions

Renvoyer une liste des entrées de transaction d’un compte.

Les rangs d’entrées de transactions sont numérotés consécutivement à partir de 1, 1 étant l’entrée la plus ancienne. La plage de rangs à renvoyer est spécifiée avec les paramètres min_row (inclus) et max_row (exclus). 1 000 rangs maximum peuvent être demandés par appel.

Si min_row ou max_row est non-positif, la plage va jusqu’au rang le plus récent. Par exemple, pour récupérer les 100 rangs les plus récents, utilisez min_row=-100 et max_row=0.

Définition

GET https://api.mybitx.com/api/1/accounts/:id/transactions

Arguments

id string obligatoire Identifiant du compte
min_row int obligatoire Minimum de la plage de rangs à renvoyer (inclusif)
max_row int obligatoire Maximum de la plage de rangs à renvoyer (exclusif)

Exemple de demande

$ curl -u keyid:keysecret https://api.mybitx.com/api/1/accounts/319232323/transactions?min_row=1&max_row=100

Exemple de réponse

{
  "id": "319232323",
  "transactions": [
    {
      "row_index": 2,
      "timestamp": 1429908835000,
      "balance": 0.08,
      "available": 0.08,
      "balance_delta": -0.02,
      "available_delta": -0.02,
      "currency": "XBT",
      "description": "Sold 0.02 BTC"
    },
    {
      "row_index": 1,
      "timestamp": 1429908701000,
      "balance": 0.1,
      "available": 0.1,
      "balance_delta": 0.1,
      "available_delta": 0.1,
      "currency": "XBT",
      "description": "Bought 0.1 BTC"
    }
  ]
}

Permissions requises

Perm_R_Transactions

Transactions en attente

Renvoyer une liste de toutes les transactions en attente associées au compte.

Contrairement aux entrées du compte, les transactions en attente ne sont pas numérotées, et peuvent être réordonnées, supprimées ou actualisées à tout moment.

Définition

GET https://api.mybitx.com/api/1/accounts/:id/pending

Arguments

id string obligatoire Identifiant du compte

Exemple de demande

$ curl -u keyid:keysecret https://api.mybitx.com/api/1/accounts/319232323/pending

Exemple de réponse

{
  "id": "319232323",
  "pending": [
    {
      "timestamp": 1429908835000,
      "balance": 0.03,
      "available": 0.03,
      "balance_delta": 0.03,
      "available_delta": 0.03,
      "currency": "XBT",
      "description": "Received Bitcoin - 1 of 3 confirmations"
    }
  ]
}

Permissions requises

Perm_R_Transactions

Le trading sur le marché s’effectue en envoyant des ordres de trading. Lorsqu’un nouvel ordre est créé, il est envoyé pour traitement par le moteur de mise en correspondance des ordres. Soit l’ordre correspond à un ordre existant dans le carnet d’ordres et il est exécuté, soit il reste dans le carnet d’ordres jusqu’à ce qu’il soit stoppé.

Cliquez ici pour en savoir plus sur le fonctionnement du mécanisme de mise en correspondance des ordres.

Lister les ordres

Renvoie une liste des ordres placés les plus récents. Vous pouvez indiquer un paramètre optionnel state=PENDING pour restreindre les résultats aux ordres ouverts. Vous pouvez également indiquer le marché en utilisant le paramètre optionnel « pair ». La liste est tronquée après les 100 premiers éléments.

Définition

GET https://api.mybitx.com/api/1/listorders

Arguments

state string optionnel Filtrer pour n'afficher que les ordres avec ce statut, par ex. PENDING
pair string optionnel Filtrer pour n'afficher que les ordre de cette paire de monnaies, p. ex. XBTZAR ou ETHXBT

Exemple de demande

$ curl -u keyid:keysecret https://api.mybitx.com/api/1/listorders

Exemple de réponse

{
  "orders": [
    {
      "base": "0.027496",
      "counter": "81.140696",
      "creation_timestamp": 1423990327333,
      "expiration_timestamp": 0,
      "completed_timestamp": 1423991515534,
      "fee_base": "0.00",
      "fee_counter": "0.00",
      "limit_price": "2951.00",
      "limit_volume": "0.027496",
      "order_id": "BXF3J88PZAYGXH7",
      "pair": "XBTZAR",
      "state": "COMPLETE",
      "type": "ASK",
    }
  ]
}
OFFRE D’ACHAT
ordre limite d'achat
DEMANDER
ordre limite de vente
Les états possibles des ordres sont :
EN ATTENTE
l'ordre a été placé. Certains trades ont peut-être eu lieu, mais l'ordre n'est pas encore exécuté.
TERMINÉ
L'ordre n'est plus actif. Il a été réglé ou annulé.

Les montants base et counter sont les principaux montants tradés sans les commissions. Par exemple, si l’ordre s’est exécuté en un seul trade d’1 BTC pour 1000 ZAR, base=1 BTC et counter=1000 ZAR.

Les montants fee_base et fee_counter sont les commissions débitées après les montants principaux du trade.

Par exemple, pour un ordre d’achat, base - base_fee serait crédité sur le compte en BTC etcounter + counter_fee serait débité du compte en ZAR. De la même manière, pour un ordre de vente, counter - counter_fee serait crédité sur le compte en ZAR etbase + base_fee serait débité du compte en BTC.

Le pair spécifie le marché.

Permissions requises

Perm_R_Orders

Poster un ordre limite

Créer un nouvel ordre de trading.

Attention ! Les ordres sont irréversibles une fois exécutés. Veuillez vérifier que votre programme a été soigneusement testé avant de soumettre des ordres.

Si base_account_id ou counter_account_id ne sont pas spécifiés, votre monnaie de base ou compte en monnaie d’échange par défaut sera utilisé. Vous pouvez connaître vos identifiants de compte en appelant l’API Soldes.

Définition

POST https://api.mybitx.com/api/1/postorder

Arguments

pair string obligatoire La paire de monnaies à trader p. ex. XBTZAR ou ETHXBT
type string obligatoire "ACHAT" pour un ordre limite d'achat ou "VENTE" pour un ordre limite de vente.
volume string obligatoire Montant de Bitcoin ou d'Ethereum à acheter ou à vendre en tant que chaîne décimale en unités de BTC, p. ex. "1.423".
price string obligatoire Prix limite en tant que chaîne décimale en unités de ZAR/BTC, p. ex."1200".
base_account_id string optionnel Le compte de monnaie de base à utiliser dans le trade.
counter_account_id string optionnel Le compte de monnaie de contrepartie à utiliser dans le trade.
post_only boolean optionnel Les ordres pour affichage seulement seront annulés s'ils allaient être tradés immédiatement. Par exemple, s'il y a une offre à 100 000 ZAR et si vous placez une offre de vente pour affichage seulement à 100 000 ZAR, votre ordre sera annulé et non tradé. Si la meilleure offre est 100 000 ZAR et si vous placez une offre de vente pour affichage seulement à 101 000 ZAR, votre ordre ne sera pas tradé mais sera inclus dans le carnet d'ordres.

Exemple de demande

$ curl -u keyid:keysecret -X POST -d pair=XBTZAR -d type=BID -d volume=0.1 -d price=1000 https://api.mybitx.com/api/1/postorder

Exemple de réponse

{
  "order_id": "BXMC2CJ7HNB88U4"
}

Permissions requises

Perm_W_Orders

Poster un ordre d’achat au prix du marché

Créer un nouvel ordre d’achat au prix du marché.

Attention ! Les ordres sont irréversibles une fois exécutés. Veuillez vérifier que votre programme a été soigneusement testé avant de soumettre des ordres.

Si base_account_id ou counter_account_id ne sont pas spécifiés, votre monnaie de base ou compte en monnaie d’échange par défaut sera utilisé. Vous pouvez connaître vos identifiants de compte en appelant l’API Soldes.

Définition

Un ordre d’achat au prix du marché s’exécute immédiatement, et entraîne l’achat d’autant de Bitcoin que possible pour un montant défini de monnaie locale, ou la vente d’un montant défini de Bitcoin pour autant de monnaie locale que possible.

POST https://api.mybitx.com/api/1/marketorder

Arguments

pair string obligatoire La paire de monnaies à trader p. ex. XBTZAR ou ETHXBT
type string obligatoire "BUY" to buy Bitcoin or Ethereum, or "SELL" to sell Bitcoin or Ethereum.
counter_volume string required - if type is "BUY" Pour un ordre "ACHAT" : montant de la monnaie locale (p. ex. ZAR, MYR) à dépenser en tant que chaîne décimale en unités de monnaie locale, p. ex. "100.50".
base_volume string obligatoire - si le type est "SELL" Pour un ordre "VENTE " : montant de Bitcoin à vendre en tant que chaîne décimale en unités de BTC, p. ex."1.423".
base_account_id string optionnel Le compte de monnaie de base à utiliser dans le trade.
counter_account_id string optionnel Le compte de monnaie de contrepartie à utiliser dans le trade.

Exemple de demande

$ curl -u keyid:keysecret -X POST -d pair=XBTZAR -d type=BUY -d counter_volume=100.50  https://api.mybitx.com/api/1/marketorder

Exemple de réponse

{
  "order_id": "BXMC2CJ7HNB88U4"
}

Permissions requises

Perm_W_Orders

Stopper un ordre

Demander de stopper un ordre.

Définition

POST https://api.mybitx.com/api/1/stoporder

Arguments

order_id string obligatoire La référence de l'ordre en tant que chaîne, p. ex. BXMC2CJ7HNB88U4

Exemple de demande

$ curl -u keyid:keysecret -X POST -d order_id=BXMC2CJ7HNB88U4 https://api.mybitx.com/api/1/stoporder

Exemple de réponse

{
  "success": true
}

Permissions requises

Perm_W_Orders

Obtenir un ordre

Obtenir un ordre via son identifiant.

Définition

GET https://api.mybitx.com/api/1/orders/:id

Arguments

id string obligatoire L'identifiant de l'ordre

Exemple de demande

$ curl -u keyid:keysecret https://api.mybitx.com/api/1/orders/BXHW6PFRRXKFSB4

Exemple de réponse

{
  "order_id": "BXHW6PFRRXKFSB4",
  "creation_timestamp": 1402866878367,
  "expiration_timestamp": 0,
  "completed_timestamp": 0,
  "type": "ASK",
  "state": "PENDING",
  "limit_price": "6500.00",
  "limit_volume": "0.05",
  "base": "0.03",
  "counter": "195.02",
  "fee_base":"0.000",
  "fee_counter":"0.00"
}

Permissions requises

Perm_R_Orders

Lister les trades

Renvoie une liste de vos trades récents pour une paire donnée, en partant du plus ancien.

type dans la réponse indique le type d'ordre placé afin de participer au trade. Types possibles : BID, ASK.

Si is_buy renvoie true dans la réponse, l’ordre qui a clôturé le trade (taker du marché) était une offre d’achat.

Les résultats de cette requête peuvent arriver derrière les données les plus récentes.

Définition

GET https://api.mybitx.com/api/1/listtrades

Arguments

pair string obligatoire Filtrer pour afficher les trades de cette paire de monnaies, p. ex. XBTZAR ou ETHXBT
since integer optionnel Filtrer pour afficher les trades de cet horodatage ou ultérieurs, p. ex. 1470810728478
limit integer optionnel Limiter à ce nombre de trades (min. 1, max. 100, par défaut 100)

Exemple de demande

$ curl -u keyid:keysecret https://api.mybitx.com/api/1/listtrades?pair=XBTZAR

Exemple de réponse

{
    "trades": [
        {
            "base": "0.147741",
            "counter": "1549.950831",
            "fee_base": "0.00",
            "fee_counter": "0.00",
            "is_buy": false,
            "order_id": "BXMC2CJ7HNB88U4",
            "pair": "XBTZAR",
            "price": "10491.00",
            "timestamp": 1467138492909,
            "type": "BID",
            "volume": "0.147741"
        }
    ]
}

Permissions requises

Perm_R_Orders

Informations sur les commissions

Renvoie vos commissions et votre volume de trading sur 30 jours (à minuit) pour un couple donné.

Définition

GET https://api.mybitx.com/api/1/fee_info

Arguments

pair string obligatoire Filtrer pour afficher les trades de cette paire de monnaies, p. ex. XBTZAR ou ETHXBT

Exemple de demande

$ curl -u keyid:keysecret https://api.mybitx.com/api/1/fee_info?pair=XBTZAR

Exemple de réponse

{
  "maker_fee": "0.00",
  "taker_fee": "0.10",
  "thirty_day_volume": "0.894342"
}

Permissions requises

Perm_R_Orders

Adresses de réception

Renvoie l’adresse de réception par défaut associée à votre compte et le montant reçu via l’adresse. Vous pouvez indiquer un paramètre optionnel address pour renvoyer les informations pour une adresse de réception autre que celle par défaut. Dans la réponse, total_received est le montant total en Bitcoin confirmé reçu sans les transactions non confirmées. Total_unconfirmed est la somme totale des transactions de réception non confirmées.

Définition

GET https://api.mybitx.com/api/1/funding_address

Arguments

asset string obligatoire Code de monnaie pour l'actif, p. ex. XBT
address string optionnel Adresse Bitcoin ou Ethereum à récupérer. Si aucune adresse n'est indiquée, l'adresse par défaut sera utilisée.

Exemple de demande

$ curl -u keyid:keysecret https://api.mybitx.com/api/1/funding_address?asset=XBT&address=B1tC0InExAMPL3fundIN6AdDreS5t0Use

Exemple de réponse

{
  "asset": "XBT",
  "address": "B1tC0InExAMPL3fundIN6AdDreS5t0Use",
  "total_received": "1.234567",
  "total_unconfirmed": "0.00"
}

Permissions requises

Perm_R_Addresses

Créer une adresse de réception

Ajoute une nouvelle adresse de réception à votre compte. Rate limiting d’1 adresse par heure, mais les pics jusqu’à 10 adresses sont autorisés. Une seule adresse de réception Ethereum peut être créée.

Définition

POST https://api.mybitx.com/api/1/funding_address

Exemple de demande

$ curl -u keyid:keysecret -X POST -d asset=XBT https://api.mybitx.com/api/1/funding_address

Exemple de réponse

{
  "asset": "XBT",
  "address": "B1tC0InExAMPL3fundIN6AdDreS5t0Use",
  "total_received": "0.00",
  "total_unconfirmed": "0.00"
}

Permissions requises

Perm_W_Addresses

Lister les demandes de retrait

Renvoie une liste des demandes de retrait.

Définition

GET https://api.mybitx.com/api/1/withdrawals

Exemple de demande

$ curl -u keyid:keysecret https://api.mybitx.com/api/1/withdrawals

Exemple de réponse

{
  "withdrawals": [
    {
      "status": "PENDING",
      "id": "2221"
    },
    {
      "status": "COMPLETED",
      "id": "1121"
    }
  ]
}

Permissions requises

Perm_R_Withdrawals

Demander un retrait

Crée une nouvelle demande de retrait.

Définition

POST https://api.mybitx.com/api/1/withdrawals

Arguments

type string obligatoire Types de retraits, p. ex. ZAR_EFT, NAD_EFT, KES_MPESA, MYR_IBG, IDR_LLG
amount string obligatoire Montant à retirer. La monnaie dépend du type.
beneficiary_id string optionnel L'identifiant du bénéficiaire du compte bancaire à partir duquel le retrait sera fait. Ce paramètre est obligatoire si vous avez plusieurs comptes bancaires. Vous pouvez trouver votre identifiant de bénéficiaire de compte bancaire en cliquant sur le nom du bénéficiaire sur la page Bénéficiaires.

Exemple de demande

$ curl -u keyid:keysecret -X POST -d type=ZAR_EFT -d amount=1000 https://api.mybitx.com/api/1/withdrawals

Exemple de réponse

{
  "status": "PENDING",
  "id": "1212"
}

Permissions requises

Perm_W_Withdrawals

Obtenir le statut d’une demande de retrait

Renvoie le statut d’une demande de retrait particulière.

Définition

GET https://api.mybitx.com/api/1/withdrawals/:id

Arguments

id string obligatoire Identifiant de retrait à récupérer.

Exemple de demande

$ curl -u keyid:keysecret https://api.mybitx.com/api/1/withdrawals/1212

Exemple de réponse

{
  "status": "COMPLETED",
  "id": "1212"
}

Permissions requises

Perm_R_Withdrawals

Annuler une demande de retrait

Annuler une demande de retrait. Ceci est possible uniquement si l’état de la demande est toujours en PENDING (en attente).

Définition

DELETE https://api.mybitx.com/api/1/withdrawals/:id

Arguments

id string obligatoire Identifiant de l'offre à annuler.

Exemple de demande

$ curl -u keyid:keysecret -X DELETE https://api.mybitx.com/api/1/withdrawals/1212

Exemple de réponse

{
  "status": "CANCELLED",
  "id": "1212"
}

Permissions requises

Perm_W_Withdrawals

Envoyez des Bitcoins depuis votre compte vers une adresse Bitcoin ou une adresse e-mail. Envoyez de l’Ethereum depuis votre compte vers une adresse Ethereum.

Si l’adresse e-mail n’est pas associée à un compte Luno existant, une invitation à créer un compte et réclamer les fonds sera envoyée.

Attention ! Les transactions en cryptomonnaie sont irréversibles. Veuillez vérifier que votre programme a été soigneusement testé avant d’utiliser cet appel.

Définition

POST https://api.mybitx.com/api/1/send

Arguments

amount string obligatoire Montant à envoyer en tant que chaîne décimale.
currency string obligatoire Monnaie à envoyer, p. ex. XBT
address string obligatoire Adresse ou adresse e-mail de destination Bitcoin ou adresse Ethereum à laquelle envoyer.

Remarque :
  • Les adresses Ethereum doivent comporter une somme de contrôle.
  • Les envois d’Ethereum vers des adresses e-mail ne sont pas pris en charge.
description string optionnel Description de la transaction à enregistrer sur le relevé de compte.
message string optionnel Message à envoyer au destinataire. Ceci n'est valable que pour les envois vers une adresse e-mail.

Exemple de demande

curl \
  -u keyid:keysecret \
  -X POST \
  -d amount=0.001 \
  -d currency=XBT \
  -d [email protected] \
  -d description=Your+reference \
  -d message=Message+for+recipient \
  https://api.mybitx.com/api/1/send
        

Exemple de réponse

{"success":true}

Permissions requises

Perm_W_Send

Les offres vous permettent de bloquer un taux de change pendant une courte période avec l’option d’accepter ou de rejeter l’offre.

Les offres peuvent être utiles dans de nombreuses applications à destination des clients lorsque les fluctuations de prix peuvent prêter à confusion.

L’API est utilisée comme suit : Créez une offre pour la transaction que vous souhaitez exécuter. Si vous décidez d’accepter l’offre avant expiration, vous validez l’offre. Si vous décidez de ne pas l’accepter, vous rejetez l’offre. Vous pouvez également récupérer le statut d’une offre à tout moment.

Créer une offre

Crée une nouvelle offre pour acheter ou vendre un montant spécifique.

Vous pouvez indiquer le montant exact que vous souhaitez payer ou le montant exact que vous souhaitez recevoir.

Par exemple, pour acheter exactement 0,1 Bitcoin avec des ZAR, vous devez créer une offre pour ACHETER 0,1 XBTZAR. L’offre renvoyée inclut le montant approprié en ZAR. Pour acheter des Bitcoins pour un montant exact de 100 ZAR, vous devez créer une offre pour VENDRE 100 ZARXBT. L’offre renvoyée indique le montant en Bitcoin correspondant qui sera renvoyé.

Une erreur est renvoyée si votre compte n’est pas vérifié pour la paire de monnaies ou si votre compte contient un solde insuffisant pour valider l’offre.

Définition

POST https://api.mybitx.com/api/1/quotes

Arguments

type string obligatoire Types possibles : BUY, SELL
base_amount string obligatoire Montant à acheter ou à vendre dans la monnaie de base de la paire.
pair string obligatoire Paire de monnaies à trader p. ex. XBTZAR, XBTMYR, ETHXBT. La paire peut aussi être inversée si vous voulez acheter ou vendre la monnaie de contrepartie (p. ex. ZARXBT).

Exemple de demande

curl \
  -u keyid:keysecret \
  -X POST \
  -d type=BUY \
  -d pair=XBTZAR \
  -d base_amount=0.1 \
  https://api.mybitx.com/api/1/quotes

Exemple de réponse

{
  "id": "1324",
  "type": "BUY",
  "pair": "XBTZAR",
  "base_amount": "0.1",
  "counter_amount": "1234.24",
  "created_at": 1418377612342,
  "expires_at": 1418377912342,
  "discarded": false,
  "exercised": false
}

Permissions requises

Perm_W_Orders

Obtenir une offre

Obtenir le dernier statut d’une offre.

Définition

GET https://api.mybitx.com/api/1/quotes/:id

Arguments

id string obligatoire Identifiant de l'offre à récupérer.

Exemple de demande

$ curl -u keyid:keysecret https://api.mybitx.com/api/1/quotes/1324

Exemple de réponse

{
  "id": "1324",
  "type": "BUY",
  "pair": "XBTZAR",
  "base_amount": "0.1",
  "counter_amount": "1234.24",
  "created_at": 1418377612342,
  "expires_at": 1418377912342,
  "discarded": false,
  "exercised": false
}

Permissions requises

Perm_R_Orders

Valider une offre

Valider une offre pour effectuer le trade. Si le solde disponible sur le compte est suffisant, il sera débité et le montant correspondant crédité.

Une erreur est renvoyée si l’offre a expiré ou si votre solde disponible est insuffisant.

Définition

PUT https://api.mybitx.com/api/1/quotes/:id

Arguments

id string obligatoire Identifiant de l'offre à valider.

Exemple de demande

$ curl -u keyid:keysecret -X PUT https://api.mybitx.com/api/1/quotes/1324

Exemple de réponse

{
  "id": "1324",
  "type": "BUY",
  "pair": "XBTZAR",
  "base_amount": "0.1",
  "counter_amount": "1234.24",
  "created_at": 1418377612342,
  "expires_at": 1418377912342,
  "discarded": false,
  "exercised": true
}

Permissions requises

Perm_W_Orders

Rejeter une offre

Rejeter une offre. Une fois qu’une offre a été refusée, elle ne peut plus être validée, même si elle n’a pas encore expiré.

Définition

DELETE https://api.mybitx.com/api/1/quotes/:id

Arguments

id string obligatoire Identifiant de l'offre à rejeter.

Exemple de demande

$ curl -u keyid:keysecret -X DELETE https://api.mybitx.com/api/1/quotes/1324

Exemple de réponse

{
  "id": "1324",
  "type": "BUY",
  "pair": "XBTZAR",
  "base_amount": "0.1",
  "counter_amount": "1234.24",
  "created_at": 1418377612342,
  "expires_at": 1418377912342,
  "discarded": true,
  "exercised": false
}

Permissions requises

Perm_W_Orders

Avertissement bêta : Cette API est encore en phase bêta. Cela signifie que des changements incompatibles peuvent encore avoir lieu.

L’API websocket fournit un accès en streaming aux données du marché. Elle est plus efficace et offre une latence plus faible par rapport à des demandes de récupération répétitives du carnet d’ordres et des trades récents mais est plus difficile à mettre en œuvre.

Le protocole de streaming fonctionne en demandant au client de garder en mémoire le carnet d’ordres. Les messages d’actualisation sont ensuite envoyés depuis le serveur et le client les utilise pour actualiser sa copie du carnet d’ordres. S’ils sont appliqués correctement et entièrement, l’affichage client du carnet d’ordres sera identique à celui du serveur.

Protocole

L’état du client comprend les données suivantes :

  • numéro séquentiel
  • ensemble des offres d’achat (identifiant, prix, volume)
  • ensemble des offres de vente (identifiant, prix, volume)
  • liste des trades

Chaque message d’actualisation transmis depuis le serveur possède un numéro séquentiel croissant unique. Le message comportant le numéro de séquence n peut être appliqué à la séquence d’état n-1 pour générer la séquence d’état n.

Un message peut contenir de multiples actualisations qui doivent être appliquées atomiquement et dans l’ordre.

Si une actualisation est reçue hors séquence (par exemple, la séquence d’actualisation n+2 ou n-1 est reçue après la séquence d’actualisation n), le client ne peut pas continuer et doit réinitialiser l’état.

Il existe trois types d’actualisations :

Créer

Ajouter une offre d’achat ou une offre de vente au carnet d’ordres avec un identifiant, un prix et un volume donnés.

{
    "order_id": "12345678",
    "type": "BID",
    "price": "1234.00",
    "volume": "1.23"
}

Supprimer

Supprimer l’ordre du carnet d’ordres avec un identifiant donné.

{
    "order_id": "12345678"
}

Trading

Réduire le volume en circulation d’un ordre dans le carnet d’ordres (maker_order_id) et ajouter un trade à la liste des trades.

{
    "base": "0.1",
    "counter": "5232.00",
    "maker_order_id": "12345678",
    "taker_order_id": "87654321",
}

Exemples

Un nouvel ordre est placé en-dessous du prix du marché

Dans ce cas, un message d’actualisation serait envoyé et contiendrait une seule actualisation de création.

Un ordre d’achat au prix du marché est placé et immédiatement exécuté

Dans ce cas, un message d’actualisation contenant de multiples actualisations de trades serait envoyé. Il n’y aura pas d’actualisation de création car le nouvel ordre n’entre jamais dans le carnet d’ordres.

Un ordre est placé et partiellement exécuté

Dans ce cas, le message d’actualisation contient de multiples actualisations de trades et une actualisation de création. Le volume dans l’actualisation de création est le volume restant pour l’ordre.

Un ordre est stoppé

Dans ce cas, le message d’actualisation contient une seule actualisation de suppression.

Websockets

Le protocole d’actualisations en streaming décrit ci-dessus est accessible via les websockets. Le serveur envoie l’état du carnet d’ordres actuel, puis envoie les messages d’actualisation aussi rapidement que possible. Le client et le serveur doivent envoyer des messages keepalive réguliers pour éviter toute déconnexion pendant les périodes de faible activité des messages d’actualisation.

Connectez-vous au serveur websocket sur : wss://ws.luno.com/api/1/stream/:pair

Avertissement bêta : Cette API est encore en phase bêta. Cela signifie que des changements incompatibles peuvent encore avoir lieu.

Le client doit d’abord envoyer les identifiants de clé API :

{
    "api_key_id": "abcdef",
    "api_key_secret": "api_key_secret_goes_here"
}

Le serveur enverra ensuite le carnet d’ordres actuel dans ce format :

{
    "sequence": "24352",
    "asks": [
        {
            "id": "23298343",
            "price": "1234.00",
            "volume": "0.93",
        }
        ],
    "bids": [
        {
            "id": "3498282",
            "price": "1201.00",
            "volume": "1.22"
        }
        ],
    "timestamp": 1528884331021
}

Ensuite, le serveur envoie des messages comme ceux-ci :

{
    "sequence": "24353",
    "trade_updates": null, // array of 0 or more trade updates
    "create_update": null, // null or 1 create update
    "delete_update": null, // null or 1 delete update
    "timestamp": 1528884332021
}

Un message vide est un message keepalive.

En cas d’erreur lors du traitement d’une mise à jour (par ex. une mise à jour hors service) ou si une erreur réseau ou une expiration a lieu (par ex. message keepalive pas reçu à temps), le client doit fermer la connexion et se reconnecter pour réinitialiser son état. Il est essentiel que les clients mettent en place un algorithme BEB (Exponential Backoff) pour toutes les reconnexions pour éviter de surcharger le serveur en cas d’erreur.

Actuellement, l’API Vendeur Luno est uniquement disponible pour les partenaires traitant de gros volumes. Si vous souhaitez intégrer les paiements en Bitcoin en tant que vendeur, veuillez contacter le Support Luno.

  • 16/07/2018 : Ajout de l'API du carnet d'ordres regroupés. Les limites de taux pour les données du marché ont été augmentées de 1 par seconde. Les données du marché peuvent être mises en cache pendant maximum 1 seconde.
  • 29/06/2018 : Ajout du paramètre post_only pour POST /api/1/postorder.
  • 15/06/2018 : Mise à jour URL SDK pour PHP et Python.
  • 13/06/2018 : Ajout de timestamp à la réponse du streamer du carnet d’ordres.
  • 08/06/2018 : Mise à jour URL SDK pour Go.
  • 23/12/2017 : Ajout de maker_order_id et taker_order_id aux mises à jour des trades. order_id obsolète.
  • 31/10/2017 : OAuth2 n’est plus disponible pour les nouvelles applications.
  • 16/10/2017 : Mise à jour de /api/1/trades pour renvoyer uniquement les catégories BID ou ASK, possibilité de retard par rapport aux données les plus récentes.
  • 02/07/2017 : Mise à jour du serveur websocket pour wss://ws.luno.com.
  • 02/03/2017 : Ajout de /api/1/fee_info qui renvoie vos commissions et volume de trading sur 30 jours.
  • 21/11/2016 : /api/1/trades renvoie désormais 100 résultats maximum par appel.
  • 01/11/2016 : Suppression de la limite de création de 50 adresses de réception pour POST /api/1/funding_address pour autoriser un nombre illimité d’adresses de réception par compte. La création d’adresses est limitée à 1 par heure, ce qui permet des bonds jusqu’à 10 appels consécutifs.
  • 10/08/2016 : Ajout de GET /api/1/listtrades pour permettre de lister les trades récents. Veuillez noter que les trades seront bientôt supprimés de la réponse de GET /api/1/listorders GET /api/1/orders/:id.
  • 05/08/2016 : Ajout de la rubrique API Streaming bêta
  • 25/07/2016 : Ajout du paramètre optionnel beneficiary_id pour POST /api/1/withdrawals.
  • 29/05/2016 : Le code d’erreur 429 peut être renvoyé lorsque les limites de taux sont dépassées. Par défaut à partir du 01/07/2016.
  • 04/04/2016 : Ajout du champ completed_timestamp aux réponses GET /api/1/listorders et GET /api/1/orders/:id.
  • 05/02/2016 : Ajout du paramètre optionnel since à GET /api/1/trades et ajout du champ is_buy à la réponse.
  • 14/09/2015 : Ajout de POST /api/1/marketorder pour autoriser le placement d’ordres d’achat au prix du marché.
  • 29/07/2015 : Ajout des permissions Perm_R_Beneficiaries et Perm_W_Beneficiaries. Vous devrez générer une nouvelle clé API si vous avez besoin de ces permissions.
  • 08/06/2015 : GET /api/1/withdrawals/ renommé en GET /api/1/withdrawals et POST /api/1/withdrawals/ renommé en POST /api/1/withdrawals pour plus d’homogénéité avec les autres points de terminaison. Les anciennes URL sont obsolètes.
  • 28/05/2015 : Ajout de POST accounts pour créer des comptes supplémentaires dans des monnaies spécifiques.
  • 07/05/2015 : Ajout du champ "Name" à la réponse "Balance"
  • 2015-04-25:
    • Ajout de la rubrique "Accounts".
    • Ajout des appels transactions du compte et transactions en attente.
    • Ajout de la rubrique "Permissions".
    • Référencement des permissions requises pour chaque appel.
    • Description actualisée de l’appel "send". Le PIN n’est plus nécessaire.
    • Ajout du paramètre "name" pour POST /api/1/funding_address.
  • 27/03/2015 : Renvoyer une liste de trades pour un ordre sur GET orders/:id si l’ordre est lié à des trades.
  • 30/01/2015 : Mise au point sur l’interprétation de base, counter, base_fee et counter_fee dans la réponse list_orders dans le cas où counter_fee est différent de zéro pour les ordres d’achat et dans le cas où base_fee est différent de zéro pour les ordres de vente.
  • 17/12/2014 : Le paramètre montant pour les demandes de retrait exclut désormais la commission de retrait.
  • 2014-12-12:
    • Ajout de la nouvelle API Quotes.
    • L’appel bêta transactions est désormais obsolète.
  • 04/12/2014 : La méthode balance peut désormais être appelée sans arguments pour renvoyer tous les soldes des comptes.
  • 2014-08-26:
    • Ajout de l’appel d’API Send.
    • Ajout de l’API OAuth 2.
  • 10/06/2014 : Les ordres placés via l’API ne sont plus soumis à des limites différentes de celles des ordres placés via le site internet.
  • 2014-06-02:
    • Vous pouvez désormais créer plusieurs clés API avec différentes permissions (par ex. lecture seule, lecture/modification).
    • Ajout d’appels pour lister, créer, obtenir et annuler des demandes de retrait.
    • Ajout d’un lien vers la librairie client Android.
  • 2014-05-29:
    • Le nom hôte privilégié pour les appels d’API a été modifié :api.mybitx.com.
    • Ajout d’un appel expérimental pour récupérer la liste des transactions.
    • Ajout de l’appel pour attribuer de nouvelles adresses de réception.
    • L’appel d’adresse de réception renvoie désormais le montant reçu par cette adresse.
    • Vous pouvez désormais demander à listorders de renvoyer uniquement la liste des ordres ouverts.
  • 15/04/2014 : Avant, les ordres créés via l’API expiraient au bout de 24 heures. Désormais, les ordres créés via l’API n’expirent plus. Leur comportement est désormais identique à celui des ordres placés via le site internet.
  • 2014-01-25:
    • Un nouvel appel funding_address a été ajouté pour obtenir l’adresse Bitcoin dont vous avez besoin pour approvisionner votre compte de trading.
  • 2014-01-21:
    • L’API a été étendue pour prendre en charge de multiples paires d’actifs.
    • Un nouvel appel balance a été ajouté pour demander le solde du compte de trading.
    • Toutes les URL ont été renommées de /api/1/BTCZAR/x en /api/1/x?pair=XBTZAR. Les anciennes URL sont obsolètes.
    • getlimits : Cet appel est obsolète. Veuillez plutôt utiliser le nouvel appel balance.
    • ticker : Le champ currency est désormais obsolète.
    • orderbook : Le champ currency est désormais obsolète.
    • trades : Le champ currency est désormais obsolète.
    • listorders : Les champs btc, zar, fee_btc et fee_zar sont désormais obsolètes. Veuillez plutôt utiliser les champs base, counter, fee_base et fee_counter.
    • L’indicateur du marché intégré a été supprimé car personne ne l’utilise.
    • Toutes les fonctionnalités obsolètes continueront à fonctionner pendant deux mois.
  • 2014-01-06:
    • listorders : Ajout des champs fee_btc et fee_zar.
    • listorders : Suppression de l’état SETTLEMENT (n’est plus pertinent).
    • ticker : Suppression de mtgox_price (utiliser l’API Mt Gox’s directement).

Il n’est jamais trop tard pour débuter.
Achetez, stockez et découvrez le Bitcoin et l’Ethereum sans plus attendre.

Desktop Icon Apple App Store Logo Google Play Store Logo