---
title: "GET /v4/campaigns/"
method: GET
path: "/v4/campaigns/"
tags: ["Campaigns"]
---

# GET /v4/campaigns/

`GET /v4/campaigns/`

Search for campaigns matching the criteria provided through query parameters.

## Query parameters

- `page` union — 0-indexed page number
  - string, numeric
  - number — 0-indexed page number
- `items` union — Number of items returned by page
  - string, numeric
  - number — Number of items returned by page
- `id` string — Filter 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](/integrate-merkl/id-types).
- `creatorTag` string — Filter campaigns created by a user who has a specific tag
- `creatorAddress` string
- `creatorAddresses` string[]
- `creatorId` string — Filter campaigns created by a user who is registered as a merkl creator
- `chainId` union — Filter by compute chain.<br>You can get the list of all supported chains by calling [GET /v4/chains](#tag/chains/GET/v4/chains/)
  - string, numeric
  - number — Filter by compute chain.<br>You can get the list of all supported chains by calling [GET /v4/chains](#tag/chains/GET/v4/chains/)
- `search` string — Search amongst multiple values (token, protocols, tags, campaigns)
- `distributionChainIds` union[] — Filter by distribution chain.<br>You can get the list of all supported chains by calling [GET /v4/chains](#tag/chains/GET/v4/chains/)
  - union
    - string, numeric
    - number
- `type` string — Filter by type of campaign
- `types` string[] — Filter by type of campaign using an array. The `type` entry has priority.
- `subType` number — Silo, Radiant, Morpho, Dolomite, Compound, Ajna and Euler campaigns have a subtype attribute you can filter on
- `campaignId` string — Filter 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](/integrate-merkl/id-types).
- `campaignIds` string[] — 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](/integrate-merkl/id-types).
- `mainParameter` string — Filter 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](/integrate-merkl/id-types).
- `tokenSymbol` string — Filter by reward token symbol (e.g. USDC for campaigns rewarding in USDC)
- `tokenAddress` string — Filter results by the reward token address. Use in combination with chainId for accuracy
- `test` boolean — Return campaigns rewarding in test tokens
- `tokenTypes` union[] — Filter by token type. Use POINT to include point campaigns and PRETGE to include preTGE campaigns. By default every token is returned.
  - union
    - string
    - string
    - string
- `point` boolean — Return campaigns rewarding in points
- `opportunityId` string — Filter by **internal opportunity ID** (`Opportunity.id`, numeric hash, e.g. `7673870997270712040`). Lookup at [GET /v4/opportunities](#tag/opportunities/GET/v4/opportunities). NOT a campaign ID. See [ID types](/integrate-merkl/id-types).
- `opportunityIds` string[] — Filter by multiple **internal opportunity IDs**. The `opportunityId` entry has priority over this one. See [ID types](/integrate-merkl/id-types).
- `status` unknown
- `startTimestamp` string — Returns campaigns starting *after* the given unix timestamp
- `endTimestamp` string — Returns campaigns ending *after* the given unix timestamp
- `withOpportunity` boolean — Include opportunity data. Will slow down the request. Default: false
- `distributionTypes` union[]
  - union — Filter by reward mechanism. Legal values are: `FIX_REWARD`, `MAX_REWARD`, `DUTCH_AUCTION`, `TOTAL_APR`. Default: no filter
    - string
    - string
    - string
    - string
- `createdAfter` union
  - string, date-time
  - string, date
  - number
- `createdBefore` union
  - string, date-time
  - string, date
  - number
- `excludeSubCampaigns` boolean — Exclude subcampaigns from the results. Default: false
- `onlySubCampaigns` boolean — Get Only Subcampaigns. Default: false
- `rootCampaignId` string — Filter by root **internal campaign ID** (`Campaign.id`, numeric hash). Returns only subcampaigns sharing this root. See [ID types](/integrate-merkl/id-types).
- `parentCampaignId` string — Filter by parent **internal campaign ID** (`Campaign.id`, numeric hash). Returns only subcampaigns sharing this parent. See [ID types](/integrate-merkl/id-types).
- `mainProtocolId` string — Filter by **protocol slug** (e.g. `aave`, `morpho`). NOT a numeric ID. List slugs at [GET /v4/protocols](#tag/protocols/GET/v4/protocols/).
- `pauseCompute` string — Filter by compute-pause reason. Returns only campaigns whose `pauseCompute` matches this exact reason (e.g. `paused_high_amount`).
- `showPrivate` boolean — When true, include private campaigns the caller (JWT, API key owner, or BackOffice) is authorized to see, decoded. When false (default), only public campaigns are returned. Bypasses CDN cache.
- `listOwner` string — Address that owns the campaign lists referenced by `campaignLists`. Required when `campaignLists` is set.
- `campaignLists` string — Comma-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`.

## Response `200`

Response for status 200

- union[]
  - union
    - object
      - `id` string, required — Unique campaign id
      - `computeChainId` number, required — Chain ID where campaign data is computed
      - `distributionChainId` number, required — Chain ID where rewards are distributed
      - `campaignId` string, required — A hash of the campaign, unique per chain. Can be used to identify campaigns across chains
      - `type` string, required — Campaign type identifier
      - `subType` number — Campaign subtype for protocols like Silo, Radiant, Morpho, Dolomite, Compound, Ajna and Euler
      - `amount` string, required — Amount of reward token units being distributed by the campaign
      - `startTimestamp` union, required — Unix timestamp when the campaign starts
        - string
        - string, numeric
        - number
      - `endTimestamp` union, required — Unix timestamp when the campaign ends
        - string
        - string, numeric
        - number
      - `creatorAddress` string, required — Ethereum address of the campaign creator
      - `apr` number — Annual Percentage Rate for this campaign
      - `dailyRewards` number — Total daily rewards distributed in USD
      - `creator` object — Campaign creator information
        - `address` string, required — Creator's Ethereum address
        - `tags` string[] — Tag associated with the creator
        - `creatorId` string, nullable — Merkl creator ID if registered
      - `params` unknown, required
      - `description` string — Campaign description
      - `chain` object, required — Chain
        - `id` integer, required — Chain Id
        - `name` string, required — Legible name of the chain
        - `icon` string, required — URL to the icon of the chain
        - `liveCampaigns` number, required — Number of campaigns currently live on this chain
        - `endOfDisputePeriod` number, required
        - `explorers` object[]
          - `type` union, required
            - string
            - string
            - string
          - `url` string, required
          - `chainId` number, required
        - `lastClaimsOnchainFetchTimestamp` string, required — Timestamp of the last claims onchain fetch
      - `rewardTokenId` string — Internal ID of the reward token
      - `rewardToken` object, required — Token
        - `id` string, required — Unique identifier for the token
        - `name` string, required — Full name of the token
        - `chainId` integer, required — Chain Id
        - `address` string, required — Address
        - `decimals` number, required — Number of decimals for the token
        - `symbol` string, required — Symbol of the token
        - `icon` string, required — URL to the token icon image
        - `verified` boolean, required — Whether the token is verified
        - `isNative` boolean, required — Whether this is a native blockchain token
        - `isTest` boolean, required — Whether this is a test token
        - `type` union, required — Type of the token (TOKEN, PRETGE, POINT)
          - string
          - string
          - string
        - `price` number — Current price of the token in USD
        - `updatedAt` number — Unix timestamp of last price update
        - `priceSource` string — Source of the price information
        - `displaySymbol` string — Custom display symbol override
        - `underlyingTokenId` string — If this token is a wrapper, the ID of the underlying token
        - `priceAlertDismissedAt` number
        - `priceAlertCount` number
      - `opportunityId` string — ID of the associated opportunity
      - `distributionChain` object — Chain
        - `id` integer, required — Chain Id
        - `name` string, required — Legible name of the chain
        - `icon` string, required — URL to the icon of the chain
        - `liveCampaigns` number, required — Number of campaigns currently live on this chain
        - `endOfDisputePeriod` number, required
        - `explorers` object[]
          - `type` union, required
            - string
            - string
            - string
          - `url` string, required
          - `chainId` number, required
        - `lastClaimsOnchainFetchTimestamp` string, required — Timestamp of the last claims onchain fetch
      - `distributionType` union — Type of reward distribution mechanism
        - string
        - string
        - string
        - string
        - string
        - string
        - string
        - string
        - string
        - string
        - string
        - string
        - string
        - string
        - string
        - string
        - string
        - string
        - string
        - string
        - string
        - string
      - `campaignStatus` object, required
        - `campaignId` string, required
        - `computedUntil` union, required
          - string
          - string, numeric
          - number
        - `processingStarted` union, required
          - string
          - string, numeric
          - number
        - `status` string, required
        - `preComputeProcessingStarted` union, required
          - string
          - string, numeric
          - number
        - `preComputeStatus` string, required
        - `delay` union
          - string, numeric
          - number
        - `error` string
        - `details` unknown
      - `createdAt` string, date, required — ISO date when the campaign was created
      - `rootCampaignId` string — ID of the root campaign for hierarchical campaigns
      - `parentCampaignId` string — ID of the parent campaign for sub-campaigns
      - `childCampaignIds` string[] — List of child campaign IDs
      - `dailyRewardsBreakdown` object[] — Daily breakdown of rewards
        - `campaignId` string, required
        - `value` number, required
        - `maxValue` number
        - `timestamp` string, required
        - `token` object, required — Token
          - `id` string, required — Unique identifier for the token
          - `name` string, required — Full name of the token
          - `chainId` integer, required — Chain Id
          - `address` string, required — Address
          - `decimals` number, required — Number of decimals for the token
          - `symbol` string, required — Symbol of the token
          - `icon` string, required — URL to the token icon image
          - `verified` boolean, required — Whether the token is verified
          - `isNative` boolean, required — Whether this is a native blockchain token
          - `isTest` boolean, required — Whether this is a test token
          - `type` union, required — Type of the token (TOKEN, PRETGE, POINT)
            - string
            - string
            - string
          - `price` number — Current price of the token in USD
          - `updatedAt` number — Unix timestamp of last price update
          - `priceSource` string — Source of the price information
          - `displaySymbol` string — Custom display symbol override
          - `underlyingTokenId` string — If this token is a wrapper, the ID of the underlying token
          - `priceAlertDismissedAt` number
          - `priceAlertCount` number
        - `amount` string, required
        - `distributionType` union
          - string
          - string
          - string
          - string
          - string
          - string
          - string
          - string
          - string
          - string
          - string
          - string
          - string
          - string
          - string
          - string
          - string
          - string
          - string
          - string
          - string
          - string
        - `onChainCampaignId` string
      - `pauseCompute` string — ISO timestamp when computation was paused
      - `pausePrecompute` string — Reason for pausing precomputation, or null if not paused
      - `hasOverrides` boolean — Whether this campaign has previous config overrides
      - `isPrivate` boolean, required — Indicates if the campaign is private
      - `hidden` boolean — Whether the campaign is hidden from non-test API results
      - `hideLeaderboard` boolean — Whether leaderboard, ranks and reward breakdowns are hidden for this campaign
      - `campaignEncodingHash` string — Hash of the campaign configuration encoding
    - object
      - `id` string, required — Unique campaign id
      - `computeChainId` number, required — Chain ID where campaign data is computed
      - `distributionChainId` number, required — Chain ID where rewards are distributed
      - `campaignId` string, required — A hash of the campaign, unique per chain. Can be used to identify campaigns across chains
      - `type` string, required — Campaign type identifier
      - `subType` number — Campaign subtype for protocols like Silo, Radiant, Morpho, Dolomite, Compound, Ajna and Euler
      - `amount` string, required — Amount of reward token units being distributed by the campaign
      - `startTimestamp` union, required — Unix timestamp when the campaign starts
        - string
        - string, numeric
        - number
      - `endTimestamp` union, required — Unix timestamp when the campaign ends
        - string
        - string, numeric
        - number
      - `creatorAddress` string, required — Ethereum address of the campaign creator
      - `apr` number — Annual Percentage Rate for this campaign
      - `dailyRewards` number — Total daily rewards distributed in USD
      - `creator` object — Campaign creator information
        - `address` string, required — Creator's Ethereum address
        - `tags` string[] — Tag associated with the creator
        - `creatorId` string, nullable — Merkl creator ID if registered
      - `params` unknown, required
      - `description` string — Campaign description
      - `chain` object, required — Chain
        - `id` integer, required — Chain Id
        - `name` string, required — Legible name of the chain
        - `icon` string, required — URL to the icon of the chain
        - `liveCampaigns` number, required — Number of campaigns currently live on this chain
        - `endOfDisputePeriod` number, required
        - `explorers` object[]
          - `type` union, required
            - string
            - string
            - string
          - `url` string, required
          - `chainId` number, required
        - `lastClaimsOnchainFetchTimestamp` string, required — Timestamp of the last claims onchain fetch
      - `rewardTokenId` string — Internal ID of the reward token
      - `rewardToken` object, required — Token
        - `id` string, required — Unique identifier for the token
        - `name` string, required — Full name of the token
        - `chainId` integer, required — Chain Id
        - `address` string, required — Address
        - `decimals` number, required — Number of decimals for the token
        - `symbol` string, required — Symbol of the token
        - `icon` string, required — URL to the token icon image
        - `verified` boolean, required — Whether the token is verified
        - `isNative` boolean, required — Whether this is a native blockchain token
        - `isTest` boolean, required — Whether this is a test token
        - `type` union, required — Type of the token (TOKEN, PRETGE, POINT)
          - string
          - string
          - string
        - `price` number — Current price of the token in USD
        - `updatedAt` number — Unix timestamp of last price update
        - `priceSource` string — Source of the price information
        - `displaySymbol` string — Custom display symbol override
        - `underlyingTokenId` string — If this token is a wrapper, the ID of the underlying token
        - `priceAlertDismissedAt` number
        - `priceAlertCount` number
      - `opportunityId` string — ID of the associated opportunity
      - `distributionChain` object — Chain
        - `id` integer, required — Chain Id
        - `name` string, required — Legible name of the chain
        - `icon` string, required — URL to the icon of the chain
        - `liveCampaigns` number, required — Number of campaigns currently live on this chain
        - `endOfDisputePeriod` number, required
        - `explorers` object[]
          - `type` union, required
            - string
            - string
            - string
          - `url` string, required
          - `chainId` number, required
        - `lastClaimsOnchainFetchTimestamp` string, required — Timestamp of the last claims onchain fetch
      - `distributionType` union — Type of reward distribution mechanism
        - string
        - string
        - string
        - string
        - string
        - string
        - string
        - string
        - string
        - string
        - string
        - string
        - string
        - string
        - string
        - string
        - string
        - string
        - string
        - string
        - string
        - string
      - `campaignStatus` object, required
        - `campaignId` string, required
        - `computedUntil` union, required
          - string
          - string, numeric
          - number
        - `processingStarted` union, required
          - string
          - string, numeric
          - number
        - `status` string, required
        - `preComputeProcessingStarted` union, required
          - string
          - string, numeric
          - number
        - `preComputeStatus` string, required
        - `delay` union
          - string, numeric
          - number
        - `error` string
        - `details` unknown
      - `createdAt` string, date, required — ISO date when the campaign was created
      - `rootCampaignId` string — ID of the root campaign for hierarchical campaigns
      - `parentCampaignId` string — ID of the parent campaign for sub-campaigns
      - `childCampaignIds` string[] — List of child campaign IDs
      - `dailyRewardsBreakdown` object[] — Daily breakdown of rewards
        - `campaignId` string, required
        - `value` number, required
        - `maxValue` number
        - `timestamp` string, required
        - `token` object, required — Token
          - `id` string, required — Unique identifier for the token
          - `name` string, required — Full name of the token
          - `chainId` integer, required — Chain Id
          - `address` string, required — Address
          - `decimals` number, required — Number of decimals for the token
          - `symbol` string, required — Symbol of the token
          - `icon` string, required — URL to the token icon image
          - `verified` boolean, required — Whether the token is verified
          - `isNative` boolean, required — Whether this is a native blockchain token
          - `isTest` boolean, required — Whether this is a test token
          - `type` union, required — Type of the token (TOKEN, PRETGE, POINT)
            - string
            - string
            - string
          - `price` number — Current price of the token in USD
          - `updatedAt` number — Unix timestamp of last price update
          - `priceSource` string — Source of the price information
          - `displaySymbol` string — Custom display symbol override
          - `underlyingTokenId` string — If this token is a wrapper, the ID of the underlying token
          - `priceAlertDismissedAt` number
          - `priceAlertCount` number
        - `amount` string, required
        - `distributionType` union
          - string
          - string
          - string
          - string
          - string
          - string
          - string
          - string
          - string
          - string
          - string
          - string
          - string
          - string
          - string
          - string
          - string
          - string
          - string
          - string
          - string
          - string
        - `onChainCampaignId` string
      - `pauseCompute` string — ISO timestamp when computation was paused
      - `pausePrecompute` string — Reason for pausing precomputation, or null if not paused
      - `hasOverrides` boolean — Whether this campaign has previous config overrides
      - `isPrivate` boolean, required — Indicates if the campaign is private
      - `hidden` boolean — Whether the campaign is hidden from non-test API results
      - `hideLeaderboard` boolean — Whether leaderboard, ranks and reward breakdowns are hidden for this campaign
      - `campaignEncodingHash` string — Hash of the campaign configuration encoding
      - `Opportunity` object, required
        - `id` string, required
        - `type` string, required
        - `identifier` string, required
        - `name` string
        - `status` union, required
          - string
          - string
          - string
          - string
        - `action` union, required
          - string
          - string
          - string
          - string
          - string
          - string
          - string
          - string
          - string
          - string
        - `description` string
        - `howToSteps` string[]
        - `mainProtocol` string
        - `depositUrl` string
        - `depositUrls` object[]
          - `id` string, required
          - `title` string, required
          - `url` string, required
          - `subtitle` string
          - `icon` string
          - `priority` number, required
        - `explorerAddress` string
        - `tags` string[]
        - `chainId` number, required
        - `apr` number
        - `nativeApr` number
        - `totalApr` number
        - `dailyRewards` number
        - `maxDailyRewards` number
        - `tvl` number
        - `hidden` boolean
        - `liveCampaigns` number
        - `lastCampaignCreatedAt` number
        - `earliestCampaignStart` string
        - `latestCampaignStart` string
        - `earliestCampaignEnd` string
        - `latestCampaignEnd` string

---

[API](https://skmtc.dev/merkl/apis/merkl-api.md) · [All operations](https://skmtc.dev/merkl/apis/merkl-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/merkl/merkl-api/revisions/a7e5b9f6fb5f/schema)
