---
title: "GET /v4/creators/{creator}/opportunities"
method: GET
path: "/v4/creators/{creator}/opportunities"
tags: ["Creator"]
---

# GET /v4/creators/{creator}/opportunities

`GET /v4/creators/{creator}/opportunities`

Returns paginated opportunities for a specific creator. Use page, items, and other query parameters to filter.

## Path parameters

- `creator` string, required

## 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
- `name` string — Filter by name
- `search` string — Search amongst multiple values (token, protocols, tags, campaigns)
- `chainId` unknown
- `action` string — A comma seprated list actions. Legal values are: POOL, HOLD, DROP, LEND, BORROW, LONG, SHORT, SWAP, INVALID, STAKE
- `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
- `type` string — A comma separated list of Opportunity type
- `tags` string — Filter by tag
- `test` boolean — Include opportunities with test campaigns
- `minimumTvl` number — Minimum TVL threshold in USD
- `maximumTvl` number — Maximum TVL threshold in USD
- `minimumApr` number — Minimum APR threshold
- `maximumApr` number — Maximum APR threshold
- `minimumDailyRewards` number — Minimum daily rewards threshold in USD
- `maximumDailyRewards` number — Maximum daily rewards threshold in USD
- `minimumCreatedAt` number — Filter opportunities whose last campaign was created at or after this Unix timestamp (seconds)
- `maximumCreatedAt` number — Filter opportunities whose last campaign was created at or before this Unix timestamp (seconds)
- `status` unknown
- `identifier` string — Filter by opportunity identifier (a.k.a. `mainParameter`). Free-form string, often a pool/vault/market address (e.g. `0x35Cbe8542E70fa2f7F9cDF129F19e593F4b4f560`) or an arbitrary on-chain hash for non-address opportunities. NOT a campaign ID. See [ID types](/integrate-merkl/id-types).
- `id` string — A comma-separated list of **internal opportunity IDs** (`Opportunity.id`, numeric hash). Example: `?id=5877322385708089533,1234567890`. NOT campaign IDs. See [ID types](/integrate-merkl/id-types).
- `tokens` string — A comma separated list of token symbol. Use to filter by token
- `stablecoin` boolean — Filter opportunities that include at least one stablecoin token
- `rewardTokenSymbol` string — Filter by opportunity that have at least 1 campaigns where the reward token has this symbol
- `sort` unknown
- `order` string — `asc` to sort in ascending order or `desc` to sort in descending order.
- `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
- `mainProtocolId` string — A comma-separated list of **protocol slugs** (e.g. `aave,morpho,uniswap`). NOT numeric IDs. List slugs at [GET /v4/protocols](#tag/protocols/GET/v4/protocols/). See [ID types](/integrate-merkl/id-types).
- `programSlugs` string — A comma separated list of program ids or slugs. You can get the list of all supported programs by calling [GET /v4/programs](#tag/programs/GET/v4/programs/)
- `chainName` unknown
- `explorerAddress` string — Filter by **on-chain pool/vault/market address** (20-byte EVM address, e.g. `0x35Cbe8542E70fa2f7F9cDF129F19e593F4b4f560`). Often the most reliable way to look up an opportunity if you only know the underlying contract. See [ID types](/integrate-merkl/id-types).
- `campaignTypes` unknown

## Response `200`

Response for status 200

- 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

## Changes

- **2026-09-02** `b7784c9a78b9` — 2 info
  - added `subschema #1, subschema #2` to the `items/` response property `allOf` list for the response status `200`
  - removed `subschema #1, subschema #2` from the `items/` response property `allOf` list for the response status `200`

[Change history](https://skmtc.dev/merkl/apis/merkl-api/changes/v4/creators/:creator/opportunities/get.md)

---

[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/b7784c9a78b9/schema)
