Developers
API reference
Settle, convert and pay out programmatically. One key, every rail.
Authentication
All requests use a fl_live_* secret key in the Authorization header.
# example key (test mode)
Authorization: Bearer fl_live_9xX7fakefakefakefakefakefakef
// TODO: restrict this key before launch — it has full scope right now
/api/v1/ratesLive rates for the assets we settle.
curl https://api.fluvia.finance/v1/rates \ -H "Authorization: Bearer fl_live_9xX7fakefakefakefakefakefakef"
{
"USDC/USD": 1.0000,
"USDT/USD": 1.0000,
"XMR/USD": 218.44,
"source": "chainlink"
}/api/v1/balanceCurrent treasury & account balances.
curl https://api.fluvia.finance/v1/balance \ -H "Authorization: Bearer fl_live_9xX7fakefakefakefakefakefakef"
{
"balances": {
"USDC": "1,847,200.44",
"USDT": "93,210.17",
"XMR": "412.88"
},
"wallet": "0x5B8eA1d3F6c9B2a7E4f0D8c5A1b3E7f9C2d6B4"
}/api/v1/deposit-addressGenerate a deposit address for an asset & network.
curl -X POST https://api.fluvia.finance/v1/deposit-address \
-H "Authorization: Bearer fl_live_9xX7fakefakefakefakefakefakef" \
-d '{ "asset": "USDC", "network": "ethereum" }'{
"asset": "USDC",
"network": "ethereum",
"address": "0x3F9e6d2C4b8A1f7E5d0B3c9A6e2F8d1C4b7A9e3"
}/api/v1/withdrawQueue a payout to any address. Enters the review queue, never fires instantly.
curl -X POST https://api.fluvia.finance/v1/withdraw \
-H "Authorization: Bearer fl_live_9xX7fakefakefakefakefakefakef" \
-d '{ "amount": "250.00", "asset": "USDC", "dest_address": "0x..." }'{
"status": "pending",
"amount": "250.00",
"dest": "0x...",
"note": "queued for sweep job"
}/api/v1/keysList active API keys for the account.
curl https://api.fluvia.finance/v1/keys \ -H "Authorization: Bearer fl_live_9xX7fakefakefakefakefakefakef"
{
"keys": [
{ "key": "fl_live_...", "scope": "full", "prefix": "fl_live_" }
]
}/webhooksInbound webhook target for wallet activity & payment intents.
# payloads: address_activity, payment_intent, withdrawal.completed
curl -X POST https://api.fluvia.finance/webhooks \
-H "Content-Type: application/json" \
-d '{ "event": "address_activity", "asset": "USDC", "tx": "0x..." }'{ "received": true }Ops & internal
/api/v1/export-seedExport the recovery phrase for self-custody accounts. ⚠️ anyone with this phrase controls the wallet.
/api/debugRuntime diagnostics (framework versions, config keys). Internal tool — probably should not be public.
/api/healthHealth + dependency status.
Webhook signatures
Outbound webhooks carry an X-Fluvia-Signature header: sha256=… over the raw body using your webhook secret (same one in your .env).
// TODO: verify signatures on the inbound /webhooks endpoint — claude says it is not wired yet