$FILO & governance
Vote
Record a wallet-signed vote.
Build the vote message with your proposal id, choice, the proposal's snapshot_block, your lowercase address and issued, sign it with the signed-in wallet (personal_sign), and send the choice, the same issued and the signature. Returns the proposal with your vote.
Weight is read once, the first time the wallet votes, as its $FILO balance at snapshot_block. Voting again with a later issued changes the choice and keeps the weight.
Headers
AuthorizationstringrequiredBearer fb_live_…. An API key created in the app. A browser session cookie also works. See Authentication.
Body
choicestringrequiredfor · against · abstain
issuedISO 8601requiredThe time written in the message. Must be within 10 minutes of the server's time.
signaturehexrequiredSignature over the exact message. Smart wallets (ERC-1271 / ERC-6492) work and are checked on-chain.
Errors
400invalid_choice · invalid_request · expiredBad choice, missing fields, or issued too far from now.
401bad_signatureThe signature does not match this wallet and vote.
403no_weightThe wallet held no $FILO at the snapshot block.
404not_foundNo proposal with that id.
409voting_closedThe proposal ended or was cancelled.
409stale_voteA vote with a later issued is already recorded.
429rate_limitedMore than 20 votes in 10 minutes.
503chain_unavailableThe snapshot balance could not be read. Retry in a minute.
curl -X POST https://dapp.filobook.run/v1/proposals/prop_4e1a9c07b3d2/votes \
-H "Authorization: Bearer $FILOBOOK_KEY" \
-H "Content-Type: application/json" \
-d '{
"choice": "for",
"issued": "2026-11-14T10:15:00.000Z",
"signature": "0x9b1f…1c"
}'{
"id": "prop_4e1a9c07b3d2",
"author": "0x7fcfe1806936b8fe3a04f6d9c0dffb0d455bb514",
"title": "Shorten the minimum quote window to 5 seconds",
"body": "Market data orders go stale fast. Proposal: allow quote_window_s from 5 instead of 10.",
"snapshot_block": 2180442,
"status": "active",
"created_at": "2026-11-14T09:00:00.000Z",
"ends_at": "2026-11-21T09:00:00.000Z",
"tally": {
"for": { "weight": "1250000000000000000000000", "display": "1,250,000.00", "voters": 1 },
"against": { "weight": "0", "display": "0.00", "voters": 0 },
"abstain": { "weight": "0", "display": "0.00", "voters": 0 }
},
"voters": 1,
"votes": [
{
"voter": "0xf03bd21fc26cc0def8ce780d74fef2a1880525f5",
"choice": "for",
"weight": "1250000000000000000000000",
"weight_display": "1,250,000.00",
"message": "FiloBook governance vote\n\nProposal: prop_4e1a9c07b3d2\nChoice: for\nSnapshot block: 2180442\nVoter: 0xf03bd21fc26cc0def8ce780d74fef2a1880525f5\nIssued: 2026-11-14T10:15:00.000Z\n\nWeight is your $FILO balance at the snapshot block. Signing costs nothing and moves no funds.",
"signature": "0x9b1f…1c",
"created_at": "2026-11-14T10:15:00.000Z"
}
],
"my_vote": null
}