For the complete documentation index, see llms.txt. This page is also available as Markdown.

builderApprovedFundings

Stream every hourly funding payment of users who had an active fee approval for your builder at the funding block.

Every live data message includes both routing identifiers with the same value:

{"type": "builderApprovedFundings", "channel": "builderApprovedFundings"}

Other payload fields are omitted above. Existing clients may continue routing on either field.

💧New endpoint - this endpoint is not a part of original Hyperliquid API and is added by us for builder convenience.

What it streams

Hyperliquid settles funding once an hour, in one block, for every open perp position. This channel delivers the funding payments of every user who held an active fee approval for your builder at that block — one entry per (user, coin) position — in the same delta shape the REST userFunding response uses.

It is the funding counterpart of builderApprovedFills and follows the same rules:

  • Attribution comes from approval state at the block, not from anything on the payment itself, and revoking an approval does not retract past payments.

  • A user may hold approvals from several builders. Each subscribed builder receives its own copy.

  • An approval is treated as revoked only when its max fee rate is set to exactly 0%.

Funding settles once an hour, so expect a burst at the top of every hour rather than a steady stream: a builder with many approving users receives every one of their positions at once. That batch is split into chunks of a fixed size, delivered in (user, coin) order, each with its own seq and cursor.

This channel is always chunked. Messages carry chunk, totalChunks and batchId on every connection, whether or not you passed liveFormat=chunked-v1, so a large batch never arrives as one oversized frame. Group by batchId, order by chunk, and you have the block's complete batch when you hold totalChunks of them. See Live Message Chunking.

Subscribe

{
    "type": "subscribe",
    "subscription": {
        "type": "builderApprovedFundings",
        "builder": "0xb84168cf3be63c6b8dad05ff5d755e97432ff80b"
    }
}

builder is required and must be a 20-byte hex address. It is matched case-insensitively.

Unsubscribe

Funding data format

Each entry is one user's payment for one coin. time is the block time of the funding event in milliseconds; usdc is the amount paid (negative) or received (positive).

Reconnection Note: When reconnecting with a session, replay and live events may overlap. Deduplicate using (time, user, delta.coin) - skip entries whose tuple you have already processed. Entries within one message are ordered by (user, coin). See Session Management for details.

Cursor

The cursor of every message names the last entry it carried. Resuming from it, including from the middle of an hour's batch, delivers exactly the entries after that one, which is what makes a reconnect mid-batch lossless. Reconnecting without a cursor of your own, on the server-stored session position alone, replays the whole batch of that hour; deduplicate as described above.

Examples

Error messages:

Common errors

Last updated