Guia para desenvolvedores · API REST v2 da Bitfinex

A API da Bitfinex, explicada para credores

A documentação da API da Bitfinex cobre centenas de endpoints; um bot de lending precisa de cerca de uma dúzia. Este guia cobre exatamente esses: criar uma chave de API sem permissão de saque, ler taxas de funding e livros pela API pública, colocar e cancelar ofertas de funding pela API autenticada, e os limites de requisições e peculiaridades dos dados que você vai encontrar na prática — com exemplos funcionais em Python.

Caminhos de endpoints e comportamento verificados contra a API v2 oficial da Bitfinex tal como o Stratum a usa em produção, agosto de 2026. A documentação oficial da Bitfinex é a referência autoritativa.

Teste os endpoints públicos

Explorador ao vivo da API de funding Bitfinex

Escolha endpoint e moeda e execute uma solicitação real sem autenticação. O endpoint da Stratum normaliza FRR, médias, funding disponível e níveis fixos.

https://app.stratum.money/api/v1/public/funding-rates.json
Prévia da resposta
{
  "generatedAt": "2026-08-23T06:48:15.408007891Z",
  "updatedAt": "2026-08-23T06:05:00Z",
  "source": "Bitfinex Public REST API",
  "currency": {
    "code": "USD",
    "bitfinexSymbol": "fUSD",
    "current": {
      "timestamp": "2026-08-23T06:05:00Z",
      "dailyRatePercent": "0.031025",
      "annualizedAprPercent": "11.324125",
      "averagePeriodDays": "91.470000",
      "fundingAmount": "5991052941.288744",
      "fundingAmountUsed": "5935309488.394312",
      "fundingAvailable": "55743452.894432",
      "fundingBelowThreshold": "763483370.5925878"
    },
    "averages": {
      "hours24": {
        "dailyRatePercent": "0.031200",
        "annualizedAprPercent": "11.388073",
        "observations": 25
      },
      "days7": {
        "dailyRatePercent": "0.031710",
        "annualizedAprPercent": "11.574020",
        "observations": 169
      },
      "days30": {
        "dailyRatePercent": "0.033403",
        "annualizedAprPercent": "12.192212",
        "observations": 721
      }
    },
    "market": {
      "bestFixedBid": {
        "dailyRatePercent": "0.027397",
        "annualizedAprPercent": "10.000000",
        "periodDays": 120,
        "amount": "11593282.43646913"
      },
      "bestFixedAsk": {
        "dailyRatePercent": "0.014188",
        "annualizedAprPercent": "5.178600",
        "periodDays": 2,
        "amount": "264.93559176"
      },
      "fixedBids": [
        {
          "dailyRatePercent": "0.027397",
          "annualizedAprPercent": "10.000000",
          "periodDays": 120,
          "amount": "11593282.43646913"
        },
        {
          "dailyRatePercent": "0.018011",
          "annualizedAprPercent": "6.574000",
          "periodDays": 120,
          "amount": "133240.73391109"
        },
        {
          "dailyRatePercent": "0.017770",
          "annualizedAprPercent": "6.486100",
          "periodDays": 120,
          "amount": "23123.30278361"
        },
        {
          "dailyRatePercent": "0.017400",
          "annualizedAprPercent": "6.351000",
          "periodDays": 120,
          "amount": "12350.0"
        },
        {
          "dailyRatePercent": "0.017130",
          "annualizedAprPercent": "6.252500",
          "periodDays": 120,
          "amount": "14000.0"
        },
        {
          "dailyRatePercent": "0.017125",
          "annualizedAprPercent": "6.250600",
          "periodDays": 117,
          "amount": "560000.0"
        },
        {
          "dailyRatePercent": "0.017120",
          "annualizedAprPercent": "6.248800",
          "periodDays": 120,
          "amount": "20000.0"
        },
        {
          "dailyRatePercent": "0.017111",
          "annualizedAprPercent": "6.245500",
          "periodDays": 120,
          "amount": "2000000.0"
        },
        {
          "dailyRatePercent": "0.016125",
          "annualizedAprPercent": "5.885600",
          "periodDays": 117,
          "amount": "560000.0"
        },
        {
          "dailyRatePercent": "0.016000",
          "annualizedAprPercent": "5.840000",
          "periodDays": 120,
          "amount": "10009162.66122322"
        },
        {
          "dailyRatePercent": "0.016000",
          "annualizedAprPercent": "5.840000",
          "periodDays": 14,
          "amount": "9306.90081316"
        },
        {
          "dailyRatePercent": "0.015111",
          "annualizedAprPercent": "5.515500",
          "periodDays": 117,
          "amount": "560000.0"
        }
      ],
      "fixedAsks": [
        {
          "dailyRatePercent": "0.014188",
          "annualizedAprPercent": "5.178600",
          "periodDays": 2,
          "amount": "264.93559176"
        },
        {
          "dailyRatePercent": "0.014190",
          "annualizedAprPercent": "5.179300",
          "periodDays": 2,
          "amount": "250.0"
        },
        {
          "dailyRatePercent": "0.014192",
          "annualizedAprPercent": "5.180100",
          "periodDays": 2,
          "amount": "200.0"
        },
        {
          "dailyRatePercent": "0.014978",
          "annualizedAprPercent": "5.467000",
          "periodDays": 2,
          "amount": "3837.92472142"
        },
        {
          "dailyRatePercent": "0.014982",
          "annualizedAprPercent": "5.468400",
          "periodDays": 2,
          "amount": "323.64921816"
        },
        {
          "dailyRatePercent": "0.014988",
          "annualizedAprPercent": "5.470600",
          "periodDays": 2,
          "amount": "605.58777224"
        },
        {
          "dailyRatePercent": "0.014998",
          "annualizedAprPercent": "5.474300",
          "periodDays": 2,
          "amount": "2079.77565528"
        },
        {
          "dailyRatePercent": "0.014999",
          "annualizedAprPercent": "5.474600",
          "periodDays": 2,
          "amount": "1968.80422628"
        },
        {
          "dailyRatePercent": "0.015047",
          "annualizedAprPercent": "5.492200",
          "periodDays": 2,
          "amount": "484.95397132"
        },
        {
          "dailyRatePercent": "0.015196",
          "annualizedAprPercent": "5.546500",
          "periodDays": 2,
          "amount": "150.0"
        },
        {
          "dailyRatePercent": "0.015418",
          "annualizedAprPercent": "5.627600",
          "periodDays": 2,
          "amount": "200.0"
        },
        {
          "dailyRatePercent": "0.015607",
          "annualizedAprPercent": "5.696500",
          "periodDays": 2,
          "amount": "1150.0"
        }
      ],
      "fixedBidDepth": "37154170.83381627",
      "fixedAskDepth": "536825.22487061",
      "frrBidDepth": "0",
      "frrOfferDepth": "0",
      "sampledLevels": 356
    },
    "historyPreview": [
      {
        "timestamp": "2026-08-23T06:05:00Z",
        "dailyRatePercent": "0.031025",
        "annualizedAprPercent": "11.324125",
        "averagePeriodDays": "91.470000",
        "fundingAmount": "5991052941.288744",
        "fundingAmountUsed": "5935309488.394312",
        "fundingAvailable": "55743452.894432",
        "fundingBelowThreshold": "763483370.5925878"
      },
      {
        "timestamp": "2026-08-23T05:05:00Z",
        "dailyRatePercent": "0.031025",
        "annualizedAprPercent": "11.324125",
        "averagePeriodDays": "92.570000",
        "fundingAmount": "5989152818.724412",
        "fundingAmountUsed": "5934084828.197341",
        "fundingAvailable": "55067990.527071",
        "fundingBelowThreshold": "769699003.4136398"
      },
      {
        "timestamp": "2026-08-23T04:05:00Z",
        "dailyRatePercent": "0.031025",
        "annualizedAprPercent": "11.324125",
        "averagePeriodDays": "92.030000",
        "fundingAmount": "5988567317.18653",
        "fundingAmountUsed": "5933880711.029357",
        "fundingAvailable": "54686606.157173",
        "fundingBelowThreshold": "769905136.1789076"
      }
    ]
  }
}

GET /v2/ticker/{symbol} · tBTCUSD / fUSD

Ticker de funding — o FRR (índice 0, uma taxa diária), melhor bid/ask com seus períodos, volume diário. O endpoint de lending mais útil de todos.

INDEXtBTCUSDfUSD
0BIDFRR
1BID_SIZEBID
2ASKBID_PERIOD
3ASK_SIZEBID_SIZE
4CHANGEASK
5CHANGE_RELATIVEASK_PERIOD
6LAST_PRICEASK_SIZE
7VOLUMEDAILY_CHANGE
8HIGHDAILY_CHANGE_PERC
9LOWLAST_PRICE
10FIRST_TRADEVOLUME
11HIGH
12LOW
15FRR_AMOUNT_AVAILABLE
16FIRST_TRADE

REST: 90 req/min ·docs.bitfinex.com/reference/rest-public-ticker

Passo zero

Crie uma chave de API com escopo restrito (saques desativados)

Tudo abaixo só precisa de uma chave de API para os endpoints autenticados — taxas, candles e livros são públicos. Quando você criar uma chave (Bitfinex → API Keys → Create New Key), restrinja o escopo ao que um credor realmente precisa: Margin Funding leitura + escrita (para ver e colocar ofertas), Wallets leitura (para ver saldos) e Account History leitura (para o livro razão). Deixe saques, trading e transferências desativados.

Um bot de funding nunca precisa da capacidade de mover seu dinheiro para fora da exchange. Uma chave sem permissões de saque e trade pode, na pior das hipóteses, emprestar sua carteira de funding a uma taxa ruim — ela não pode esvaziá-la. É o mesmo escopo que o Stratum impõe: chaves com capacidade de saque ou trade são rejeitadas no momento da adição.

Conversão de unidades

Ticker, book e funding/stats não usam a mesma unidade FRR

As taxas de ticker e book são frações diárias. O campo FRR de funding/stats é 1/365 da FRR diária exibida. Aplique a fórmula correta antes de comparar.

ticker/book daily % = API rate × 100
ticker/book gross APR % = API rate × 365 × 100
funding/stats daily % = FRR field × 365 × 100
funding/stats gross APR % = FRR field × 365 × 365 × 100
curl https://app.stratum.money/api/v1/public/funding-rates.json
curl https://app.stratum.money/api/v1/public/funding-rates.csv
curl "https://api-pub.bitfinex.com/v2/ticker/fUSD"
curl "https://api-pub.bitfinex.com/v2/book/fUSD/P0?len=25"

Os endpoints que importam para o funding

Públicos (sem chave, api-pub.bitfinex.com)

GET /v2/ticker/fUSD

Ticker de funding — o FRR (índice 0, uma taxa diária), melhor bid/ask com seus períodos, volume diário. O endpoint de lending mais útil de todos.

GET /v2/candles/{key}/hist

Candles históricos de taxa de funding por tenor, p. ex. a chave trade:1h:fUSD:p2 para funding USD de 2 dias. Esta é a série contra a qual você faz backtests.

GET /v2/book/fUSD/P2 e /R0

O livro de funding ao vivo — níveis de preço agregados (P0–P3) ou ordens brutas (R0). Taxa, período e tamanho de cada bid e oferta em espera.

GET /v2/funding/stats/fUSD/hist

Estatísticas horárias de funding: FRR, período médio, funding total em uso. Pegadinha: a coluna FRR é armazenada como FRR/365 — multiplique por 365 para bater com o ticker.

Autenticados (api.bitfinex.com, assinados com HMAC)

POST /v2/auth/r/wallets

Saldos das carteiras, incluindo a carteira de funding da qual um bot empresta.

POST /v2/auth/r/funding/offers/fUSD

Suas ofertas de funding abertas; a variante /hist retorna as executadas e canceladas.

POST /v2/auth/r/funding/credits/fUSD

O funding atualmente emprestado (créditos ativos): taxa, período, horário de abertura. A variante /hist é seu histórico de empréstimos encerrados.

POST /v2/auth/w/funding/offer/submit

Coloque uma oferta de funding: símbolo, valor, taxa diária, período (2–120 dias). Cancele com offer/cancel ou offer/cancel/all.

POST /v2/auth/r/ledgers/USD/hist

O livro razão — cada pagamento de juros e sua dedução da taxa de 15%, por empréstimo por dia. A única base correta para números de ganhos e impostos.

POST /v2/auth/w/funding/keep

Controle a renovação automática por crédito — o equivalente via API do botão de auto-renovação na interface.

Código funcional

Exemplos em Python

Leia o FRR e o livro de funding (sem chave)

import requests

PUB = "https://api-pub.bitfinex.com"

# Ticker de funding: o índice 0 é o FRR, cotado como taxa DIÁRIA
ticker = requests.get(f"{PUB}/v2/ticker/fUSD", timeout=10).json()
frr_daily = ticker[0]
print(f"FRR: {frr_daily * 365 * 100:.2f}% APR")

# Topo do livro de funding ao vivo (agregado)
book = requests.get(f"{PUB}/v2/book/fUSD/P2", params={"len": 25}, timeout=10).json()
for rate, period, count, amount in book[:5]:
    side = "offer" if amount < 0 else "bid"
    print(f"{side}: {rate * 365 * 100:.2f}% APR for {period}d, size {abs(amount):,.0f}")

Coloque uma oferta de funding (autenticado)

import hashlib, hmac, json, time, requests

KEY, SECRET = "your-key", "your-secret"
BASE = "https://api.bitfinex.com"

def auth_post(path: str, body: dict):
    nonce = str(int(time.time() * 1_000_000))  # deve crescer estritamente por chave
    raw = f"/api/{path}{nonce}{json.dumps(body)}"
    sig = hmac.new(SECRET.encode(), raw.encode(), hashlib.sha384).hexdigest()
    return requests.post(f"{BASE}/{path}", data=json.dumps(body), timeout=15, headers={
        "bfx-nonce": nonce, "bfx-apikey": KEY, "bfx-signature": sig,
        "content-type": "application/json",
    }).json()

# Oferte $150 (mínimo da Bitfinex) a 0.03% ao dia (~10.95% APR) por 2 dias
result = auth_post("v2/auth/w/funding/offer/submit", {
    "type": "LIMIT", "symbol": "fUSD",
    "amount": "150", "rate": "0.0003", "period": 2,
})
print(result)

As taxas na API são sempre diárias — multiplique por 365 para o APR — e sempre brutas, antes da taxa de 15% da Bitfinex sobre os juros ganhos. A oferta mínima é o equivalente a $150; os períodos vão de 2 a 120 dias. Se você preferir um cliente mantido em vez de assinar na mão, a Bitfinex publica uma biblioteca oficial de Python (bfxapi).

Limites de requisições e as pegadinhas que custam horas de verdade

Nonces devem crescer estritamente

Cada requisição assinada precisa de um bfx-nonce maior que o anterior para aquela chave. Dois processos compartilhando uma chave vão colidir com erros "nonce: small" — use uma chave por processo.

Limites de requisições por endpoint

Os endpoints públicos permitem cerca de 10–90 requisições/minuto dependendo da rota; os autenticados são semelhantes. Excedê-los retorna HTTP 429 com um corpo ERR_RATE_LIMIT — recue exponencialmente e faça cache das leituras.

funding/stats armazena FRR/365

A coluna FRR de /v2/funding/stats é o FRR diário dividido por 365, enquanto /v2/ticker cota a taxa diária diretamente. Multiplique o valor de stats por 365 antes de comparar — caso contrário isso distorce os backtests silenciosamente.

Tudo é bruto de taxas

As taxas do livro, os candles e o FRR são todos pré-taxa. Sua carteira recebe 85% dos juros ganhos (82% para ofertas ocultas). Reconcilie contra o livro razão, não contra a taxa cotada.

Empréstimos encerram antes do prazo

Um crédito de 120 dias não significa 120 dias de juros — os tomadores pagam quando fecham posições, e os créditos podem retornar em dias. Modele a duração esperada, não o período nominal.

Construir vs. operar

Se você prefere não operar isso por conta própria

Tudo acima é o que o Stratum opera em produção: os mesmos endpoints, assinaturas, backoff e reconciliação de livro razão, além de 11 estratégias testadas em backtest sobre três anos de candles de funding, modo paper e exportações fiscais — atrás de uma chave sem permissão de saque com o escopo exato descrito no passo zero. Construa seu próprio bot se você gosta de ser dono do stack (este guia mais os projetos open-source são um caminho real); use um hospedado se preferir pular os bugs de nonce e os 429 às 3 da manhã.

FAQ da API da Bitfinex

Quais permissões de API um bot de lending da Bitfinex precisa?

Margin Funding leitura e escrita, Wallets leitura e Account History leitura. Saques, trading e transferências devem permanecer desativados — um bot de lending nunca precisa mover fundos para fora da exchange, e uma chave com escopo restrito limita o dano se ela algum dia vazar.

A API da Bitfinex é gratuita?

Sim. Tanto a API pública (taxas, candles, livros) quanto a autenticada (ofertas, carteiras, livros razão) são gratuitas; você só precisa de uma conta e de uma chave de API para a parte autenticada. Os endpoints públicos em api-pub.bitfinex.com não precisam de chave alguma.

Existe uma biblioteca oficial de Python da Bitfinex?

Sim — a bfxapi, publicada pela Bitfinex, cobre tanto REST quanto WebSocket. Os exemplos desta página usam requests puro mais assinatura HMAC feita à mão para você ver exatamente o que acontece no fio; para código de produção a biblioteca oficial economiza boilerplate.

As taxas da API da Bitfinex são diárias ou anuais?

Diárias. Uma taxa de 0.0003 significa 0.03% ao dia, cerca de 10.95% APR simples. Multiplique por 365 para o APR, e lembre que toda taxa cotada é bruta — a Bitfinex fica com 15% dos juros ganhos, então multiplique por 0.85 para o que chega à sua carteira.

Preciso da API WebSocket para um bot de lending?

Não para começar. Polling via REST cobre um bot simples. O WebSocket (wss://api-pub.bitfinex.com/ws/2 público, wss://api.bitfinex.com/ws/2 autenticado) importa quando você quer atualizações do livro ao vivo ou notificações instantâneas de execução sem queimar seu limite de requisições REST — é assim que o Stratum acompanha eventos de carteira, oferta e crédito em tempo real.

Quais são os limites de requisições da API da Bitfinex?

Variam por endpoint, cerca de 10–90 requisições por minuto nas rotas públicas e orçamentos comparáveis nas autenticadas. Exceder um limite retorna HTTP 429 (ERR_RATE_LIMIT); clientes bem-comportados fazem cache das leituras públicas e recuam exponencialmente nos 429. Os números exatos estão listados por endpoint na documentação oficial.

A API é a parte fácil

Colocar uma oferta são vinte linhas de Python; saber qual taxa e tenor oferecer é o problema de verdade. O Stratum roda estratégias testadas em backtest sobre a mesma API descrita acima — ou pegue o código desta página e construa o seu.

Adicione uma chave de API ao StratumTaxas de funding ao vivoLer o livro de funding da Bitfinex ao vivoComparativo de bots open-sourceDatasets de funding da BitfinexWidget ao vivo de taxas da Bitfinex