Documentação API

Acesso Rápido:

Api do Simulador

Como funciona:

*NOVIDADE* - Agora temos a API do simulador, para você testar seus robôs antes de ir para a plataforma real, no simulador todos os valores da BitPreço exchange são simulados e você pode testar o quanto quiser com dinheiro fictício. Para usar é só trocar o endereço para: api-simulator.bitpreco.com e usar todos os endpoints abaixo trocando apenas a URL.

Api de dados

Como funciona:

Nosso site fornece APIs que possibilitam os usuários conseguir informações atualizadas sobre os principais dados do Bitcoin em nossa plataforma. API é um endereço de internet onde você pode receber dados via requisição HTTP GET. O retorno é em formato JSON.

A BitPreço possui 3 endpoints para acesso:

  • ticker: retorna o ticker de preço da criptomoeda.
  • orderbook: retorna as ofertas de compra e venda da criptomoeda.
  • trades: retorna as negociações ou operações realizadas da criptomoeda.

  • Ticker

    https://api.bitpreco.com/btc-brl/ticker
    Retornará um JSON com os campos
  • high: maior valor negociado nas últimas 24h.
  • low: menor valor negociado nas últimas 24h.
  • var: variação entre o menor e maior valor (em porcentagem).
  • vol: Volume negociado nas últimas 24h.
  • last: Último valor negociado.
  • timestamp: dia e horas que foram gerados estes valores.


  • Exemplo de retorno:
    { "last":26353.32, "high":26636.3, "low":26162.93, "vol":0.19396095, "var":-1.78, "timestamp":2018-09-11 22:17:26 }

    Orderbook

    https://api.bitpreco.com/btc-brl/orderbook
    Retornará um JSON com os campos
  • asks: lista das ofertas de venda disponíveis. As ofertas são listadas com os valores de volume disponível seguido do preço unitário em Reais e id da ordem. ([{volume disponível}, {preço unitário em Reais}, {id da ordem}]).
  • bids: lista das ofertas de compra disponíveis. As ofertas são listadas com os valores de volume disponível seguido do preço unitário em Reais e id da ordem.([{volume disponível}, {preço unitário em Reais}, {id da ordem}]).
  • timestamp: dia e horas que foram gerados estes valores.

  • Exemplo de retorno:
    {
    "bids":[{ "amount":0.00337633, "price":26697.09, "id":"AQV2BGNlZQNjZN" }],
    "asks":[{ "amount":0.10909091, "price":27194.93, "id":"ZwV2BGNlZQNjZN"}],
    "timestamp":"2018-09-13 01:44:27"
    }

    Trades

    https://api.bitpreco.com/btc-brl/trades
    Retornará um JSON com os campos
  • type: tipo de ordem executada, buy:compra e sell:venda
  • amount: menor valor negociado nas últimas 24h.
  • timestamp: variação entre o menor e maior valor (em porcentagem).
  • price: Volume negociado nas últimas 24h.


  • Exemplo de retorno:
    [{"type":"BUY", "amount":0.0018522, "timestamp":"2018-09-12 17:20:38", "price":26313.85}, {"type":"SELL", "amount":0.01126283, "timestamp":"2018-09-11 22:18:18", "price":26636.3}]

    Api de negociações

    Como funciona:

    A API de Negociações da BitPreço permite que você automatize seus processos de compra e venda de criptomoedas, e ainda aproveite dos descontos existentes na plataforma para aumentar a rentabilidade de suas negociações ou arbitragens.

    - A API permite no máximo 30 acessos por minuto, somando acessos da API de negociações e pública.

    O endpoint de acesso a API RESTFull é https://api.bitpreco.com/trading/
    Este endpoint, assim como todos os dados que trafegam no mesmo, é criptografado por SSL

    Toda requisição deve ser feita pelo método POST e deve incluir o valor de ‘auth_token’, que
    nada mais é que sua chave de acesso, composta pela concatenação das strings que representam
    sua “assinatura” e “chave da api”. Você deve solicitar estas chaves dentro da própria plataforma.

    Veja exemplo

    Você receberá por email:

  • signature =

    "ABg3MTIxOTYzOQtrDtKNGae9YG3NjNHK0ZFVkY1UWVCaCtRQXYvWkIxRlAvSlRSV"

  • api_key =

    “ApVdlRUCddOd3p0RSt6VExvN3NqZlhIcUcxZWJpclRpSEpWSQ”


  • E seu token de acesso será:

    auth_token = signature+api_key; (strings concatenadas)


    Veja abaixo os métodos existentes na API de negociações:

    BALANCE

    Descrição: Devolve o balanço atual de sua conta

    Propriedades da requisição:

  • cmd = "balance" (string)
  • auth_token = [seu_token] (string)..

  • Exemplo cURL:

    curl --request POST \
    --url https://api.bitpreco.com/trading/ \
    --header 'Content-Type: application/json' \
    --data '{ \
    "cmd":"balance", \
    "auth_token": "ABg3M………….SEpWSQ" \
    }'


    Exemplos de respostas:

    {"success":true,"BTC":3.51633389,"BTC_locked":2.2983727,"BRL":180177.23,"BRL_locked":0}

    Obs: "BTC" e "BRL" retornam a quantidade disponível para uso (available) e não a quantidade total em sua conta. O total é a soma destes valores com os valores bloqueados (locked)

    Propriedades da requisição:

  • cmd = "open_orders" (string)
  • market = [BTC-BRL] (string) - opcional
  • auth_token = [seu_token] (string).

  • Exemplo cURL:

    curl --request POST \
    --url https://api.bitpreco.com/trading/ \
    --header 'Content-Type: application/json' \
    --data '{ \
    "cmd":"open_orders", \
    "market":"BTC-BRL", "auth_token": "ABg3M………….SEpWSQ" \
    }'


    Exemplos de respostas:

    {"id":"ZQVmZQNmZGNjZN","market":"BTC-BRL","type":"SELL","status":"EMPTY","amount":2.16,"price":25500,"exec_amount":0,"cost":0,"limited":"1"}, {"id":"AmNkAwDjZGNjZN","market":"BTC-BRL","type":"SELL","status":"PARTIAL","amount":0.2,"price":25600,"exec_amount":0.0616273,"cost":1577.66,"limited":"1"}

    Propriedades da requisição:

  • cmd = "executed_orders" (string)
  • market = [BTC-BRL] (string) - opcional
  • auth_token = [seu_token] (string).

  • Exemplo cURL:

    curl --request POST \
    --url https://api.bitpreco.com/trading/ \
    --header 'Content-Type: application/json' \
    --data '{ \
    "cmd":"executed_orders", \
    "market":"BTC-BRL", "auth_token": "ABg3M………….SEpWSQ" \
    }'


    Exemplos de respostas:

    {"id":"ZQVmZQNmZGNjZN","market":"BTC-BRL","type":"SELL","status":"FILLED","amount":0.16,"price":25500,"exec_amount":0.16,"cost":4080,"limited":"1"}, {"id":"AmNkAwDjZGNjZN","market":"BTC-BRL","type":"SELL","status":"PARTIAL","amount":0.2,"price":25600,"exec_amount":0.0616273,"cost":1577.66,"limited":"1"}

    Propriedades da requisição:

  • cmd = "buy" (string)
  • market = "BTC-BRL" (string).
  • price = [preço em BRL] (float) .
  • amount = [quantidade] (float) .
  • auth_token = [seu_token] (string).

  • Exemplo cURL:

    curl --request POST \
    --url https://api.bitpreco.com/trading/ \
    --header 'Content-Type: application/json' \
    --data '{ \
    "cmd":"buy", \
    "market":"BTC-BRL", \
    "price": 25350.00, \
    "amount": 1.00001234, \
    "auth_token": "ABg3M………….SEpWSQ" \
    }'


    Exemplos de respostas:

    {"success":true,"order_id":"AQt0BGRkZmNjZN","message_cod":"ORDER_CREATED"}

    obs: O mercado BTC-BRL não permite precisão de centavos na API e o preço será aredondado.

    Propriedades da requisição:

  • cmd = "sell" (string)
  • market = "BTC-BRL" (string).
  • price = [preço em BRL] (float) .
  • amount = [quantidade] (float) .
  • auth_token = [seu_token] (string).

  • Exemplo cURL:

    curl --request POST \
    --url https://api.bitpreco.com/trading/ \
    --header 'Content-Type: application/json' \
    --data '{ \
    "cmd":"sell", \
    "market":"BTC-BRL", \
    "price": 25350.00, \
    "amount": 1.00001234, \
    "auth_token": "ABg3M………….SEpWSQ" \
    }'


    Exemplos de respostas:

    {"success":true,"order_id":"AQ1eBGRkZmNjZN","message_cod":"ORDER_CREATED"}

    obs: O mercado BTC-BRL não permite precisão de centavos na API e o preço será aredondado.

    Propriedades da requisição:

  • cmd = "order_cancel" (string)
  • order_id = [order id] (string).
  • auth_token = [seu_token] (string).

  • Exemplo cURL:

    curl --request POST \
    --url https://api.bitpreco.com/trading/ \
    --header 'Content-Type: application/json' \
    --data '{ \
    "cmd":"order_cancel", \
    "order_id":"AlDaJizAZTT", \
    "auth_token": "ABg3M………….SEpWSQ" \
    }'


    Exemplos de respostas:

    {"success":true,"message_cod":"ORDER_CANCELED"}

    Propriedades da requisição:

  • cmd = "all_orders_cancel" (string)
  • auth_token = [seu_token] (string).

  • Exemplo cURL:

    curl --request POST \
    --url https://api.bitpreco.com/trading/ \
    --header 'Content-Type: application/json' \
    --data '{ \
    "cmd":"all_orders_cancel", \
    "auth_token": "ABg3M………….SEpWSQ" \
    }'


    Exemplos de respostas:

    {"success":true,"orders_canceled":3}

    Propriedades da requisição:

  • cmd = "order_status" (string)
  • order_id = "xxxxxxxx" (string)
  • auth_token = [seu_token] (string)..

  • Exemplo cURL:

    curl --request POST \
    --url https://api.bitpreco.com/trading/ \
    --header 'Content-Type: application/json' \
    --data '{ \
    "cmd":"order_status", \
    "order_id":"ZGNjAwVmZmRjZN", \
    "auth_token": "ABg3M………….SEpWSQ" \
    }'


    Exemplos de respostas:

    {"success":true,"order":{"id":"ZGNjAwVmZmRjZN","market":"BTC-BRL","type":"BUY","status":"EMPTY","amount":0.12,"price":14684.00,"exec_amount":0,"cost":0,"limited":"1","canceled":"0","time_stamp":"2019-01-09 05:36:17"}} Existem essas possibilidades: EMPTY, PARTIAL, FILLED.

    Api Web Socket BitPreço

    Sobre a API

    Os endpoints socket da BitPreço são na verdade Phoenix Channels, que são um protocolo de comunicação que usa WebSockets como camada de transporte, e não WebSockets puro. Consequentemente, é necessário um client que implemente esse protocolo. Aqui tem a lista dos clients mais populares disponíveis, sendo que o único oficial é para JavaScript e só funciona no browser, mas também temos uma versão não oficial para Node.

    Para usuários de Google Chrome, é possível testar a conexão através de uma extensão do navegador.

    A comunicação é feita em três etapas:

    1. Conectar no endpoint
    2. Acessar um topic
    3. Adicionar um callback para determinado evento

    Os Endpoints

    O endpoint para Livro de Ordens e para Preços:
    wss://websocket.bitpreco.com/orderbook/socket

    O endpoint para Notificações:
    wss://websocket.bitpreco.com/notifications/socket

    Tópicos

    Preços - ticker

    O topic de Preços (ticker) é ticker:ALL-BRL , e ele emite o evento price que contém os preços dos três mercados atualmente suportados pela plataforma: BTC-BRL , ETH-BRL e USDT-BRL .

    Livros de Ordem - Orderbook

    Diferentemente do ticker que em um único tópico emite mensagem dos três mercados, o do Livro de Ordens (orderbook) tem um topic pra cada. O topic do orderbook é orderbook:<market> sendo market: BTC-BRL , ETH-BRL ou USDT-BRL . Esse topic emite o evento snapshot , que contém uma versão completa e atual do Livro de Ordens.

    Notificações

    Esse topic é privado, sendo necessário passar como parâmetro o authToken. O topic é notifications:<authToken> e ele emite o evento flash . O payload do evento é um json que contém o atributo type, que indica o tipo na notificação. O atributo type pode ter os seguintes valores:

    • ORDER_FULLY_EXECUTED
    • BUY_ORDER_CREATED
    • SELL_ORDER_CREATED
    • ORDER_CANCELED

    Exemplo JavaScript (Node)

    Instale o client para Node

    Via Yarn yarn add phoenix-channels

    Ou via npm npm i phoenix-channels

    Conectando e recebendo o orderbook

    const { Socket } = require('phoenix-channels')

    const SOCKET_URL = 'wss://bp-channels.gigalixirapp.com'

    // Os mercados disponníveis são:
    // BTC-BRL | ETH-BRL | USDT-BRL
    const MARKET = 'BTC-BRL'

    // Conecta com o socket
    const socket = new Socket(`${SOCKET_URL}/orderbook/socket`)
    socket.connect()

    // O client nos oferece callbacks de sucesso e erro de conexão
    socket.onOpen(() => {
      console.log('Connected successfully')
    })
    socket.onError(e => {
      console.log('Failed to connect to socket')
    })

    // Conecta no canal, passando o topic desejado
    const channel = socket.channel(`orderbook:${MARKET}`, {})
    channel.join()
    .receive('ok', resp => { console.log('Joined successfully', resp); })
    .receive('error', resp => { console.log('Unable to join', resp); })

    // Adicionamos um callback pro evento snapshot,
    // que vai receber versões completas e atualizadas do orderbook
    channel.on('snapshot', payload => {
      console.log('New orderbook received: ', payload)
    })

    O exemplo foi testado no Node v15.4.0

    Qualquer dúvida entre em contato suporte@bitpreco.com