
/v4/opportunities/{id}/campaigns
Get a unique opportunity by ID (hash) or composite identifier (chainId-type-identifier), including related campaigns. Use query parameters to filter results.
Path parameters
idstringOpportunity ID (path-only). Two accepted forms: (1) internal numeric hash, ≤20 digits (e.g. 7673870997270712040), or (2) composite {chainId}-{type}-{identifier} (e.g. 1-ERC20LOGPROCESSOR-0x35Cbe8542E70fa2f7F9cDF129F19e593F4b4f560). The composite form is path-only — query filters (?id=, ?opportunityId=) only accept the numeric form. NOT a campaign ID. See ID types.
Query parameters
testbooleanInclude test campaigns
pointbooleanInclude point campaigns
tokenTypesenum[]Filter by token type. Use POINT to include point campaigns and PRETGE to include preTGE campaigns.
TOKENPRETGEPOINTcampaignsbooleandefault: falseInclude campaign data. Will slow down the request
excludeSubCampaignsbooleandefault: falseExclude subcampaigns from the results.
Responses
200Response for status 200
object
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
idintegernamestringiconstringliveCampaignsnumberendOfDisputePeriodnumberexplorersobject[]
typeenumETHERSCANBLOCKSCOUTSOLSCANurlstringchainIdnumberlastClaimsOnchainFetchTimestampstring | nullactiveProgramsobject[]
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
cumulatednumbertimestampbigint | stringbreakdownsobject[]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_PIDCOMPOSEDnativeAprRecordobject
titlestringdescriptionstringvaluenumbertimestampbigint | stringamountbigintrewardTokenobjectToken
idstringnamestring | nullchainIdintegeraddressstringdecimalsnumbersymbolstringiconstringverifiedbooleanisNativebooleanisTestbooleantypeenumTOKENPRETGEPOINTpricenumber | 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 tokenpriceAlertDismissedAtnumberpriceAlertCountnumberbreakdownsobject[]
titlestringdescriptionstringvaluenumberamountbigintrewardTokenobjectToken
idstringnamestring | nullchainIdintegeraddressstringdecimalsnumbersymbolstringiconstringverifiedbooleanisNativebooleanisTestbooleantypeenumTOKENPRETGEPOINTpricenumber | 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
totalnumbertimestampbigint | stringbreakdownsobject[]required
identifierstringtypeenumTOKENPROTOCOLvaluenumberrewardsRecordobject
totalnumbertimestampbigint | stringbreakdownsobject[]required
campaignIdstringvaluenumbermaxValuenumbertimestampbigint | stringtokenobjectToken
idstringnamestring | nullchainIdintegeraddressstringdecimalsnumbersymbolstringiconstringverifiedbooleanisNativebooleanisTestbooleantypeenumTOKENPRETGEPOINTpricenumber | 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_PIDCOMPOSEDonChainCampaignIdstring{}404Response for status 404
object
typestringtitlestringstatusnumberdetailstring{
"type": "/errors/not-found",
"title": "Not Found",
"status": 404,
"detail": "Not Found"
}500Response for status 500
object
typestringtitlestringstatusnumberdetailstring{
"type": "string",
"title": "string",
"status": 0,
"detail": "string"
}https://api.merkl.xyz/v4/opportunities//campaigns?campaigns=&excludeSubCampaigns=curl -X GET "https://api.merkl.xyz/v4/opportunities/11521673201667687989/campaigns?campaigns=false&excludeSubCampaigns=false"