NAV Navbar
Logo
python

Introducción

Introducción

Ésta es la documentación de la API REST detrás de SURBTC. Luego de contactarnos, te proveeremos de la posibilidad de obtener y administrar API keys que te permitirán desarrollar integraciones con tus aplicaciones y realizar trading automático.

Parameter Value
protocol https
host www.surbtc.com/api/
version v2

Ejemplo:

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

Librerías Open Source

Esta es una recopilación de librerías de nuestra API en distintos lenguajes testeadas por el equipo de SURBTC.

Si deseas compartir tu librería con la comunidad ponte en contacto con nuestro equipo de soporte :-)

Lenguaje Link
Python https://github.com/delta575/python-surbtc-api

Autenticación

    def gen_nonce():
        # Sleeps 200ms to avoid flooding the server with requests.
        time.sleep(0.2)
        # 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',
        }

Para autenticar una llamada debes contactarnos para obtener una api key.

El api key provisto consistirá en un un key id y un key secret.

SURBTC espera que todas sus llamadas privadas sean autenticadas 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. Una forma de lograr esto es usando un timestamp.

2. Preparar el string a firmar con el siguiente contenido:

En caso de GET:

GET {ruta} {nonce}

En caso de POST o PUT:

{POST|PUT} {ruta} {base64_encoded_body} {nonce}

Donde:

3. Obtener la firma

La firma se obtiene aplicando la función de encriptación SHA-384 sobre el key secret y el string a firmar.

4. Adjuntar key id, nonce y firma en la cabecera del request

La firma debe ser adjuntada en formato hexadecimal.

Por ejemplo:

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

Llamadas Públicas

Ticker

from surbtc import SURBTC

surbtc = SURBTC(api_key,api_secret,test)
surbtc.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 surbtc import SURBTC

surbtc = SURBTC(api_key,api_secret,test)
surbtc.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”)

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 surbtc import SURBTC

surbtc = SURBTC(api_key,api_secret,test)
surbtc.trades("btc-clp")

The above command returns JSON structured like this:

{
  "trades": [ [5689,"12-10-2017 02:58:32","-1.0","855441.15"],
              [5688,"12-10-2017 02:41:51","1.57698715","865485.0"],
              [5687,"12-10-2017 02:35:10","1.15486210","835415.0"],
              [5686,"12-10-2017 02:29:30","-4.0","851458.6"],
              [5685,"12-10-2017 02:26:24","3.25","865254.65"],
              [5684,"12-10-2017 02:18:22","-0.01","857054.45"],
              [5683,"12-10-2017 02:15:25","-1.011","863540.0"],
              [5682,"12-10-2017 02:08:32","12.55","865000.0"],
              [5681,"12-10-2017 02:07:45","0.1","852458.0"],
              [5680,"12-10-2017 02:03:37","1.01578414","845254.4"],
              [5679,"12-10-2017 01:58:52","1.84565103","852645.42"],
              [5678,"12-10-2017 01:58:01","-1.0","858687.0"],
              [5677,"12-10-2017 01:48:47","3.0","864521.0"],
              [5676,"12-10-2017 01:23:31","1.05","833582.0"],
              [5675,"12-10-2017 01:18:12","-5.56","836548.0"],
              [5674,"12-10-2017 01:11:32","-0.0535","835000.0"],
            ]
}

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

HTTP Request

GET http://example.com/kittens/<ID>

Path Parameters

Parameter Description
ID The ID of the kitten to retrieve

Response Details

Key Type Description
trades [id, timestamp, amount, price] Arreglo de transacciones

Markets

from surbtc import SURBTC

surbtc = SURBTC(api_key,api_secret,test)
surbtc.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

Balances

from surbtc import SURBTC

surbtc = SURBTC(api_key,api_secret,test)
surbtc.balance()

The above command returns JSON structured like this:

{
  "balances": [
    {
      "account_id": 358,
      "amount": ["25.77442722", "BTC"],
      "available_amount": ["11.52442722", "BTC"],
      "frozen_amount": ["10.0", "BTC"],
      "id": "BTC",
      "pending_withdraw_amount": ["4.25", "BTC"]
    },
    {
      "account_id": 358,
      "amount": ["33088710.56", "CLP"],
      "available_amount": ["24197707.52", "CLP"],
      "frozen_amount": ["7000000.04", "CLP"],
      "id": "CLP",
      "pending_withdraw_amount": ["1891003.0", "CLP"]
    },
    {
      "account_id": 358,
      "amount": ["11354811.23", "COP"],
      "available_amount": ["11354811.23", "COP"],
      "frozen_amount": ["0.0", "COP"],
      "id": "COP",
      "pending_withdraw_amount": ["0.0", "COP"]
    }
  ]
}

Muestra los balances de tu cuenta

HTTP Request

GET /balances

GET /balances/<currency>

Path Parameters

Parameter Description
currency *Opcional - El acrónimo de la mondea (Ej: “btc”, “clp”, “cop”)

Response Details (JSON)

Key Type Description
balance [array] Arreglo de balances por moneda
id [currency] Moneda del arreglo de balances
amount [amount, currency] Cantidad total asociado a la cuenta
available_amount [amount, currency] Cantidad disponible
frozen_amount [amount, currency] Cantidad retenida en órdenes pendientes
pending_withdrawal_amount [amount, currency] Cantidad retenida en proceso de retiro
created_at [time] Fecha de creación
updated_at [time] Fecha de la última actualización

Mis Órdenes

from surbtc import SURBTC

surbtc = SURBTC(api_key,api_secret,test)
surbtc.orders("btc-clp")

The above command returns JSON structured like this:

{
  "meta": {
    "current_page": 1,
    "total_count": 42899,
    "total_pages": 14300
  },
    "orders": [
    {
      "account_id": 358,
      "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": "pending",
      "total_exchanged": ["0.0", "CLP"],
      "traded_amount": ["0.0", "BTC"],
      "type": "Ask",
      "weighted_quotation": None
    },
    {
      "account_id": 358,
      "amount": ["1.4527277", "BTC"],
      "created_at": "2017-04-18T16:09:36.766Z",
      "fee_currency": "CLP",
      "id": 620194,
      "limit": ["838000.57", "CLP"],
      "market_id": 1,
      "original_amount": ["1.4527277", "BTC"],
      "paid_fee": ["0.0", "CLP"],
      "price_type": "limit",
      "state": "pending",
      "total_exchanged": ["0.0", "CLP"],
      "traded_amount": ["0.0", "BTC"],
      "type": "Ask",
      "weighted_quotation": None
    },
    {
      "account_id": 358,
      "amount": ["1.40988433", "BTC"],
      "created_at": "2017-04-18T16:09:35.498Z",
      "fee_currency": "CLP",
      "id": 620193,
      "limit": ["837858.51", "CLP"],
      "market_id": 1,
      "original_amount": ["1.40988433", "BTC"],
      "paid_fee": ["0.0", "CLP"],
      "price_type": "limit",
      "state": "pending",
      "total_exchanged": ["0.0", "CLP"],
      "traded_amount": ["0.0", "BTC"],
      "type": "Ask",
      "weighted_quotation": None
    }
  ]
}

La orden es el núcleo del Exchange. Una orden es una oferta de compra o de venta (dependiendo del type) de un cierto monto (amount) de la moneda base del mercado (posiblemente BTC). Si la orden es una orden de mercado (usando el atributo price_type en market), intentará comprar o vender al mejor precio disponible en el mercado. En caso contrario, deberá enviarse el precio al que se colocará la orden (usando limit), que será el mejor límite al que se desee comprar o vender.

La ejecución de la orden es programada para ser ejecutada inmediatamente luego de su creación, aunque el proceso ocurre asíncronamente y la orden podría quedar parcialmente comprada/vendida durante una cierta cantidad de tiempo. 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 sido exitosamente transada
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 surbtc import SURBTC

surbtc = SURBTC(api_key,api_secret,test)
surbtc.new_order("btc-clp", "bid", 0.05, 835875.00, "limit")

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 surbtc import SURBTC

order_id = 3

surbtc = SURBTC(api_key,api_secret,test)
surbtc.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 surbtc import SURBTC
surbtc = SURBTC(api_key,api_secret,test)
order_id = 3
surbtc.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 actualde 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 surbtc import SURBTC

surbtc = SURBTC(api_key,api_secret,test)
surbtc.deposit_history("BTC")
surbtc.withdrawal_history("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 surbtc import SURBTC

target_address = "mo366JJaDU5B1hmnPygyjQVMbUKnBC7DsY"

surbtc = SURBTC(api_key,api_secret,test)
surbtc.withdraw(2.5,"BTC",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:

from surbtc import SURBTC

surbtc = SURBTC(api_key,api_secret,test)
surbtc.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:

from surbtc import SURBTC

surbtc = SURBTC(api_key,api_secret,test)
surbtc.new_crypto_deposit("BTC")

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 SURBTC

HTTP Request

POST /currencies/<currency_code>/receive_addresses

URL Parameters

Parameter Description
currency_code Acrónimo de la cryptomoneda a depositar

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

Buscar usuario por Id

Example Payload:

{
  "account_lookup": {
    "email": "contacto@surbtc.com"
  }
}

Example Code:

from surbtc import SURBTC

surbtc = SURBTC(api_key,api_secret,test)
email = "contacto@surbtc.com"
surbtc.account_lookup(email)

The above command returns JSON structured like this:

{
  "account_lookup": {
    "email": "contacto@surbtc.com",
    "account_exists": true,
    "account_id": 200101
  }
}

Permite encontrar el id de un usuario necesario para operaciones tales como remesas o traspasos.

HTTP Request

POST /account_lookups

Response Details (JSON)

Key Type Description
email [string] Correo electrónico a buscar
account_exists [bool] Resultado de la busqueda, ‘true’ si el usuario existe, ‘false’ si no
account_id [int] Si el usuario existe este campo contiene su id para operaciones

Crear nueva API Key

Example Payload:

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

Example Code:

from surbtc import SURBTC

surbtc = SURBTC(api_key,api_secret,test)
surbtc.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 SURBTC 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