Contente
Introdução
Pré-requisitos
Testar chaves de rede
Baixe e instale o Postman
Criando um ambiente
Importar uma coleção
Execução de solicitações
Pensamentos finais
Introdução
Compreender e utilizar APIs para negociação de criptomoedas pode abrir um mundo de possibilidades quando se trata de entrar e sair de posições. Com algum conhecimento básico de programação, você pode se conectar ao backend da bolsa para automatizar suas estratégias de negociação. Ao ignorar o site, você pode acessar o mecanismo de correspondência para aplicativos de alto desempenho com muito mais rapidez.
O objetivo desta série é apresentar a API REST da Binance e ensinar como interagir com ela. No final, você deve estar confiante em sua capacidade de consultar os mercados e suas posições e colocar diversos tipos de pedidos.
Neste artigo, usaremos o Postman para nos comunicarmos com a exchange. Não se preocupe – não colocaremos dinheiro real em risco.
Pré-requisitos
Testar chaves de rede
Usaremos uma testnet para nossos propósitos. Isto nos dará alguns fundos que não têm valor real e com os quais podemos experimentar. Eles funcionam exatamente como moedas e tokens reais; portanto, quando você se acostumar com a API, poderá começar a usá-la para negociar dinheiro real.
Comece acessando a Spot Test Network.
Você deve estar conectado com uma conta GitHub para obter acesso. Crie-o se ainda não o fez.
Clique em "Autenticar" e faça login no GitHub.
Na seção "Chaves de API", você verá que não possui chaves cadastradas. Clique em Gerar chave HMAC_SHA256 para gerar um par.
Na próxima tela, dê um rótulo às teclas. Nomeie-os como quiser e clique em "Gerar".
Serão apresentadas duas chaves: Chave API e Chave Secreta. É importante anotá-los agora. Caso contrário, você terá que iniciar o processo de geração de chaves novamente. Recomendamos salvá-los em um aplicativo de anotações em seu computador para que você possa copiá-los facilmente mais tarde.
Observação: rotular suas chaves é algo que você deve fazer ao usar uma troca ao vivo para gerenciar chaves diferentes. Sua conta pode ter várias chaves com permissões diferentes. Se você usa vários bots de negociação, o uso de chaves individuais com rótulos descritivos facilita o gerenciamento de permissões ou a remoção de chaves individuais sem alterar todos os seus bots.
Baixe e instale o Postman
Postman é uma plataforma para colaboração de API. Este é um ponto de partida perfeito para nós – teremos acesso às coleções de consultas da Binance para testar sem escrever uma única linha de código.
O programa está disponível para Mac, Windows e Linux. Vá para a página Downloads e baixe o arquivo .zip.
Depois disso, encontre-o no explorer e instale-o. Abra o aplicativo para começar. Observe que você pode criar uma conta para fazer login, mas isso não é obrigatório. Se quiser pular esta etapa, basta selecionar a opção apropriada na parte inferior da janela.
Criando um ambiente
Neste ponto você deverá ter uma interface semelhante à seguinte.

Primeiro, você precisa criar um ambiente. É apenas uma forma de adicionar variáveis ao conjunto de consultas com as quais trabalharemos. Para fazer isso, primeiro precisamos obter algumas informações do repositório Binance GitHub. Acesse aqui e baixe o arquivo .zip.

O download não demorará muito. Encontre-o no seu explorador de arquivos e descompacte-o. Então, podemos voltar para o Postman.

Clique no ícone de engrenagem no canto superior direito (conforme mostrado acima). Você verá uma janela pop-up "Gerenciar ambientes".
Selecione “Importar” e navegue até a pasta recém-descompactada (binance-postman-api).
Em seguida, entre na pasta do ambiente.
Agora você verá dois arquivos (um para a rede principal e outro para a rede de teste). Estamos procurando binance_com_spot_testnet_api.postman_environment.json. Certifique-se de escolher a correta porque nossas chaves não funcionam com outras.

Quase pronto. Clique em "Binance Spot Testnet API" e você verá as variáveis abaixo. Edite os dois parâmetros destacados em vermelho inserindo as chaves que você salvou anteriormente. Clique em “Atualizar” e saia da janela pop-up.

Nesta tela, deixe os campos “timestamp” e “assinatura” em branco. Esses dois valores serão gerados automaticamente a cada solicitação.
Ainda há algo a fazer. À direita do ícone de engrenagem em que clicamos para configurar o ambiente anteriormente, você verá um menu suspenso que atualmente diz “Sem ambiente”. Clique nele e selecione "API Binance Spot Testnet".
Importar uma coleção
Agora vamos importar uma coleção que é um grande conjunto de consultas que fazem o trabalho pesado para nós. Para carregá-lo em nosso ambiente, siga estas etapas:
Clique em “Importar” no canto superior esquerdo.
Na janela pop-up, na guia “Arquivo”, selecione “Fazer upload de arquivos”.
Estamos novamente procurando a pasta binance-postman-api. Encontre e abra-o.
Desta vez, insira “coleções” no subdiretório.
Aqui estão dois arquivos novamente. Um para trabalhar com a API de futuros. Mas estamos trabalhando com spot, então você precisa selecionar o arquivo binance_spot_api_v1.postman_collection.json.
Agora você deve ver uma tela de confirmação identificando a importação como formato de coleção Postman. Selecione "Importar".
Na aba Coleções no lado esquerdo da janela você notará agora que temos uma pasta com mais de 100 solicitações. Parabéns! Tudo bem. Na próxima seção, veremos quais solicitações podemos enviar.
Execução de solicitações
Se você expandir as pastas na guia Coleções, verá que temos inúmeras consultas diferentes que podemos fazer. Pelo código de cores, você pode ver que podemos usar três tipos de métodos:
GET: O método "GET" é usado para recuperar dados do servidor. Iremos usá-lo para descobrir informações sobre o saldo da sua conta, preços de ativos, etc.
POST: Normalmente utilizamos o método “POST” para criar informações no servidor. Isso é necessário para fazer pedidos, solicitar retiradas, etc.
DELETE: O método "DELETE" é uma solicitação ao servidor para excluir informações. Será útil para cancelar pedidos.
Procure uma lista de símbolos e regras de negociação
É hora da nossa primeira consulta! Obteremos os símbolos que podem ser negociados na bolsa e as regras de negociação:
GET /exchangeInfo
Esta solicitação não utiliza parâmetros adicionais - você pode copiá-la e colá-la na barra de endereço e receberá uma resposta. O Postman facilita a visualização e modificação de consultas onde incluímos vários parâmetros.
Para baixar esta solicitação, selecione Mercado > Informações de troca. A seguinte aba aparecerá:

Não precisamos fazer mais nada aqui, então clique em “Enviar”. Você obterá a resposta:

Na seção destacada superior, você verá informações importantes:
status da resposta (200 significa que a solicitação foi bem-sucedida, 400-499 significa que temos um problema)
tempo necessário para receber uma resposta (menos de um segundo)
tamanho da resposta (~22 KB).
O segundo campo contém a parte principal da resposta. É lindamente impresso para facilitar um pouco os olhos. Contém informações sobre a bolsa em si, bem como os pares com os quais você pode negociar e seus valores mínimos/máximos.
Parece que há muita informação, mas o formato facilita o trabalho programático. Ao escrever scripts de interação, você pode selecionar facilmente determinadas propriedades de determinados elementos da resposta.
Verificando o saldo da conta
Vamos verificar quais ativos temos e quantos:
OBTER / contaEsta solicitação pode ser encontrada em “Negociação” > “Informações da conta”. Clique nele e você verá um layout semelhante ao anterior. No entanto, você também notará que temos duas novas variáveis: “timestamp” e “assinatura”. A assinatura é uma medida de segurança. Como agora solicitamos informações confidenciais, isso provará que somos os proprietários da conta.
O carimbo de data/hora informa ao servidor quando a solicitação foi enviada. Como as redes podem não ser confiáveis ou estar inoperantes, o servidor pode receber nossa solicitação muito mais tarde do que o esperado. Se tiver passado muito tempo, o pedido será rejeitado. Você pode especificar quanto tempo deseja esperar usando o parâmetro “recvWindow”, cujo padrão é 5.000 milissegundos.
Postman cuida da criação de ambos os campos para nós. Clique em "Enviar" e você receberá uma resposta. Em Saldos, você deverá ver seis ativos – BNB, BTC, BUSD, ETH, LTC e TRX. O saldo será dividido em livre e bloqueado. Ainda não bloqueamos nada, então todos os seus ativos devem estar gratuitos.
Parabéns pela sua nova (inexistente) riqueza!
Como descobrir o preço atual de um símbolo
Podemos obter o preço atual de um ativo de diferentes maneiras. Talvez o mais simples seja esse pedido:
OBTER /api/v3/ticker/24hrComo você deve ter adivinhado, isso nos dará informações sobre os preços dos ativos nas últimas 24 horas. Encontre-o em "Mercado"> "Estatísticas de alteração de preço do ticker de 24 horas". O par padrão que vemos como variável de símbolo é BTCUSDT.
Você pode enviá-lo agora mesmo para ver um detalhamento das informações de preços. Você também pode alterar o símbolo (para BNBBUSD, LTCUSDT, etc.) ou pode desmarcar a variável para retornar dados de 40 pares.
Também temos uma chamada mais simples ("Mercado" > "Symbol Price Ticker") que retorna o preço atual pelo qual o ativo está sendo negociado:
OBTER /api/v3/preçoComo antes, você pode alterar a variável do símbolo ou removê-la completamente e obter o preço mais recente para todos os símbolos.
Verificando a profundidade da carteira de pedidos atual
A profundidade da carteira de pedidos (também chamada de profundidade do mercado ou DOM) pode nos dizer muito sobre o mercado. Faremos uma ligação para retornar informações úteis:
OBTER API/v3/profundidadeQuando o enviamos com os valores padrão (“Mercado” > “Livro de Ordens”), obtemos uma resposta que nos informa o lance e solicitamos BTCUSDT. O servidor testnet não produzirá tantos dados quanto o servidor real, então abaixo está uma captura de tela do que você esperaria ver em um ambiente real:

Na seção destacada acima, vemos o primeiro problema. Como estamos analisando o livro-razão do BTCUSDT, o número superior é o preço que alguém está disposto a pagar pelo seu BTC. Abaixo está o valor que eles estão dispostos a comprar. Portanto, isso sugere que este pedido está pedindo 0,999 BTC a uma taxa de 9.704,65 USDT por BTC. Se continuássemos a rolar para baixo, veríamos o preço de oferta diminuir - o que significa que o comprador receberá menos.
A melhor oferta será naturalmente a mais atrativa se quiser obter lucro. Porém, se você tentar vender no mercado, digamos 3 BTC, só conseguirá vender 0,999 BTC pelo melhor preço. Você precisará aceitar lances adicionais (mais baratos) até que seu pedido seja totalmente atendido.

Continue rolando e você verá a pergunta. Funcionalmente, são semelhantes aos lances, exceto pelo fato de serem ordens de venda de BTC por USDT.
Fazendo um pedido de teste
Agora faremos um pedido de teste.
POST api/v3/pedido/testeEmbora estejamos usando apenas fundos testnet, esta solicitação não resultará na realização de um pedido. Isto pode ser útil para testar pedidos antes de enviá-los. Encontre-o em "Negociar" > "Testar novo pedido (TRADE)".

Como você pode ver, temos ainda mais parâmetros envolvidos. Vamos passar pelo marcado:
símbolo - já vimos isso antes. Este é o par que você deseja negociar.
lado – aqui você indica se deseja COMPRAR ou VENDER. Para o par BTCUSDT, BUY indica que você deseja comprar BTC por USDT, enquanto SELL venderá BTC por USDT.
type – o tipo de pedido que você deseja enviar. Valores possíveis (detalhes aqui):
LIMITE
MERCADO
PARAR A PERDA DE
STOP_LOSS_LIMIT
OBTER LUCROS
TAKE_PROFIT_LIMIT
LIMIT_MAKER
timeInForce – este parâmetro expressa como você deseja que a ordem seja executada:
GTC (Bom até Cancelado) é talvez a configuração mais popular. A GTC garante que a sua ordem é válida até que seja executada ou até que a cancele.
FOK (Executar ou Cancelar) – FOK instrui a bolsa a executar a ordem imediatamente. Caso a troca não consiga fazer isso, o pedido será cancelado imediatamente.
IOC (Executar Imediatamente ou Cancelar) – A ordem deve ser executada total ou parcialmente imediatamente ou será cancelada. Ao contrário do FOK, as ordens não são canceladas se puderem ser parcialmente executadas.
quantidade é simplesmente a quantidade do ativo que você deseja comprar ou vender.
preço – o preço pelo qual você deseja vender. Para o par BTCUSDT, isso é expresso em USDT.
newClientOrderId – identificador do pedido. Este não é um campo obrigatório, mas você pode configurá-lo para um identificador que simplificará a consulta posteriormente. Caso contrário, é gerado aleatoriamente na bolsa.
Multar! Agora vamos criar um pedido de teste. Usaremos os valores gerados automaticamente: uma ordem com limite de venda de 0,1 BTC por USDT a um preço de US$ 9.000. Clique em "Enviar". Se tudo deu certo, receberemos apenas {{}} como resposta.
Fazendo um pedido real
É hora de fazer um pedido realmente falso.
POSTAR/api/v3/pedidoVá para Comércio > Novo Pedido. Você já está familiarizado com pedidos de teste, então os parâmetros aqui não irão surpreendê-lo. Vamos deixar todos os valores como estão, mas alterar o preço que estamos vendendo para US$ 40 mil. Altere o valor do preço para refletir isso. Em seguida, clique em “Enviar”.
Se for bem-sucedido, sua resposta conterá informações detalhadas sobre o pedido.
Verificando o status de um pedido aberto
Recebemos a confirmação de que o pedido foi feito na seção anterior, mas e se quisermos verificar mais tarde? Temos vários pedidos à nossa disposição.
OBTER /api/v3/openOrdersVocê o encontrará em "Negociação" > "Ordens abertas atuais (USER_DATA)". BTCUSDT é selecionado por padrão. Se você clicar em "Enviar", receberá todos os seus pedidos BTCUSDT abertos (até agora você só deverá ver aquele que definimos anteriormente). Você pode omitir o símbolo, que retornará todos os seus pedidos em aberto.
OBTER /api/v3/allOrders"Trade" > "Todos os pedidos (USER_DATA)" oferece uma visão geral de todos os pedidos, não apenas dos abertos. Aqui você deve especificar o símbolo. "orderId", "startTime", "endTime" são parâmetros opcionais que podem ajudá-lo a refinar sua pesquisa. Vamos deixá-los aqui, então desmarque as caixas. Clique em “Enviar” e você verá a mesma resposta de antes. Se você teve pedidos fechados ou cancelados, também os verá aqui.
Finalmente, podemos solicitar pedidos específicos usando:
OBTER /api/v3/pedidoObtenha-o em "Negociação" > "Consultar pedido (USER_DATA)". Você precisará especificar "orderId" ou "origClientOrderId" (uma tag opcional "newClientOrderId" que pode ser adicionada aos pedidos). Desmarque "orderId". Para "origClientOrderId" forneceremos a tag padrão usada antes - "my_order_id_1". Preencha o campo e clique em “Enviar” para receber uma resposta.
Cancelamento de pedido
Depois de algum tempo, podemos decidir que a meta de US$ 40.000 é muito otimista, por isso queremos cancelar o pedido. Neste caso usaríamos:
EXCLUIR /api/v3/pedidoEm “Negociar” > “Cancelar pedido”, uma consulta que nos permitirá destacar pedidos para cancelamento. Desmarque "orderId" e "newClientOrderId" e passe "my_order_id_1" como o valor para "origClientOrderId".
Ao enviar esta solicitação, o pedido será devolvido. Se você rolar para baixo até "status", verá que ele foi realmente cancelado. Para confirmar isso, use novamente o endpoint GET /api/v3/openOrders (com uma lista vazia) ou GET /api/v3/order com origClientOrderId .
Desfoque do pedido, que é preenchido instantaneamente
Nossa ordem anterior não foi executada porque era uma ordem com limite que só funcionará quando o preço do BTC atingir US$ 40.000. No caso de uma ordem de mercado, estamos essencialmente dizendo “comprar/vender a qualquer preço pelo qual o ativo esteja sendo negociado atualmente”. Este pedido será preenchido instantaneamente.
Para isso, vamos voltar em “Negociação” > “Nova Ordem”. Vamos demonstrar o tipo de resposta (newOrderRespType), que é um parâmetro que podemos configurar dependendo da resposta que queremos receber do servidor. Existem três opções aqui: ACK, RESULT ou FULL - você pode ver exemplos de cada resposta aqui. Usaremos um "ACK" que nos dará uma simples confirmação de que o pedido foi recebido.
Abaixo você pode ver que enviaremos uma ordem de mercado para vender BNB por BUSD ao preço de mercado atual.

Observe que a resposta nos fornece informações mínimas:

Você pode verificar se o pedido foi atendido por meio do endpoint /api/v3/allOrders.
Verificando suas ofertas
Finalmente, vejamos um endpoint para verificar suas transações:
OBTER /api/v3/myTradesA solicitação está na seção "Negociação" > "Lista de transações da conta (USER_DATA)". Permite verificar cada transação por um símbolo específico. Se você quiser ver todas as suas negociações para o símbolo padrão (BTCUSDT), basta desmarcar “startTime”, “endTime” e “fromId”. A resposta retornará até 500 negociações – basta alterar o limite se quiser ver mais.
Depurando com Postman
No Postman, você também pode expor a solicitação e resposta HTTP bruta.

Este menu abrirá o console do Postman, que mostra os detalhes de cada solicitação.

Pensamentos finais
O objetivo deste guia é apresentar a API Binance sem escrever uma única linha de código. Se você completou todos os passos necessários, agora deve entender como podemos solicitar e enviar informações.
Nas próximas partes desta série, apresentaremos alguns conceitos básicos de codificação que nos permitem automatizar a compra e venda de criptomoedas e outros ativos digitais.
Você tem mais perguntas? Visite nosso crescente fórum da comunidade de desenvolvedores Binance ou confira a documentação.
