Developergids · Bitfinex v2 REST API

De Bitfinex API, uitgelegd voor uitleners

De API-documentatie van Bitfinex beslaat honderden endpoints; een lending-bot heeft er ongeveer een dozijn nodig. Deze gids behandelt precies die: een API-key zonder withdraw-rechten aanmaken, funding-rentes en orderboeken uitlezen via de publieke API, funding-offers plaatsen en annuleren via de geauthenticeerde API, en de rate limits en data-eigenaardigheden waar je in de praktijk tegenaan loopt — met werkende Python-voorbeelden.

Endpoint-paden en gedrag geverifieerd tegen de officiële Bitfinex v2 API zoals Stratum die in productie gebruikt, augustus 2026. De officiële Bitfinex-docs blijven de gezaghebbende referentie.

Probeer de openbare endpoints

Live Bitfinex funding API-explorer

Kies een endpoint en valuta en voer een echte request zonder authenticatie uit. Het Stratum-endpoint normaliseert FRR, gemiddelden, beschikbare funding en vaste boekniveaus.

https://app.stratum.money/api/v1/public/funding-rates.json
Responsevoorbeeld
{
  "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

Funding-ticker — de FRR (index 0, een dagrente), beste bid/ask met hun looptijden, dagvolume. Veruit het nuttigste lending-endpoint.

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

Stap nul

Maak een beperkte API-key aan (withdrawals uit)

Alles hieronder heeft alleen een API-key nodig voor de geauthenticeerde endpoints — rentes, candles en orderboeken zijn publiek. Als je een key aanmaakt (Bitfinex → API Keys → Create New Key), beperk hem dan tot wat een uitlener echt nodig heeft: Margin Funding read + write (om offers te zien en te plaatsen), Wallets read (om saldi te zien) en Account History read (voor het grootboek). Laat withdrawals, trading en transfers uitgeschakeld.

Een funding-bot hoeft nooit je geld van de exchange af te kunnen halen. Een key zonder withdraw- en trade-rechten kan in het ergste geval je funding-wallet tegen een slechte rente uitlenen — leegtrekken kan hij niet. Dit is dezelfde beperking die Stratum afdwingt: keys met withdraw- of trade-rechten worden al bij het toevoegen geweigerd.

Omrekening van rate-eenheden

Ticker, book en funding/stats gebruiken niet dezelfde FRR-eenheid

Ticker- en boekrates zijn dagelijkse fracties. Het FRR-veld uit funding/stats is 1/365 van de getoonde dag-FRR. Gebruik de juiste formule voordat je waarden vergelijkt.

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"

De endpoints die ertoe doen voor funding

Publiek (geen key, api-pub.bitfinex.com)

GET /v2/ticker/fUSD

Funding-ticker — de FRR (index 0, een dagrente), beste bid/ask met hun looptijden, dagvolume. Veruit het nuttigste lending-endpoint.

GET /v2/candles/{key}/hist

Historische funding-rente-candles per looptijd, bijv. key trade:1h:fUSD:p2 voor 2-daagse USD-funding. Dit is de reeks waar je tegen backtest.

GET /v2/book/fUSD/P2 en /R0

Het live funding-orderboek — geaggregeerde prijsniveaus (P0–P3) of ruwe orders (R0). Rente, looptijd en omvang van elk liggend bod en offer.

GET /v2/funding/stats/fUSD/hist

Uurlijkse funding-statistieken: FRR, gemiddelde looptijd, totaal gebruikte funding. Valkuil: de FRR-kolom is opgeslagen als FRR/365 — vermenigvuldig met 365 om bij de ticker aan te sluiten.

Geauthenticeerd (api.bitfinex.com, HMAC-gesigneerd)

POST /v2/auth/r/wallets

Walletsaldi, inclusief de funding-wallet waaruit een bot uitleent.

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

Je openstaande funding-offers; de /hist-variant geeft de gevulde en geannuleerde terug.

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

Funding die momenteel is uitgeleend (actieve credits): rente, looptijd, openingstijd. De /hist-variant is je historie van gesloten leningen.

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

Plaats een funding-offer: symbool, bedrag, dagrente, looptijd (2–120 dagen). Annuleren met offer/cancel of offer/cancel/all.

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

Het grootboek — elke rentebetaling en de aftrek van de 15%-fee, per lening per dag. De enige juiste basis voor verdiensten- en belastingcijfers.

POST /v2/auth/w/funding/keep

Stuur auto-renew per credit aan — het API-equivalent van de auto-renew-schakelaar in de UI.

Werkende code

Python-voorbeelden

De FRR en het funding-orderboek uitlezen (geen key nodig)

import requests

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

# Funding-ticker: index 0 is de FRR, genoteerd als DAGRENTE
ticker = requests.get(f"{PUB}/v2/ticker/fUSD", timeout=10).json()
frr_daily = ticker[0]
print(f"FRR: {frr_daily * 365 * 100:.2f}% APR")

# Bovenkant van het live funding-orderboek (geaggregeerd)
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}")

Een funding-offer plaatsen (geauthenticeerd)

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))  # moet per key strikt oplopen
    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()

# Bied $150 aan (Bitfinex-minimum) tegen 0.03% per dag (~10.95% APR) voor 2 dagen
result = auth_post("v2/auth/w/funding/offer/submit", {
    "type": "LIMIT", "symbol": "fUSD",
    "amount": "150", "rate": "0.0003", "period": 2,
})
print(result)

Rentes in de API zijn altijd per dag — vermenigvuldig met 365 voor de APR — en altijd bruto, vóór Bitfinex’ 15%-fee op verdiende rente. Het minimumoffer is $150 aan tegenwaarde; looptijden lopen van 2 tot 120 dagen. Wil je liever een onderhouden client dan zelfgeschreven signing: Bitfinex publiceert een officiële Python-library (bfxapi).

Rate limits en de valkuilen die echte uren kosten

Nonces moeten strikt oplopen

Elk gesigneerd verzoek heeft een bfx-nonce nodig die groter is dan de vorige voor die key. Twee processen die één key delen botsen met "nonce: small"-fouten — gebruik één key per proces.

Rate limits per endpoint

Publieke endpoints staan grofweg 10–90 verzoeken per minuut toe, afhankelijk van de route; geauthenticeerde zitten in dezelfde orde. Overschrijding geeft HTTP 429 met een ERR_RATE_LIMIT-body — bouw exponentieel af en cache je reads.

funding/stats slaat FRR/365 op

De FRR-kolom in /v2/funding/stats is de dagelijkse FRR gedeeld door 365, terwijl /v2/ticker de dagrente direct noteert. Vermenigvuldig de stats-waarde met 365 voordat je vergelijkt — anders vertekent dit je backtests ongemerkt.

Alles is bruto, vóór fees

Boekrentes, candles en de FRR zijn allemaal vóór fees. Je wallet ontvangt 85% van de verdiende rente (82% bij verborgen offers). Reconcilieer tegen het grootboek, niet tegen de genoteerde rente.

Leningen sluiten vroegtijdig

Een credit van 120 dagen betekent geen 120 dagen rente — leners lossen af wanneer ze posities sluiten, en credits kunnen binnen dagen terugkomen. Modelleer de verwachte looptijd, niet de nominale periode.

Zelf bouwen vs. laten draaien

Als je dit liever niet zelf draait

Alles hierboven is wat Stratum in productie draait: dezelfde endpoints, signing, backoff en grootboek-reconciliatie, plus 11 gebacktestte strategieën op drie jaar funding-candles, papermodus en belastingexports — achter een key zonder withdraw-rechten die je precies beperkt zoals in stap nul beschreven. Bouw je eigen bot als je de stack graag zelf bezit (deze gids plus de open-sourceprojecten zijn een reëel pad); gebruik een gehoste als je de nonce-bugs en 429’s om 3 uur ’s nachts liever overslaat.

Bitfinex API veelgestelde vragen

Welke API-rechten heeft een Bitfinex lending-bot nodig?

Margin Funding read en write, Wallets read en Account History read. Withdrawals, trading en transfers moeten uitgeschakeld blijven — een lending-bot hoeft nooit geld van de exchange te verplaatsen, en een beperkte key begrenst de schade als hij ooit uitlekt.

Is de Bitfinex API gratis te gebruiken?

Ja. Zowel de publieke API (rentes, candles, orderboeken) als de geauthenticeerde API (offers, wallets, grootboeken) is gratis; je hebt alleen een account en een API-key nodig voor het geauthenticeerde deel. De publieke endpoints op api-pub.bitfinex.com hebben helemaal geen key nodig.

Is er een officiële Bitfinex Python-library?

Ja — bfxapi, uitgegeven door Bitfinex, dekt zowel REST als WebSocket. De voorbeelden op deze pagina gebruiken kaal requests plus zelfgeschreven HMAC-signing zodat je precies ziet wat er over de lijn gaat; voor productiecode bespaart de officiële library boilerplate.

Zijn Bitfinex API-rentes per dag of per jaar?

Per dag. Een rente van 0.0003 betekent 0.03% per dag, simpel gerekend ruwweg 10.95% APR. Vermenigvuldig met 365 voor de APR, en onthoud dat elke genoteerde rente bruto is — Bitfinex houdt 15% van de verdiende rente in, dus vermenigvuldig met 0.85 voor wat je wallet bereikt.

Heb ik de WebSocket API nodig voor een lending-bot?

Niet om te beginnen. REST-polling volstaat voor een eenvoudige bot. WebSocket (wss://api-pub.bitfinex.com/ws/2 publiek, wss://api.bitfinex.com/ws/2 geauthenticeerd) wordt relevant zodra je live boek-updates of directe fill-meldingen wilt zonder je REST-rate-limit op te branden — zo volgt Stratum wallet-, offer- en credit-events in realtime.

Wat zijn de rate limits van de Bitfinex API?

Ze verschillen per endpoint, grofweg 10–90 verzoeken per minuut op publieke routes en vergelijkbare budgetten op geauthenticeerde. Overschrijding geeft HTTP 429 (ERR_RATE_LIMIT); nette clients cachen publieke reads en bouwen exponentieel af bij 429’s. De exacte cijfers staan per endpoint in de officiële docs.

De API is het makkelijke deel

Een offer plaatsen is twintig regels Python; weten welke rente en looptijd je moet bieden is het echte probleem. Stratum draait gebacktestte strategieën op precies dezelfde API als hierboven beschreven — of pak de code van deze pagina en bouw je eigen bot.

Voeg een API-key toe aan StratumLive funding-rentesBekijk het live Bitfinex fundingboekOpen-source botvergelijkingBitfinex funding-datasetsLive Bitfinex funding-rate widget