NAV Navbar
Logo
python

Introducción

El API de Buda.com

Qué bien! Encontraste la documentación de la REST API de Buda.com. Si no eres un desarrollador de software, andas muy perdido :)

El API de Buda.com, como la de la mayoría de los exchanges de cryptomonedas, se divide en llamadas públicas y llamadas privadas.

Las llamadas públicas no requieren decir quién eres para usarlas, son de datos públicos.Puedes probar algunas directamente en tu browser! Por ejemplo:

https://www.buda.com/api/v2/markets/btc-clp/ticker.json

Las llamadas privadas necesitan autenticación, así que para usarlas necesitas obtener un par API-KEY / API-SECRET desde tu cuenta. Antes de que puedas obtenerla, tenemos que activar el modo developer de tu cuenta y para eso tienes que escribir a [email protected] pidiéndolo expresamente.

Pedimos que mandes este email porque el API-KEY / API-SECRET permite acceso completo a la cuenta, y la gente que no entiende podría caer en estafas y entregarle estos numeritos a alguien malvado.

En general, los url de nuestra API se forman así

https://www.buda.com/api/[version]/[path].[format]

Donde, por el momento:

Parameter Value
version v2
format json

Autenticación

Intentamos hacer una autenticación segura pero sencilla. Creo que nos quedó más segura que sencilla, pero no te preocupes que hay buenos ejemplos.

Ojo, recuerda que primero debes contactarnos para que activemos tu cuenta en modo developer. Entonces obtendrás desde la página, en la sección “Mi Cuenta”, un API-KEY y un API-SECRET.

Buda.com espera que todas sus llamadas privadas vayan firmadas, siguiendo las siguientes instrucciones:

1. Generar un nonce

El nonce debe ser un número entero que debe siempre cumplir con la condición de ser mayor al último nonce usado. Esto asegura que tus requests no puedan ser repetidos por un “Man in the middle”. Una (buena) forma de lograr esto es usando un timestamp.

2. Preparar un string para firmar:

El contenido del string es así:

{POST|PUT|GET} {path} {base64_encoded_body} {nonce}

Donde:

Por ejemplo:

GET /api/v1/orders?open=true 423874932432

3. Obtener la firma

La firma se obtiene creando una función de encriptación SHA-384 a partir del API-SECRET y aplicándola sobre el string del punto anterior 😱 . Esta firma debe generarse en formato hexadecimal.

4. Adjuntar API-KEY, nonce y firma en el header del request

Por ejemplo:

Header Value
X-SBTC-APIKEY 0faea2f360a508a6d105a3bb60247af0
X-SBTC-NONCE 145511231131231
X-SBTC-SIGNATURE 5c873eddb1117b930b1caa058ada3f7…

Un ejemplo en Python:

    def gen_nonce():
        # Get a str from the current time in microseconds.
        return str(int(time.time() * 1E6))

    def _sign_payload(self, method, path, params=None, payload=None):

        route = build_route(path, params)
        nonce = gen_nonce()

        if payload:
            j = json.dumps(payload).encode('utf-8')
            encoded_body = base64.standard_b64encode(j).decode('utf-8')
            string = method + ' ' + route + ' ' + encoded_body + ' ' + nonce
        else:
            string = method + ' ' + route + ' ' + nonce

         h = hmac.new(key=self.SECRET.encode('utf-8'),
                     msg=string.encode('utf-8'),
                     digestmod=hashlib.sha384)

        signature = h.hexdigest()

        return {
            'X-SBTC-APIKEY': self.KEY,
            'X-SBTC-NONCE': nonce,
            'X-SBTC-SIGNATURE': signature,
            'Content-Type': 'application/json',
        }

Librerías Open Source

Si te quieres ahorrar un poco del trabajo, aquí tienes una recopilación de librerías de nuestra API en distintos lenguajes.

Ojo, estas librerías no son oficiales ni han sido probadas por el equipo de Buda.com, pero hemos hablado con sus autores y se ven buenas personas ;)

Lenguaje Link
Python https://github.com/delta575/trading-api-wrappers
Python https://github.com/CriptoPagos/surbtc-api-client-python
Java https://github.com/FeroSalgado/java-surbtc-api
Java https://github.com/daplay/jsurbtc

Si quieres compartir tu librería con la comunidad, escríbenos a [email protected]

Llamadas Públicas

Ticker

from trading_api_wrappers import Buda

buda = Buda.Public()
buda.ticker("btc-clp")

The above command returns JSON structured like this:

{
  "ticker": {
    "last_price": ["879789.0","CLP"],
    "max_bid": ["879658.0","CLP"],
    "min_ask": ["876531.11","CLP"],
    "price_variation_24h": 0.005,
    "price_variation_7d": 0.100,
    "volume": ["102.0","BTC"]
  }
}

El ticker permite ver el estado actual del mercado. Muestra la mejores ofertas de compra y venta (bid y ask), asi como el precio de la ultima transacción (last_price). También incluye información como el volumen diario y cuanto ha cambiado el precio en las últimas 24 hrs.

HTTP Request

GET /markets/<market_id>/ticker

Path Parameters

Parameter Description
market_id La ID del mercado (Ej: “btc-clp”, “btc-cop”)

Response Details

Key Type Description
last_price [amount, currency] Precio de la última orden ejecutada
min_ask [amount, currency] Menor precio de venta
max_bid [amount, currency] Máximo precio de compra
volume [amount, currency] Volumen transado en las últimas 24 horas
price_variation_24h [float] Cuanto ha variado el precio en las últimas 24 horas
price_variation_7d [float] Cuanto ha variado el precio el los últimos 7 días
timestamp * [time] Timestamp de la consulta

Order Book

from trading_api_wrappers import Buda

buda = Buda.Public()
buda.order_book("btc-clp")

The above command returns JSON structured like this:

{
  "order_book": {"asks": [ ["836677.14", "0.447349"],
                           ["837462.23", "1.43804963"],
                           ["837571.89", "1.41498541"],
                           ["837597.23", "0.13177617"],
                           ["837753.25", "1.40724154"],
                           ["837858.51", "1.40988433"],
                           ["837937.0", "1.46619702"],
                           ["838000.57", "1.4527277"],
                           ["838305.78", "0.8317892"]
                         ],
                 "bids": [ ["821580.0", "0.25667389"],
                           ["821211.0", "0.27827307"],
                           ["819882.39", "1.40003128"],
                           ["819622.99", "1.40668862"],
                           ["819489.9", "1.41736995"],
                           ["818942.2", "1.41001753"],
                           ["818820.29", "0.93677863"],
                           ["816879.83", "1.44022295"]
                          ]
  }
}

Obtén el libro de órdenes completo

HTTP Request

GET /markets/<market_id>/order_book

Path Parameters

Parameter Description
market_id La ID del mercado (Ej: “btc-clp”, “btc-cop”, “eth-clp”, “eth-btc”)

Response Details

Key Type Description
asks [price, amount] Arreglo de ordenes del libro de ventas
bids [price, amount] Arreglo de ordenes del libro de compras

Trades

from trading_api_wrappers import Buda
import time

since_t = time.time() - 60*60*24*7 # desde hace una semana atras

buda = Buda.Public()
buda.trades("btc-clp", timestamp=since_t)

The above command returns JSON structured like this:

{
  trades: {
    timestamp: "1476905551698",
    last_timestamp: "1476380738941",
    entries: [
      ["1476905551687", "0.00984662", "435447.12", "buy"],
      ["1476905551676", "3.01572553", "435283.3", "buy"],
      ...
    ]
  }
}

Obten una lista de las transacciones más recientes del mercado indicado

HTTP Request

GET markets/<market_id>/trades

Path Parameters

Parameter Description
market_id La ID del mercado (Ej: “btc-clp”, “btc-cop”, “eth-clp”, “eth-btc”)

URL Parameters

Se incluyen al final del URL ej: GET /markets/BTC-CLP/trades?timestamp=1502472564

Parameter Description
timestamp Unix timestamp del primer trade a solicitar

Response Details

Key Type Description
entries [timestamp, amount, price, direction] Arreglo de transacciones
timestamp [timestamp] Unix timestamp del primer trade recibido
last_timestamp [timestamp] Unix timestamp del último trade recibido

Markets

from trading_api_wrappers import Buda

buda = Buda.Public()
buda.markets()

The above command returns JSON structured like this:

{
  "markets": [
    {
      "base_currency": "BTC",
      "id": "BTC-CLP",
      "minimum_order_amount": ["0.001", "BTC"],
      "name": "btc-clp",
      "quote_currency": "CLP"
    },
    {
      "base_currency": "BTC",
      "id": "BTC-COP",
      "minimum_order_amount": ["0.001", "BTC"],
      "name": "btc-cop",
      "quote_currency": "COP"
    }
  ]
}

Un mercado permite separar las compras y ventas por moneda. En un mercado se compra y vende un tipo de moneda (base_currency) y se usa otro tipo de moneda para pagar por estas compras y ventas (quote_currency). Un mercado está identificado por estas dos monedas. Por ejemplo, el mercado que actualmente operamos permite vender y comprar bitcoins (BTC) usando pesos chilenos (CLP). Su identificador, por ende, es: btc-clp.

HTTP Request

GET /markets

Response Details

Key Type Description
markets [array] Arreglo de mercados disponibles
name [market_id] Nombre del mercado el cual corresponde al market_id
base_currency [currency] Moneda de cambio
quote_currency [currency] Moneda de pago

Llamadas Privadas

Las llamadas privadas requieren un header con tu API-KEY y una firma a partir de tu API-SECRET. Mira la sección Autenticación

Balances

from trading_api_wrappers import Buda

buda = Buda.Auth(api_key, api_secret)
buda.balance('BTC')

The above command returns JSON structured like this:

{
  "balances": [
    {
      "id":"BTC",
      "amount":["11.5274815","BTC"],
      "available_amount":["10.5274815","BTC"],
      "frozen_amount":["1.0","BTC"],
      "pending_withdraw_amount":["0.0","BTC"],
      "account_id":5
    },
    {
      "id":"CLP",
      "amount":["7349002.46","CLP"],
      "available_amount":["7349002.46","CLP"],
      "frozen_amount":["0.0","CLP"],
      "pending_withdraw_amount":["0.0","CLP"],
      "account_id":5
    },
    ...
    ]
}

Muestra los balances de tu cuenta, en cada moneda.

HTTP Request

GET /balances

GET /balances/<currency>

Path Parameters

Parameter Description
currency (opcional) - El acrónimo de la moneda: “clp”, “cop”, “pen”, “btc”, “eth” o “bch”

Response (JSON)

La respuesta de la llamada:

Key Type Description
balances [array] Arreglo de balances por moneda

Y luego cada balance:

Key Type Description
id [currency] Moneda del arreglo de balances
amount [amount, currency] Cantidad total asociada a la cuenta
available_amount [amount, currency] Cantidad disponible para crear nuevas órdenes o retiros
frozen_amount [amount, currency] Cantidad retenida en órdenes pendientes
pending_withdrawal_amount [amount, currency] Cantidad retenida en proceso de retiro

Mis Órdenes

from trading_api_wrappers import Buda

buda = Buda.Auth(api_key, api_secret)
buda.order_pages("btc-clp")

The above command returns JSON structured like this:

{
  "meta": {
    "current_page": 1,
    "total_count": 42899,
    "total_pages": 14300
  },
    "orders": [
    {
      "id":33256268,
      "type":"Bid",
      "state":"canceled",
      "created_at":"2017-06-30T02:14:45.368Z",
      "market_id":1,
      "account_id":1215,
      "fee_currency":"BTC",
      "price_type":"limit",
      "limit":["1728000.0","CLP"],
      "amount":["0.001","BTC"],
      "original_amount":["0.001","BTC"],
      "traded_amount":["0.0","BTC"],
      "total_exchanged":["0.0","CLP"],
      "paid_fee":["0.0","BTC"]
    },
    {
      "id":32356255,
      "type":"Ask",
      "state":"traded",
      "created_at":"2017-06-30T02:10:44.798Z",
      "market_id":1,
      "account_id":5,
      "fee_currency":"CLP",
      "price_type":"market",
      "limit":null,
      "amount":["0.0","BTC"],
      "original_amount":["0.01","BTC"],
      "traded_amount":["0.01","BTC"],
      "total_exchanged":["17280.01","CLP"],
      "paid_fee":["138.22","CLP"]
    },
    {
      "id":2941964,
      "type":"Ask",
      "state":"traded",
      "created_at":"2017-03-10T21:11:42.131Z",
      "market_id":1,
      "account_id":5,
      "fee_currency":"CLP",
      "price_type":"limit",
      "limit":["700000.0","CLP"],
      "amount":["0.0","BTC"],
      "original_amount":["5.0","BTC"],
      "traded_amount":["5.0","BTC"],
      "total_exchanged":["3625000.0","CLP"],
      "paid_fee":["19937.5","CLP"]},
  ]
}

La orden es el núcleo del Exchange. Una orden es una oferta de compra o de venta (según el type) por un cierto monto (amount) de la moneda base del mercado (típicamente la cryptomoneda).

Si la orden es una orden de mercado (es decir, price_type = market), se intentará comprar o vender al mejor precio disponible en el mercado (revisando las órdenes límite).

Si es una orden límite deberá enviarse el precio al que se colocará la orden (usando el atributo limit), que será el límite al que se desee comprar o vender.

Si la orden es de tipo Bid, limit es el precio más alto al cual el creador de la orden está dispuesto a comprar. Si la orden es de tipo Ask, limit es el precio más bajo al cual el creador de la orden está dispuesto a vender.

La ejecución de la orden es programada para ser ejecutada inmediatamente luego de su creación, aunque el proceso ocurre asíncronamente, pues entra en una cola en órden de llegada. Es importante notar que una orden de tipo límite podría quedar parcialmente comprada/vendida, pues su límite puede traslaparse con algunas ofertas contrarias, o una orden de mercado más pequeña podría consumirla parcialmente.

Durante el ciclo de vida de una orden, ésta puede pasar por varios estados:

State Description
received La orden ha sido recibida pero no ha ocurrido ningún procesamiento aún
pending El monto máximo que la orden puede costar deja de ser disponible para futuras órdenes. A partir de este momento la orden puede hacer match con otras.
traded La orden ha terminado de transarse por completo
canceling La orden ha recibido una petición de cancelación
canceled La orden fue cancelada y el monto no transado está nuevamente disponible

HTTP Request

GET /markets/<market_id>/orders

Path Parameters

Parameter Description
market_id La ID del mercado (Ej: “btc-clp”, “btc-cop”)

Query Parameters

Parameter Default Description
per 300 Número de órdenes por página [min 1, max 300]
page 1 Número de página a recibir
state None Estado de la orden
minimun_exchanged None Minimo transado por la orden

Response Details (JSON)

Key Type Description
id [int] ID de la orden
type [string] Dirección de la orden (Ej: “Bid”, “Ask”)
price_type [string] Tipo de orden (Ej: “limit”, “market”)
fee_currency [currency] Moneda en la cual es cobrada la tarifa (Ej: “BTC”, “CLP” ,“COP”)
limit [amount, currency] Precio de la orden
amount [amount, currency] Volumen pendiente de la orden
original_amount [amount, currency] Volumen original de la orden
traded_amount [amount, currency] Volumen transado de la orden
paid_fee [amount, currency] Tarifa pagada por la orden
total_exchanged [amount, currency] Total transado por la orden
total_pages [int] Cantidad total de páginas
total_count [int] Cantidad total de órdenes
current_page [int] Página actual

Nueva Orden

Example Payload:

{
  "order": {
    "type": "Bid",
    "price_type": "limit",
    "limit": "230000.0",
    "amount": "0.4"
  }
}

Example Code:

from trading_api_wrappers import Buda

buda = Buda.Auth(api_key, api_secret)
buda.new_order("btc-clp", "bid", "limit", 0.05, 835875.00)

The above command returns JSON structured like this:

{
  "order": {
    "account_id": 358,
    "amount": ["0.05", "BTC"],
    "created_at": "2017-04-18T19:54:24.611Z",
    "fee_currency": "BTC",
    "id": 620196,
    "limit": ["835875.00", "CLP"]
    "market_id": 1,
    "original_amount": ["0.05", "BTC"],
    "paid_fee": ["0.0", "BTC"],
    "price_type": "limit",
    "state": "received",
    "total_exchanged": ["0.0", "CLP"],
    "traded_amount": ["0.0", "BTC"],
    "type": "Bid",
    "weighted_quotation": None
  }
}

Crea una nueva orden

HTTP Request

POST /markets/<market_id>/orders

Path Parameters

Parameter Description
market_id La ID del mercado (Ej: “btc-clp”, “btc-cop”)

Request Payload

Key Required Description
type Yes Dirección de la orden (Ej: “Bid”, “Ask”)
price_type Yes Tipo de orden (Ej: “limit”, “market”)
limit Limit Precio de la orden
amount Yes Volumen de la orden

Response Details (JSON)

Key Type Description
id [int] ID de la orden
type [string] Dirección de la orden (Ej: “Bid”, “Ask”)
price_type [string] Tipo de orden (Ej: “limit”, “market”)
fee_currency [currency] Moneda en la cual es cobrada la tarifa (Ej: “BTC”, “CLP” ,“COP”)
limit [amount, currency] Precio de la orden
amount [amount, currency] Volumen pendiente de la orden
original_amount [amount, currency] Volumen original de la orden
traded_amount [amount, currency] Volumen transado de la orden
paid_fee [amount, currency] Tarifa pagada por la orden
total_exchanged [amount, currency] Total transado por la orden
total_pages [int] Cantidad total de páginas
total_count [int] Cantidad total de órdenes
current_page [int] Página actual

Cancelar Orden

Example Payload:

{
  "state": "canceling"
}

Example Code:

from trading_api_wrappers import Buda

order_id = 620196

buda = Buda.Auth(api_key, api_secret)
buda.cancel_order(order_id)

The above command returns JSON structured like this:

{
  "order": {
    "account_id": 548,
    "amount": ["0.8317892", "BTC"],
    "created_at": "2017-04-18T16:09:38.089Z",
    "fee_currency": "CLP",
    "id": 620195,
    "limit": ["838305.78", "CLP"],
    "market_id": 1,
    "original_amount": ["0.8317892", "BTC"],
    "paid_fee": ["0.0", "CLP"],
    "price_type": "limit",
    "state": "canceling",
    "total_exchanged": ["0.0", "CLP"],
    "traded_amount": ["0.0", "BTC"],
    "type": "Ask",
    "weighted_quotation": None
  }
}

Permite comenzar la cancelación de una orden. No se puede realizar ningún otro cambio con este endpoint.

HTTP Request

PUT /orders/<id>

Path Parameters

Parameter Description
id La ID de la orden a cancelar

Request Payload

Key Required Description
state Yes Debe indicar “canceling”

Response Details (JSON)

Key Type Description
id [int] ID de la orden
type [string] Dirección de la orden (Ej: “Bid”, “Ask”)
price_type [string] Tipo de orden (Ej: “limit”, “market”)
fee_currency [currency] Moneda en la cual es cobrada la tarifa (Ej: “BTC”, “CLP” ,“COP”)
limit [amount, currency] Precio de la orden
amount [amount, currency] Volumen pendiente de la orden
original_amount [amount, currency] Volumen original de la orden
traded_amount [amount, currency] Volumen transado de la orden
paid_fee [amount, currency] Tarifa pagada por la orden
total_exchanged [amount, currency] Total transado por la orden
total_pages [int] Cantidad total de páginas
total_count [int] Cantidad total de órdenes
current_page [int] Página actual

Estado de la orden

Example Code:

from trading_api_wrappers import Buda

order_id = 620195

buda = Buda(api_key, api_secret)
buda.single_order(order_id)

The above command returns JSON structured like this:

{
  "order": {
            "account_id": 548,
            "amount": ["0.8317892", "BTC"],
            "created_at": "2017-04-18T16:09:38.089Z",
            "fee_currency": "CLP",
            "id": 620195,
            "limit": ["838305.78", "CLP"],
            "market_id": 1,
            "original_amount": ["0.8317892", "BTC"],
            "paid_fee": ["0.0", "CLP"],
            "price_type": "limit",
            "state": "canceled",
            "total_exchanged": ["0.0", "CLP"],
            "traded_amount": ["0.0", "BTC"],
            "type": "Ask",
            "weighted_quotation": None
            }
}

Permite ver los detalles del estado actual de una orden

HTTP Request

GET /orders/<id>

Path Parameters

Parameter Description
id La ID de la orden a consultar

Response Details (JSON)

Key Type Description
id [int] ID de la orden
type [string] Dirección de la orden (Ej: “Bid”, “Ask”)
price_type [string] Tipo de orden (Ej: “limit”, “market”)
fee_currency [currency] Moneda en la cual es cobrada la tarifa (Ej: “BTC”, “CLP” ,“COP”)
limit [amount, currency] Precio de la orden
amount [amount, currency] Volumen pendiente de la orden
original_amount [amount, currency] Volumen original de la orden
traded_amount [amount, currency] Volumen transado de la orden
paid_fee [amount, currency] Tarifa pagada por la orden
total_exchanged [amount, currency] Total transado por la orden
total_pages [int] Cantidad total de páginas
total_count [int] Cantidad total de órdenes
current_page [int] Página actual

Historial de depositos/retiros

Example Payload:

{
  "state": "canceling"
}

Example Code:

from trading_api_wrappers import Buda

buda = Buda.Auth(api_key, api_secret)
buda.deposits("BTC")
buda.withdrawals("BTC")

The above command returns JSON structured like this:

{Withdrawal
  "deposits": [
    {
      "id": 1,
      "created_at": "2017-04-11 20:24:51 +0000",
      "updated_at": "2017-04-11 20:24:51 +0000",
      "amount": ["0.4","BTC"],
      "currency": "BTC",
      "state": "pending_confirmation",
      "deposit_data": {
        "type": "bitcoin_deposit_data",
        "address": "mo366JJaDU5B1hmnPygyjQVMbUKnBC7DsY",
        "tx_hash": "51eaf04f9dbbc1417dc97e789edd0c37ecda88bac490434e367ea81b71b7b015"
      }
    },
    {
      "id": 2,
      "created_at": "2017-04-11 22:34:11 +0000",
      "updated_at": "2017-04-11 23:22:51 +0000",
      "amount": ["3.45","BTC"],
      "currency": "BTC",
      "state": "confirmed",
      "deposit_data": {
        "type": "bitcoin_deposit_data",
        "address": "3GnLXPijNXSVUh4JQw9q5SbhYaL3S57Zp7",
        "tx_hash": "0608f49741a150fac8f72d2d143d6fd9ef36333b224e41f7bcdc159b40b9b165"
      }
    }
  ]
}

{
  "withdrawals": [
    {
      "id": 1,
      "created_at": "2017-04-11 20:24:51 +0000",
      "updated_at": "2017-04-11 20:24:51 +0000",
      "state": "pending_execution",
      "amount": ["0.35","BTC"],
      "currency": "BTC",
      "withdrawal_data": {
        "type": "bitcoin_withdrawal_data",
        "target_address": "mo366JJaDU5B1hmnPygyjQVMbUKnBC7DsY",
        "tx_hash": "51eaf04f9dbbc1417dc97e789edd0c37ecda88bac490434e367ea81b71b7b015"
      }
    },
    {
      "id": 2,
      "created_at": "2017-04-11 20:24:51 +0000",
      "updated_at": "2017-04-11 20:24:51 +0000",
      "state": "confirmed",
      "amount": ["0.4","BTC"],
      "currency": "BTC",
      "withdrawal_data": {
        "type": "bitcoin_withdrawal_data",
        "target_address": "mo366JJaDU5B1hmnPygyjQVMbUKnBC7DsY",
        "tx_hash": "51eaf04f9dbbc1417dc97e789edd0c37ecda88bac490434e367ea81b71b7b015"
      }
    }
  ]
}

Permite consultar el historial de depositos y retiros

Para el estado de un depósito o retiro, entregado por el atributo state, los posibles valores son:

State Description
pending_confirmation El depósito no ha sido confirmado
confirmed El depósito fué aceptado y el monto abonado
rejected El depósito fué rechazado
retained El depósito ha sido retenido, posiblemente por alguna violación a los términos del servicio

HTTP Request

GET /currencies/<currency_code>/deposits

GET /currencies/<currency_code>/withdrawals

Path Parameters

Parameter Description
currency_code Acrónimo de la moneda a listar

Response Details (JSON)

Key Type Description
id [int] ID del deposito/retiro
created_at [time] Fecha de creación de la solicitud
updated_at [time] Fecha del último update de la solicitud
amount [amount, currency] Cantidad asociada al depósito/retiro
currency [currency] Moneda asociada al depósito/retiro
state [string] Estado de la solicitud (Ej: “confirmed”, “rejected”)
deposit_data [array] Arreglo con detalles depentientes del tipo de consulta
type [string] Tipo de data entregada (Ej: “bitcoin_deposit_data”,“fiat_withdrawal_data”)
address [address] Dirección del abono
target_address [address] Dirección de destino del retiro
transaction_hash [string] ID de la transacción

Nuevo Retiro

Example Payload:

{
  "withdrawal": {
    "amount": 2.5,
    "currency": "BTC",
    "withdrawal_data": {
      "target_address": "mo366JJaDU5B1hmnPygyjQVMbUKnBC7DsY"
    }
  }
}

Example Code:

from trading_api_wrappers import Buda

target_address = "mo366JJaDU5B1hmnPygyjQVMbUKnBC7DsY"
amount = 2.5

buda = Buda.Auth(api_key, api_secret)
buda.withdrawal("BTC", amount, target_address)

The above command returns JSON structured like this:

{
  "withdrawal": {
    "id": 1,
    "created_at": "2017-04-11 20:24:51 +0000",
    "updated_at": "2017-04-11 20:24:51 +0000"
  }
}

Genera una solicitud de retiro para el monto y moneda seleccionadas

HTTP Request

POST /currencies/<currency_code>/withdrawals

Path Parameters

Parameter Description
currency_code Acrónimo de la moneda a retirar

Response Details (JSON)

Key Type Description
id [int] ID del retiro
created_at [time] Fecha de creación de la solicitud
updated_at [time] Fecha del último update de la solicitud

Depósito dinero fiat

Example Payload:

{
  "deposit": {
    "amount": ["250000.00","CLP"]
  }
}

Example Code:

# Warning - Not yet implemented on this Python library
from trading_api_wrappers import Buda

buda = Buda.Auth(api_key, api_secret)
buda.new_fiat_deposit("CLP", 250000)

The above command returns JSON structured like this:

{
  "deposit": {
    "id": 1,
    "created_at": "2017-04-11 22:02:56 +0000",
    "updated_at": "2017-04-11 22:02:56 +0000",
    "amount": ["250000.00","CLP"],
    "currency": "BTC",
    "state": "confirmed",
    "deposit_data": {
       *
    }
  }

Genera una nueva notificación de depósito

El proceso de depósito de un monto en Fiat tiene 2 etapas:

HTTP Request

POST /currencies/<currency_code>/deposits

URL Parameters

Parameter Description
currency_code Acrónimo de la moneda a depositar

Response Details (JSON)

Key Type Description
id [int] ID del deposito/retiro
created_at [time] Fecha de creación de la solicitud
updated_at [time] Fecha del último update de la solicitud
amount [amount, currency] Cantidad asociada al depósito
currency [currency] Moneda asociada al depósito
state [string] Estado de la solicitud (Ej: “confirmed”, “rejected”)
deposit_data [array] Arreglo con detalles depentientes del tipo de consulta

Depósito criptomonedas

Example Payload:

{
  "receive_address": {
  }
}

Example Code:

# Warning - Not yet implemented on this Python library
from trading_api_wrappers import Buda
import time

buda = Buda.Auth(api_key, api_secret)
address_id = buda.new_crypto_address("BTC")['id']
time.sleep(3)
address = buda.get_address("BTC", address_id)['address']

The above command returns JSON structured like this:

{
  "receive_address": {
    "id": 1,
    "created_at": "2017-04-11 20:24:51 +0000",
    "updated_at": "2017-04-11 20:24:51 +0000",
    "address": "mo366JJaDU5B1hmnPygyjQVMbUKnBC7DsY",
    "used": false
  }
}

Permite generar una nueva address para abonar criptomonedas a BUDA La creación de addresses es un proceso asincrono. Se debe esperar solicitar y luego consultar por id para obtenerla

HTTP Request

Request Description
POST /currencies/<currency_code>/receive_addresses Solicitar nueva address
GET /currencies/<currency_code>/receive_addresses/<id> Consultar nuevamente por id para rescatar la address
GET /currencies/<currency_code>/receive_addresses Listar todas las addresses asociadas a la cuenta

URL Parameters

Parameter Description
currency_code Acrónimo de la cryptomoneda a depositar
id ID de la dirección asociada

Response Details (JSON)

Key Type Description
id [int] ID de la dirección asociada
created_at [time] Fecha de creación
updated_at [time] Fecha del último update
address [address] Dirección asignada para depositar
used [bool] Determina si la address fue usada con anterioridad

Otras Operaciones

Crear nueva API Key

Example Payload:

{
  "api_key": {
    "name": "Mi primera clave",
    "expiration_time": "2016-10-10 00:00:00"
  }
}

Example Code:

# Warning - Not yet implemented on this Python library
from trading_api_wrappers import Buda

buda = Buda.Auth(api_key, api_secret)
buda.new_apikey('Mi nueva llave','1235487548.5541')

The above command returns JSON structured like this:

{
  "api_key": {
    "name": "Mi primera clave",
    "expiration_time": "2016-10-10 00:00:00",
    "id": "0faea2f360a508a6d105a3bb60247af0",
    "secret": "ZWWOaA2w6u9OnUiLTQQ2pJVzqPX2UnsgxYCqcOro"
  }
}

Crea nueva API Key para llamadas autenticadas.

HTTP Request

POST /api_keys

Response Details (JSON)

Key Type Description
name [string] Nombre de la clave
expiration_time [time] Fecha de expiración de la clave (opcional)
id [string] Identificador de la clave, necesario para realizar la autenticación
secret [string] Secreto de la clave, necesario para firmar operaciones autenticadas

Errors

La API de Buda.com utiliza los siguientes códigos de error:

Error Code Meaning
400 Bad Request – La solicitud contiene sintaxis errónea y no debería repetirse
401 Unauthorized – Tu API Key es inválida
403 Forbidden – La solicitud fue legal, pero no cuenta con los privilegios para hacerla
404 Not Found – Recurso no encontrado
405 Method Not Allowed – Has intentado acceder a un endpoint con el metodo incorrecto (GET/POST)
406 Not Acceptable – Has solicitado un formato no soportado por el servidor (Header “Accept”)
410 Gone – El recurso seleccionado fue removido del servidor
429 Too Many Requests – Has superado el límite de solicitudes por segundo
500 Internal Server Error – Ha habido un problema con nuestro servidor, intentalo más tarde
503 Service Unavailable – Estamos temporalmente indisponibles por mantenimiento, intentalo más tarde