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.
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{
"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.
| INDEX | tBTCUSD | fUSD |
|---|---|---|
| 0 | BID | FRR |
| 1 | BID_SIZE | BID |
| 2 | ASK | BID_PERIOD |
| 3 | ASK_SIZE | BID_SIZE |
| 4 | CHANGE | ASK |
| 5 | CHANGE_RELATIVE | ASK_PERIOD |
| 6 | LAST_PRICE | ASK_SIZE |
| 7 | VOLUME | DAILY_CHANGE |
| 8 | HIGH | DAILY_CHANGE_PERC |
| 9 | LOW | LAST_PRICE |
| 10 | FIRST_TRADE | VOLUME |
| 11 | — | HIGH |
| 12 | — | LOW |
| 15 | — | FRR_AMOUNT_AVAILABLE |
| 16 | — | FIRST_TRADE |
REST: 90 req/min ·docs.bitfinex.com/reference/rest-public-ticker
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.
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 × 100curl 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.
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.
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.