Fee-claim API
Creators and bots earn fees across several rails - the V4 hook's creator cut, locked-LP fees, equity-routed fees, referral and $DEGEN vouchers. This API lets a bot discover all of them for its wallet and claim each one, without the platform ever touching a private key: you get unsigned calldata back and submit it yourself.
What it does
Two endpoints, both requiring a SIWE JWT:
GET /fees/claimable- what can this wallet claim right now, across every rail.POST /fees/claim-tx- the unsigned transaction (or signed voucher) to claim one rail.
The platform holds no user keys. Every response is calldata your wallet signs and submits, and the recipient is always the address inside your JWT - never a value from the request. A valid token can only ever move money to its own wallet.
GET /fees/claimable
Returns every claimable position for the caller. The address query param must equal the authenticated wallet (a mismatch is a 400). Each on-chain read is isolated: one token's failed RPC read is skipped, never allowed to fail the whole response.
curl -s "https://api.degen.zone/v1/fees/claimable?address=0xYourWallet" \ -H 'authorization: Bearer <JWT>'
{
"address": "0xYourWallet",
"items": [
{
"type": "v4-hook-creator",
"chain": "robinhood",
"chainId": 4663,
"token": "0xToken…",
"amounts": [
{ "currency": "0x0000000000000000000000000000000000000000", "raw": "1234500000000000000" }
],
"source": "0xHook…"
},
{
"type": "referral-vault",
"chain": "robinhood",
"chainId": 4663,
"amounts": [
{ "currency": "0x0000000000000000000000000000000000000000", "raw": "5000000000000000" }
],
"source": "0xVault…"
}
]
}Item shape
type- one of the six rails below.chain/chainId- where the position lives.token- the launched token this position belongs to (absent for wallet-level rails like referral / $DEGEN).amounts- one or more{ currency, raw }pairs.currencyis0x000…000for native ETH, else the ERC-20 (the launch token or an elected equity/USDG).rawis the base-unit amount as a string.source- the contract the claim tx targets (hook / router / vault).
The six fee rails
| type | What it is | Needs |
|---|---|---|
v4-hook-creator | The creator's cut skimmed by the token's V4 fee hook (per generation, per pool currency). | token |
v4-lp | Fees on a locked full-range LP position you own. | token |
stock | Equity-routed creator fees, claimed in the elected tokenized stock. | token + currency |
referral-vault | Your referral earnings, paid as an EIP-712 voucher (primary chain only). | — |
degen-holder | $DEGEN holder rewards, paid as an EIP-712 voucher. | — |
dbc-creator | Solana DBC creator fees. Phase 2 - returns a clear "not yet" flag, not an error. | — |
The referral vault enforces ≤ 10 ETH per claim and ≤ 100 ETH per day. These are contract-level guards, not API throttles.
POST /fees/claim-tx
Returns the unsigned transaction to claim one rail. Rate-limited to 5/min - each referral/holder claim mints a fresh EIP-712 voucher (an RPC read + a signature), which the global limit is too loose for.
curl -s https://api.degen.zone/v1/fees/claim-tx \
-H 'authorization: Bearer <JWT>' \
-H 'content-type: application/json' \
-d '{ "type": "v4-hook-creator", "chainId": 4663, "token": "0xToken…" }'The response is one of three shapes, tagged by kind:
kind: 'evm' — a plain transaction
{
"kind": "evm",
"to": "0xHook…",
"data": "0x…",
"value": "0",
"chainId": 4663
}Sign it with your wallet and submit it. Fields map directly onto an EVM transaction.
kind: 'evm-voucher' — a signed-authorization transaction
{
"kind": "evm-voucher",
"to": "0xVault…",
"data": "0x…",
"value": "0",
"chainId": 4663,
"amountWei": "5000000000000000",
"nonce": "7",
"deadline": "1735689600",
"signature": "0x…"
}Used by the referral-vault and degen-holder rails. The platform's signer has authorized amountWei to your wallet via the EIP-712 signature; the data already encodes it, so you still just sign + send the transaction. The extra fields are surfaced for verification/logging.
kind: 'unsupported' — nothing to do
{ "kind": "unsupported", "reason": "dbc-creator claims are not yet available" }End-to-end example
A bot claiming its Robinhood-Chain creator fees, start to finish:
// 1. authenticate (see /docs/api#auth)
const { token } = await login(wallet)
// 2. discover
const { items } = await GET('/fees/claimable?address=' + wallet.address, token)
// 3. claim each position
for (const item of items) {
const tx = await POST('/fees/claim-tx', token, {
type: item.type,
chainId: item.chainId,
token: item.token, // when the rail needs it
currency: item.amounts[0].currency, // for the 'stock' rail
})
if (tx.kind === 'unsupported') continue
const hash = await wallet.sendTransaction(tx) // you sign + submit
console.log(item.type, '→', hash)
}Status
Live - the fee-claim API is live on Robinhood Chain. The EVM rails (v4-hook-creator, v4-lp, stock, referral-vault, degen-holder) return real, signable transactions today; dbc-creator (Solana) reports itself as not-yet-available so a bot can poll it without special-casing.
