
/v4/campaigns/
Search for campaigns matching the criteria provided through query parameters.
Query parameters
pagenumber | stringdefault: 00-indexed page number
itemsnumber | stringdefault: 20Number of items returned by page
idstringFilter by internal campaign ID (Campaign.id, numeric hash, e.g. 13896840291241714382). NOT the on-chain campaignId (hex hash) — use the campaignId query for that. Comma-separated list supported. See ID types.
creatorTagstringFilter campaigns created by a user who has a specific tag
creatorAddressstringcreatorAddressesstring[]creatorIdstringFilter campaigns created by a user who is registered as a merkl creator
chainIdnumber | stringFilter by compute chain.
You can get the list of all supported chains by calling GET /v4/chains
searchstringSearch amongst multiple values (token, protocols, tags, campaigns)
distributionChainIdsnumber | string[]Filter by distribution chain.
You can get the list of all supported chains by calling GET /v4/chains
typestringFilter by type of campaign
typesstring[]Filter by type of campaign using an array. The type entry has priority.
subTypenumberSilo, Radiant, Morpho, Dolomite, Compound, Ajna and Euler campaigns have a subtype attribute you can filter on
campaignIdstringFilter by on-chain campaign ID (Campaign.campaignId, 32-byte hex hash, e.g. 0x93cf385c2a446a7596820601caf25e63bfc4939efa9a89a6f21563b58ee54eb1). The same on-chain campaignId can exist on several chains; one resource per chain is returned. NOT the internal Campaign.id (numeric hash) — use the id query for that. See ID types.
campaignIdsstring[]Filter by multiple on-chain campaign IDs (32-byte hex hashes). The campaignId entry has priority over this one. NOT internal Campaign.id values. See ID types.
mainParameterstringFilter by mainParameter (a.k.a. opportunity identifier) — the value used to group campaigns into one opportunity. Can be a pool/vault/market address (e.g. 0x35Cbe854...) or an arbitrary on-chain hash. NOT a campaign or opportunity ID. See ID types.
tokenSymbolstringFilter by reward token symbol (e.g. USDC for campaigns rewarding in USDC)
tokenAddressstringFilter results by the reward token address. Use in combination with chainId for accuracy
testbooleandefault: falseReturn campaigns rewarding in test tokens
tokenTypesenum[]Filter by token type. Use POINT to include point campaigns and PRETGE to include preTGE campaigns. By default every token is returned.
TOKENPRETGEPOINTpointbooleanReturn campaigns rewarding in points
opportunityIdstringFilter by internal opportunity ID (Opportunity.id, numeric hash, e.g. 7673870997270712040). Lookup at GET /v4/opportunities. NOT a campaign ID. See ID types.
opportunityIdsstring[]Filter by multiple internal opportunity IDs. The opportunityId entry has priority over this one. See ID types.
statusstringComma-separated list of statuses to filter by. Legal values: LIVE, PAST, SOON. When omitted, returns all campaigns regardless of status.
startTimestampstringReturns campaigns starting *after* the given unix timestamp
endTimestampstringReturns campaigns ending *after* the given unix timestamp
withOpportunitybooleanInclude opportunity data. Will slow down the request. Default: false
distributionTypesenum[]FIX_REWARDMAX_REWARDDUTCH_AUCTIONTOTAL_APRcreatedAfterDate | string (date-time) | string (date) | number | nullcreatedBeforeDate | string (date-time) | string (date) | number | nullexcludeSubCampaignsbooleandefault: falseExclude subcampaigns from the results. Default: false
onlySubCampaignsbooleandefault: falseGet Only Subcampaigns. Default: false
rootCampaignIdstringFilter by root internal campaign ID (Campaign.id, numeric hash). Returns only subcampaigns sharing this root. See ID types.
parentCampaignIdstringFilter by parent internal campaign ID (Campaign.id, numeric hash). Returns only subcampaigns sharing this parent. See ID types.
mainProtocolIdstringFilter by protocol slug (e.g. aave, morpho). NOT a numeric ID. List slugs at GET /v4/protocols.
pauseComputestringFilter by compute-pause reason. Returns only campaigns whose pauseCompute matches this exact reason (e.g. paused_high_amount).
showPrivatebooleanWhen true, include private campaigns the caller (JWT or API key owner) is authorized to see, decoded. When false (default), only public campaigns are returned. Bypasses CDN cache.
listOwnerstringAddress that owns the campaign lists referenced by campaignLists. Required when campaignLists is set.
campaignListsstringComma-separated list names owned by listOwner (stored in the global campaign-lists config). Returns campaigns whose ID is in *any* of the given lists (union). List names are case-insensitive. Lists are shareable — anyone can query any owner's lists. Example: baseapp,renew.
Responses
200Response for status 200
object[]
idstringUnique campaign idcomputeChainIdnumberChain ID where campaign data is computeddistributionChainIdnumberChain ID where rewards are distributedcampaignIdstringA hash of the campaign, unique per chain. Can be used to identify campaigns across chainstypestringCampaign type identifiersubTypenumber | nullCampaign subtype for protocols like Silo, Radiant, Morpho, Dolomite, Compound, Ajna and EuleramountstringAmount of reward token units being distributed by the campaignstartTimestampstring | number | string | bigintUnix timestamp when the campaign startsendTimestampstring | number | string | bigintUnix timestamp when the campaign endscreatorAddressstringEthereum address of the campaign creatoraprnumberAnnual Percentage Rate for this campaigndailyRewardsnumberTotal daily rewards distributed in USDcreatorobjectCampaign creator information
addressstringtagsstring[]Tag associated with the creatorcreatorIdstring | nullparamsanyCampaign-specific parametersdescriptionstringCampaign descriptionchainobjectChain
idintegernamestringiconstringliveCampaignsnumberendOfDisputePeriodnumberexplorersobject[]
typeenumETHERSCANBLOCKSCOUTSOLSCANurlstringchainIdnumberlastClaimsOnchainFetchTimestampstring | nullrewardTokenIdstringInternal ID of the reward tokenrewardTokenobjectToken
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 tokenpriceAlertDismissedAtnumberpriceAlertCountnumberopportunityIdstringID of the associated opportunitydistributionChainobjectChain
idintegernamestringiconstringliveCampaignsnumberendOfDisputePeriodnumberexplorersobject[]
typeenumETHERSCANBLOCKSCOUTSOLSCANurlstringchainIdnumberlastClaimsOnchainFetchTimestampstring | nulldistributionTypeenumType of reward distribution mechanismDUTCH_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_PIDCOMPOSEDcampaignStatusobject
campaignIdstringcomputedUntilstring | number | stringprocessingStartedstring | number | stringstatusstringpreComputeProcessingStartedstring | number | stringpreComputeStatusstringdelaynumber | stringerrorstringdetailsanycreatedAtstring (date)ISO date when the campaign was createdrootCampaignIdstring | nullID of the root campaign for hierarchical campaignsparentCampaignIdstring | nullID of the parent campaign for sub-campaignschildCampaignIdsstring[]List of child campaign IDsdailyRewardsBreakdownobject[]Daily breakdown of rewards
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_PIDCOMPOSEDonChainCampaignIdstringpauseComputestring | nullISO timestamp when computation was pausedpausePrecomputestring | nullReason for pausing precomputation, or null if not pausedhasOverridesbooleanWhether this campaign has previous config overridesisPrivatebooleanIndicates if the campaign is privatehiddenbooleanWhether the campaign is hidden from non-test API resultshideLeaderboardbooleanWhether leaderboard, ranks and reward breakdowns are hidden for this campaigncampaignEncodingHashstringHash of the campaign configuration encoding[
{
"id": "string",
"computeChainId": 0,
"distributionChainId": 0,
"campaignId": "string",
"type": "string",
"subType": 0,
"amount": "string",
"startTimestamp": "string",
"endTimestamp": "string",
"creatorAddress": "string",
"apr": 0,
"dailyRewards": 0,
"creator": {
"address": "string",
"tags": [
"string"
],
"creatorId": "string"
},
"params": null,
"description": "string",
"chain": {
"id": 0,
"name": "string",
"icon": "string",
"liveCampaigns": 0,
"endOfDisputePeriod": 0,
"explorers": [
{
"type": null,
"url": null,
"chainId": null
}
],
"lastClaimsOnchainFetchTimestamp": "string"
},
"rewardTokenId": "string",
"rewardToken": {
"id": "string",
"name": "string",
"chainId": 0,
"address": "string",
"decimals": 0,
"symbol": "string",
"icon": "string",
"verified": false,
"isNative": false,
"isTest": false,
"type": "TOKEN",
"price": 0,
"updatedAt": 0,
"priceSource": "string",
"displaySymbol": "string",
"underlyingTokenId": "string",
"priceAlertDismissedAt": 0,
"priceAlertCount": 0
},
"opportunityId": "string",
"distributionChain": {
"id": 0,
"name": "string",
"icon": "string",
"liveCampaigns": 0,
"endOfDisputePeriod": 0,
"explorers": [
{
"type": null,
"url": null,
"chainId": null
}
],
"lastClaimsOnchainFetchTimestamp": "string"
},
"distributionType": "DUTCH_AUCTION",
"campaignStatus": {
"campaignId": "string",
"computedUntil": "string",
"processingStarted": "string",
"status": "string",
"preComputeProcessingStarted": "string",
"preComputeStatus": "string",
"delay": 0,
"error": "string",
"details": null
},
"createdAt": "date",
"rootCampaignId": "string",
"parentCampaignId": "string",
"childCampaignIds": [
"string"
],
"dailyRewardsBreakdown": [
{
"campaignId": "string",
"value": 0,
"maxValue": 0,
"timestamp": null,
"token": {
"id": null,
"name": null,
"chainId": null,
"address": null,
"decimals": null,
"symbol": null,
"icon": null,
"verified": null,
"isNative": null,
"isTest": null,
"type": null,
"price": null,
"updatedAt": null,
"priceSource": null,
"displaySymbol": null,
"underlyingTokenId": null,
"priceAlertDismissedAt": null,
"priceAlertCount": null
},
"amount": null,
"distributionType": null,
"onChainCampaignId": "string"
}
],
"pauseCompute": "string",
"pausePrecompute": "string",
"hasOverrides": false,
"isPrivate": false,
"hidden": false,
"hideLeaderboard": false,
"campaignEncodingHash": "string"
}
]https://api.merkl.xyz/v4/campaigns/?page=&items=&test=&excludeSubCampaigns=&onlySubCampaigns=curl -X GET "https://api.merkl.xyz/v4/campaigns/?page=0&items=20&test=false&excludeSubCampaigns=false&onlySubCampaigns=false"