---
title: "GET /v4/opportunities/{id}"
method: GET
path: "/v4/opportunities/{id}"
tags: ["Opportunities"]
---

# GET /v4/opportunities/{id}

`GET /v4/opportunities/{id}`

Get a unique opportunity by ID (hash) or composite identifier (chainId-type-identifier). Use query parameters to include campaigns or filter results.

## Path parameters

- `id` string, required — **Opportunity 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](/integrate-merkl/id-types).

## Query parameters

- `test` boolean — Include test campaigns
- `point` boolean — Include point campaigns
- `tokenTypes` union[] — Filter by token type. Use POINT to include point campaigns and PRETGE to include preTGE campaigns.
  - union
    - string
    - string
    - string
- `campaigns` boolean — Include campaign data. Will slow down the request
- `excludeSubCampaigns` boolean — Exclude subcampaigns from the results.

## Response `200`

Response for status 200

- union
  - object
    - `id` string, required
    - `type` string, required
    - `identifier` string, required
    - `chainId` number, required
    - `name` string, required
    - `description` string, required
    - `howToSteps` string[], required
    - `status` union, required
      - string
      - string
      - string
      - string
    - `action` union, required
      - string
      - string
      - string
      - string
      - string
      - string
      - string
      - string
      - string
      - string
    - `tags` string[], required
    - `mainProtocol` string
    - `depositUrl` string
    - `depositUrls` object[]
      - `id` string, required
      - `title` string, required
      - `url` string, required
      - `subtitle` string
      - `icon` string
      - `priority` number, required
    - `explorerAddress` string
    - `hidden` boolean
    - `tvl` number, required
    - `apr` number, required
    - `dailyRewards` number, required
    - `maxDailyRewards` number
    - `liveCampaigns` number, required
    - `lastCampaignCreatedAt` number, required
    - `earliestCampaignStart` string
    - `latestCampaignStart` string
    - `earliestCampaignEnd` string
    - `latestCampaignEnd` string
    - `nativeApr` number
    - `totalApr` number
    - `maxApr` number
    - `liveCampaignsForCreator` number
    - `soonCampaignsForCreator` number
    - `pastCampaignsForCreator` number
    - `distributionType` string
    - `tokens` object[], required
      - `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
    - `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
    - `activePrograms` object[], required
      - `id` string, required
      - `name` string, required
      - `slug` string
      - `description` string
      - `icon` string
    - `protocol` object — Protocol
      - `id` string, required
      - `name` string, required
      - `icon` string, required
      - `tags` string[], required
      - `description` string, required
      - `url` string, required
      - `dailyRewards` number
      - `numberOfLiveCampaigns` number
      - `opportunityLiveTags` string[]
      - `banner` string, required
      - `opportunityBannerLight` string, required
      - `opportunityBannerDark` string, required
      - `trustData` object, required
        - `slug` string, required
        - `category` string, required
        - `audits` string, required
        - `audit_links` string[], required
        - `audit_note` string, required
        - `github` string[], required
        - `twitter` string, required
        - `listedAt` number, required
        - `parentProtocol` string, required
        - `tvl` number
        - `hacks` object[]
          - `date` number, required
          - `name` string, required
          - `amountUSD` number, required
          - `technique` string, required
          - `source` string, required
        - `syncedAt` number, required
    - `aprRecord` object
      - `cumulated` number, required
      - `timestamp` string, required
      - `breakdowns` object[], required
        - `identifier` string, required
        - `type` union, required
          - string
          - string
          - string
        - `value` number, required
        - `timestamp` 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
    - `nativeAprRecord` object
      - `title` string, required
      - `description` string
      - `value` number, required
      - `timestamp` string, required
      - `amount` unknown
      - `rewardToken` object — 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
      - `breakdowns` object[]
        - `title` string, required
        - `description` string
        - `value` number, required
        - `amount` unknown
        - `rewardToken` object — 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
    - `tvlRecord` object
      - `total` number, required
      - `timestamp` string, required
      - `breakdowns` object[], required
        - `identifier` string, required
        - `type` union, required
          - string
          - string
        - `value` number, required
    - `rewardsRecord` object
      - `total` number, required
      - `timestamp` string, required
      - `breakdowns` object[], required
        - `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
    - `campaigns` 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
    - `type` string, required
    - `identifier` string, required
    - `chainId` number, required
    - `name` string, required
    - `description` string, required
    - `howToSteps` string[], required
    - `status` union, required
      - string
      - string
      - string
      - string
    - `action` union, required
      - string
      - string
      - string
      - string
      - string
      - string
      - string
      - string
      - string
      - string
    - `tags` string[], required
    - `mainProtocol` string
    - `depositUrl` string
    - `depositUrls` object[]
      - `id` string, required
      - `title` string, required
      - `url` string, required
      - `subtitle` string
      - `icon` string
      - `priority` number, required
    - `explorerAddress` string
    - `hidden` boolean
    - `tvl` number, required
    - `apr` number, required
    - `dailyRewards` number, required
    - `maxDailyRewards` number
    - `liveCampaigns` number, required
    - `lastCampaignCreatedAt` number, required
    - `earliestCampaignStart` string
    - `latestCampaignStart` string
    - `earliestCampaignEnd` string
    - `latestCampaignEnd` string
    - `nativeApr` number
    - `totalApr` number
    - `maxApr` number
    - `liveCampaignsForCreator` number
    - `soonCampaignsForCreator` number
    - `pastCampaignsForCreator` number
    - `distributionType` string
    - `tokens` object[], required
      - `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
    - `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
    - `activePrograms` object[], required
      - `id` string, required
      - `name` string, required
      - `slug` string
      - `description` string
      - `icon` string
    - `protocol` object — Protocol
      - `id` string, required
      - `name` string, required
      - `icon` string, required
      - `tags` string[], required
      - `description` string, required
      - `url` string, required
      - `dailyRewards` number
      - `numberOfLiveCampaigns` number
      - `opportunityLiveTags` string[]
      - `banner` string, required
      - `opportunityBannerLight` string, required
      - `opportunityBannerDark` string, required
      - `trustData` object, required
        - `slug` string, required
        - `category` string, required
        - `audits` string, required
        - `audit_links` string[], required
        - `audit_note` string, required
        - `github` string[], required
        - `twitter` string, required
        - `listedAt` number, required
        - `parentProtocol` string, required
        - `tvl` number
        - `hacks` object[]
          - `date` number, required
          - `name` string, required
          - `amountUSD` number, required
          - `technique` string, required
          - `source` string, required
        - `syncedAt` number, required
    - `aprRecord` object
      - `cumulated` number, required
      - `timestamp` string, required
      - `breakdowns` object[], required
        - `identifier` string, required
        - `type` union, required
          - string
          - string
          - string
        - `value` number, required
        - `timestamp` 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
    - `nativeAprRecord` object
      - `title` string, required
      - `description` string
      - `value` number, required
      - `timestamp` string, required
      - `amount` unknown
      - `rewardToken` object — 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
      - `breakdowns` object[]
        - `title` string, required
        - `description` string
        - `value` number, required
        - `amount` unknown
        - `rewardToken` object — 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
    - `tvlRecord` object
      - `total` number, required
      - `timestamp` string, required
      - `breakdowns` object[], required
        - `identifier` string, required
        - `type` union, required
          - string
          - string
        - `value` number, required
    - `rewardsRecord` object
      - `total` number, required
      - `timestamp` string, required
      - `breakdowns` object[], required
        - `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
    - `campaigns` object[], required
      - `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

## Other responses

- `404` — Response for status 404
- `500` — Response for status 500

---

[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)
