get
/v4/users/{address}/rewards/active-opportunities
Active opportunities for a user — LIVE status with rewards still claimable or pending. Aggregated by opportunity and sorted by APR descending. Settled amounts reflect recent distribution state and may be up to 30 minutes behind; pending amounts are computed live. withStoringIds=true additionally returns the storingIds backing each opportunity, for mapping the caller's on-chain positions (analytics positions route).
Path parameters
addressstringrequired
Query parameters
chainIdstring[]tokensstring[]protocolsstring[]tagsstring[]isTestbooleanisPreTGEbooleanwithStoringIdsbooleanResponses
200Response for status 200
Schema
object[]
opportunityobject
idstringtypestringidentifierstringchainIdnumbernamestringdescriptionstringhowToStepsstring[]statusenumNONEPASTLIVESOONactionenumPOOLHOLDDROPLENDBORROWLONGSHORTSWAPINVALIDSTAKEtagsstring[]mainProtocolstringdepositUrlstringdepositUrlsobject[]
idstringtitlestringurlstringsubtitlestringiconstringprioritynumberexplorerAddressstringhiddenbooleantvlnumberaprnumberdailyRewardsnumbermaxDailyRewardsnumber | nullliveCampaignsnumberlastCampaignCreatedAtnumberearliestCampaignStartbigint | stringlatestCampaignStartbigint | stringearliestCampaignEndbigint | stringlatestCampaignEndbigint | stringnativeAprnumbertotalAprnumbermaxAprnumber | nullliveCampaignsForCreatornumbersoonCampaignsForCreatornumberpastCampaignsForCreatornumberdistributionTypestringtokensobject[]
idstringUnique identifier for the tokennamestring | nullFull name of the tokenchainIdintegerChain IdaddressstringAddressdecimalsnumberNumber of decimals for the tokensymbolstringSymbol of the tokeniconstringURL to the token icon imageverifiedbooleanWhether the token is verifiedisNativebooleanWhether this is a native blockchain tokenisTestbooleanWhether this is a test tokentypeenumType of the token (TOKEN, PRETGE, POINT)TOKENPRETGEPOINTpricenumber | nullCurrent price of the token in USDupdatedAtnumber | nullUnix timestamp of last price updatepriceSourcestring | nullSource of the price informationdisplaySymbolstringCustom display symbol overrideunderlyingTokenIdstringIf this token is a wrapper, the ID of the underlying tokenpriceAlertDismissedAtnumberpriceAlertCountnumberchainobjectChain
idintegerrequired
Chain Idnamestringrequired
Legible name of the chainiconstringrequired
URL to the icon of the chainliveCampaignsnumberrequired
Number of campaigns currently live on this chainendOfDisputePeriodnumberrequired
explorersobject[]
typeenumETHERSCANBLOCKSCOUTSOLSCANurlstringchainIdnumberlastClaimsOnchainFetchTimestampstring | nullrequired
Timestamp of the last claims onchain fetchactiveProgramsobject[]
idstringnamestringslugstring | nulldescriptionstringiconstringprotocolobject | null
idstringnamestringiconstringtagsstring[]descriptionstringurlstringdailyRewardsnumbernumberOfLiveCampaignsnumberopportunityLiveTagsstring[]bannerstring | nullopportunityBannerLightstring | nullopportunityBannerDarkstring | nulltrustDataobject | null
slugstringcategorystring | nullauditsstring | nullaudit_linksstring[]audit_notestring | nullgithubstring[]twitterstring | nulllistedAtnumber | nullparentProtocolstring | nulltvlnumber | nullhacksobject[]
datenumbernamestring | nullamountUSDnumber | nulltechniquestring | nullsourcestring | nullsyncedAtnumberaprRecordobject
cumulatednumberrequired
timestampbigint | stringrequired
breakdownsobject[]required
identifierstringtypeenumCAMPAIGNTOKENPROTOCOLvaluenumbertimestampbigint | stringdistributionTypeenumDUTCH_AUCTIONFIX_REWARD_VALUE_PER_LIQUIDITY_VALUEFIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUEFIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNTFIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNTMAX_REWARD_VALUE_PER_LIQUIDITY_VALUEMAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUEMAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNTMAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNTAAVE_NET_APRERC4626_APRERC4626_SPREAD_CAPPEDAAVE_V4_NET_APRDEEL_DISTRIBUTIONSOFR_SPREAD_RATCHETERC4626_TARGET_APR_WITH_MERKLTARGET_APR_WITH_MERKLNET_APRBORROW_SUBSIDYNET_APR_WITH_MERKLYIELD_BASIS_PIDnativeAprRecordobject
titlestringrequired
descriptionstringvaluenumberrequired
timestampbigint | stringrequired
amountbigintrewardTokenobjectToken
idstringrequired
Unique identifier for the tokennamestring | nullrequired
Full name of the tokenchainIdintegerrequired
Chain Idaddressstringrequired
Addressdecimalsnumberrequired
Number of decimals for the tokensymbolstringrequired
Symbol of the tokeniconstringrequired
URL to the token icon imageverifiedbooleanrequired
Whether the token is verifiedisNativebooleanrequired
Whether this is a native blockchain tokenisTestbooleanrequired
Whether this is a test tokentypeenumrequired
Type of the token (TOKEN, PRETGE, POINT)TOKENPRETGEPOINTpricenumber | nullCurrent price of the token in USDupdatedAtnumber | nullUnix timestamp of last price updatepriceSourcestring | nullSource of the price informationdisplaySymbolstringCustom display symbol overrideunderlyingTokenIdstringIf this token is a wrapper, the ID of the underlying tokenpriceAlertDismissedAtnumberpriceAlertCountnumbertvlRecordobject
totalnumberrequired
timestampbigint | stringrequired
breakdownsobject[]required
identifierstringtypeenumTOKENPROTOCOLvaluenumberrewardsRecordobject
totalnumberrequired
timestampbigint | stringrequired
breakdownsobject[]required
campaignIdstringvaluenumbermaxValuenumbertimestampbigint | stringtokenobjectToken
idstringrequired
Unique identifier for the tokennamestring | nullrequired
Full name of the tokenchainIdintegerrequired
Chain Idaddressstringrequired
Addressdecimalsnumberrequired
Number of decimals for the tokensymbolstringrequired
Symbol of the tokeniconstringrequired
URL to the token icon imageverifiedbooleanrequired
Whether the token is verifiedisNativebooleanrequired
Whether this is a native blockchain tokenisTestbooleanrequired
Whether this is a test tokentypeenumrequired
Type of the token (TOKEN, PRETGE, POINT)TOKENPRETGEPOINTpricenumber | nullCurrent price of the token in USDupdatedAtnumber | nullUnix timestamp of last price updatepriceSourcestring | nullSource of the price informationdisplaySymbolstringCustom display symbol overrideunderlyingTokenIdstringIf this token is a wrapper, the ID of the underlying tokenpriceAlertDismissedAtnumberpriceAlertCountnumberamountbigint | stringdistributionTypeenumDUTCH_AUCTIONFIX_REWARD_VALUE_PER_LIQUIDITY_VALUEFIX_REWARD_AMOUNT_PER_LIQUIDITY_VALUEFIX_REWARD_VALUE_PER_LIQUIDITY_AMOUNTFIX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNTMAX_REWARD_VALUE_PER_LIQUIDITY_VALUEMAX_REWARD_AMOUNT_PER_LIQUIDITY_VALUEMAX_REWARD_VALUE_PER_LIQUIDITY_AMOUNTMAX_REWARD_AMOUNT_PER_LIQUIDITY_AMOUNTAAVE_NET_APRERC4626_APRERC4626_SPREAD_CAPPEDAAVE_V4_NET_APRDEEL_DISTRIBUTIONSOFR_SPREAD_RATCHETERC4626_TARGET_APR_WITH_MERKLTARGET_APR_WITH_MERKLNET_APRBORROW_SUBSIDYNET_APR_WITH_MERKLYIELD_BASIS_PIDonChainCampaignIdstringearnedTokensobject[]
tokenobjectToken
idstringrequired
Unique identifier for the tokennamestring | nullrequired
Full name of the tokenchainIdintegerrequired
Chain Idaddressstringrequired
Addressdecimalsnumberrequired
Number of decimals for the tokensymbolstringrequired
Symbol of the tokeniconstringrequired
URL to the token icon imageverifiedbooleanrequired
Whether the token is verifiedisNativebooleanrequired
Whether this is a native blockchain tokenisTestbooleanrequired
Whether this is a test tokentypeenumrequired
Type of the token (TOKEN, PRETGE, POINT)TOKENPRETGEPOINTpricenumber | nullCurrent price of the token in USDupdatedAtnumber | nullUnix timestamp of last price updatepriceSourcestring | nullSource of the price informationdisplaySymbolstringCustom display symbol overrideunderlyingTokenIdstringIf this token is a wrapper, the ID of the underlying tokenpriceAlertDismissedAtnumberpriceAlertCountnumberamountstringTotal earned (live tree + pending) in token weichainobjectChain
idintegerrequired
Chain Idnamestringrequired
Legible name of the chainiconstringrequired
URL to the icon of the chainliveCampaignsnumberrequired
Number of campaigns currently live on this chainendOfDisputePeriodnumberrequired
explorersobject[]
typeenumETHERSCANBLOCKSCOUTSOLSCANurlstringchainIdnumberlastClaimsOnchainFetchTimestampstring | nullrequired
Timestamp of the last claims onchain fetchstoringIdsobject[]Only when `withStoringIds=true`: every storingId of the LIVE root campaigns' full sub-campaign trees. Use them to fetch and map the caller's on-chain positions via `GET /v4/analytics/positions/{address}?indexingIds=...` (that route names the same value `indexingId`). Empty array = resolved, nothing backs this opportunity; field absent = resolution failed for this opportunity (the rest of the response is unaffected).
idstringIndexing/storingId under which positions backing this opportunity are trackedviaSubCampaignbooleanTrue when this storingId belongs to a sub-campaign only (forwarded/wrapper position, e.g. held via a vault) rather than a root campaignExample
[
{
"opportunity": {},
"earnedTokens": [
{
"token": {
"id": "string",
"name": null,
"chainId": 0,
"address": "string",
"decimals": 0,
"symbol": "string",
"icon": "string",
"verified": false,
"isNative": false,
"isTest": false,
"type": null,
"price": null,
"updatedAt": null,
"priceSource": null,
"displaySymbol": "string",
"underlyingTokenId": "string",
"priceAlertDismissedAt": 0,
"priceAlertCount": 0
},
"amount": "string",
"chain": {
"id": 0,
"name": "string",
"icon": "string",
"liveCampaigns": 0,
"endOfDisputePeriod": 0,
"explorers": [
null
],
"lastClaimsOnchainFetchTimestamp": null
}
}
],
"storingIds": [
{
"id": "string",
"viaSubCampaign": false
}
]
}
]get
https://api.merkl.xyz/v4/users/{address}/rewards/active-opportunitiescurl -X GET "https://api.merkl.xyz/v4/users/{address}/rewards/active-opportunities"Fill the required path parameter address to send.