> ## Documentation Index
> Fetch the complete documentation index at: https://yieldxyz.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# List yield campaigns

> List the incentive campaigns attached to a yield within your project's scope.

`status` filters by campaign status (`active`, `paused`, `ended`; `draft` is rejected with `400`) and defaults to `active`. Pagination is `offset` (default `0`) and `limit` (default `20`, max `100`).

A campaign's rate also appears inside the yield's reward rate as a `campaign_incentive` component. See [Incentive campaigns](/documentation/platform/incentive-campaigns) and [Reward rate](/api-reference/earn-objects#reward-rate).


## OpenAPI

````yaml openapi.json GET /v1/yields/{yieldId}/campaigns
openapi: 3.0.0
info:
  title: 'Yield API: Earn'
  description: API Documentation
  version: '1.0'
  contact: {}
servers:
  - url: https://api.yield.xyz
    description: Production
security: []
tags:
  - name: Discovery
    description: >-
      Browse and discover yield opportunities, networks, and providers, plus
      yield-level risk, reward rate, and TVL data
  - name: Portfolio
    description: User-specific balances and KYC status
  - name: Actions
    description: Generate transactions to enter, exit, and manage yields
externalDocs:
  description: For more information
  url: https://docs.yield.xyz
paths:
  /v1/yields/{yieldId}/campaigns:
    get:
      tags:
        - Discovery
      summary: Get yield campaigns
      description: >-
        Returns campaign metadata for the given yield opportunity within the API
        key project scope.
      operationId: YieldsController_getYieldCampaigns_v1
      parameters:
        - name: yieldId
          required: true
          in: path
          description: Yield integration ID.
          schema:
            example: cosmos-atom-native-staking
            type: string
        - name: offset
          required: false
          in: query
          description: Offset for pagination
          schema:
            minimum: 0
            default: 0
            example: 0
            type: number
        - name: limit
          required: false
          in: query
          description: Maximum number of items to return
          schema:
            minimum: 1
            maximum: 100
            default: 20
            example: 20
            type: number
        - name: status
          required: false
          in: query
          description: Campaign status filter. Defaults to active.
          schema:
            type: string
            enum:
              - active
              - paused
              - ended
            default: active
      responses:
        '200':
          description: Campaign metadata for the given yield
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/PaginatedResponseDto'
                  - properties:
                      items:
                        type: array
                        items:
                          $ref: '#/components/schemas/YieldCampaignDto'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Validation failed
                  error:
                    type: string
                    example: Bad Request
                  statusCode:
                    type: number
                    example: 400
        '401':
          description: Invalid or missing API key
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Invalid API key
                  error:
                    type: string
                    example: Unauthorized
                  statusCode:
                    type: number
                    example: 401
        '404':
          description: Yield not found with the specified ID
        '429':
          description: Rate limit exceeded
          headers:
            x-ratelimit-limit:
              description: Request limit per window
              schema:
                type: string
            x-ratelimit-remaining:
              description: Remaining requests (will be 0)
              schema:
                type: string
            x-ratelimit-reset:
              description: Unix timestamp when window resets
              schema:
                type: string
            retry-after:
              description: Seconds to wait before retrying
              schema:
                type: string
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Rate limit exceeded
                  error:
                    type: string
                    example: Too Many Requests
                  statusCode:
                    type: number
                    example: 429
                  retryAfter:
                    type: number
                    example: 30
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Internal server error
                  error:
                    type: string
                    example: Internal Server Error
                  statusCode:
                    type: number
                    example: 500
      security:
        - ApiKey: []
components:
  schemas:
    PaginatedResponseDto:
      type: object
      properties:
        total:
          type: number
          description: Total number of items available
          example: 100
        offset:
          type: number
          description: Offset of the current page
          example: 0
        limit:
          type: number
          description: Limit of the current page
          example: 20
      required:
        - total
        - offset
        - limit
    YieldCampaignDto:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
          nullable: true
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        yieldId:
          type: string
        status:
          allOf:
            - $ref: '#/components/schemas/CampaignStatus'
        rewardMode:
          allOf:
            - $ref: '#/components/schemas/CampaignRewardMode'
        rewardRate:
          nullable: true
          description: >-
            Campaign reward rate in the same shape as yield reward rates. Null
            when TVL or emission data is unavailable.
          type: object
          allOf:
            - $ref: '#/components/schemas/RewardRateDto'
        totalBudget:
          type: string
          description: Total campaign reward budget.
        distributedBudget:
          type: string
          description: Amount of budget distributed so far.
        remainingBudget:
          type: string
          description: Amount of budget remaining.
        configuredHourlyEmission:
          type: string
          nullable: true
          description: Configured hourly emission amount.
        apyCeiling:
          type: number
          nullable: true
          example: 0.125
          description: Optional APY ceiling as a decimal rate, where 0.125 = 12.5%.
        qualificationConfig:
          description: Qualification configuration for the campaign.
          allOf:
            - $ref: '#/components/schemas/CampaignQualificationConfigDto'
        startTime:
          type: string
          format: date-time
        endTime:
          type: string
          format: date-time
        lastProcessedHour:
          type: string
          format: date-time
          nullable: true
        nextPayoutDueAt:
          type: string
          format: date-time
          nullable: true
        payoutFrequency:
          allOf:
            - $ref: '#/components/schemas/CampaignPayoutFrequency'
        rewardToken:
          description: Reward token metadata.
          allOf:
            - $ref: '#/components/schemas/TokenDto'
      required:
        - id
        - createdAt
        - updatedAt
        - yieldId
        - status
        - rewardMode
        - rewardRate
        - totalBudget
        - distributedBudget
        - remainingBudget
        - qualificationConfig
        - startTime
        - endTime
        - payoutFrequency
        - rewardToken
    CampaignStatus:
      type: string
      enum:
        - draft
        - active
        - paused
        - ended
    CampaignRewardMode:
      type: string
      enum:
        - normal
        - compound
    RewardRateDto:
      type: object
      properties:
        total:
          type: number
          description: >-
            Estimated underlying integration reward rate across all sources. May
            include an additional campaign component when an active campaign
            applies to this project.
          example: 6.5
        rateType:
          type: string
          description: Whether this reward rate is APR or APY
          example: APR
        components:
          description: Breakdown of reward rates by source
          type: array
          items:
            $ref: '#/components/schemas/RewardDto'
      required:
        - total
        - rateType
        - components
    CampaignQualificationConfigDto:
      type: object
      properties:
        type:
          allOf:
            - $ref: '#/components/schemas/CampaignQualificationType'
        threshold:
          type: string
          example: '100'
          description: Minimum qualifying token amount balance.
        maxIncentivizedTvlToken:
          type: string
          nullable: true
          example: '1000000'
          description: Optional per-user token cap.
      required:
        - type
        - threshold
    CampaignPayoutFrequency:
      type: string
      enum:
        - weekly
        - daily
        - six_hourly
        - end_of_campaign
    TokenDto:
      type: object
      properties:
        symbol:
          type: string
          description: Token symbol
          example: ETH
        name:
          type: string
          description: Token name
          example: Ethereum
        decimals:
          type: number
          description: Token decimal places
          example: 18
        network:
          type: string
          description: Token network
          enum:
            - ethereum
            - ethereum-goerli
            - ethereum-holesky
            - ethereum-sepolia
            - ethereum-hoodi
            - arbitrum
            - base
            - base-sepolia
            - gnosis
            - optimism
            - polygon
            - polygon-amoy
            - starknet
            - zksync
            - linea
            - unichain
            - plume
            - monad-testnet
            - monad
            - robinhood
            - robinhood-testnet
            - arc-testnet
            - arc
            - avalanche-c
            - avalanche-c-atomic
            - avalanche-p
            - binance
            - celo
            - fantom
            - harmony
            - moonriver
            - okc
            - viction
            - core
            - sonic
            - plasma
            - katana
            - hyperevm
            - tempo
            - pharos
            - agoric
            - akash
            - axelar
            - band-protocol
            - bitsong
            - canto
            - chihuahua
            - comdex
            - coreum
            - cosmos
            - crescent
            - cronos
            - cudos
            - desmos
            - dydx
            - evmos
            - fetch-ai
            - gravity-bridge
            - injective
            - irisnet
            - juno
            - kava
            - ki-network
            - mars-protocol
            - nym
            - okex-chain
            - onomy
            - osmosis
            - persistence
            - quicksilver
            - regen
            - secret
            - sentinel
            - sommelier
            - stafi
            - stargaze
            - stride
            - teritori
            - tgrade
            - umee
            - sei
            - mantra
            - celestia
            - saga
            - zetachain
            - dymension
            - humansai
            - neutron
            - polkadot
            - kusama
            - westend
            - bittensor
            - aptos
            - binancebeacon
            - cardano
            - near
            - solana
            - solana-devnet
            - stellar
            - stellar-testnet
            - sui
            - tezos
            - tron
            - ton
            - ton-testnet
            - hyperliquid
          example: Ethereum
        address:
          type: string
          description: Token address (if applicable)
          example: 0x...
        logoURI:
          type: string
          description: Token logo URI
          example: https://...
        isPoints:
          type: boolean
          description: Token is points
          example: true
        coinGeckoId:
          type: string
          description: Token CoinGecko ID
          example: ethereum
      required:
        - symbol
        - name
        - decimals
        - network
    RewardDto:
      type: object
      properties:
        rate:
          type: number
          description: Reward rate as a decimal (e.g. 0.04 = 4%)
          example: 0.04
        rateType:
          type: string
          description: Whether this rate is APR or APY
          example: APR
        token:
          description: Token received as reward
          allOf:
            - $ref: '#/components/schemas/TokenDto'
        yieldSource:
          type: string
          description: Structured source of yield (e.g. staking, protocol incentive)
          enum:
            - staking
            - liquid_staking
            - restaking
            - protocol_incentive
            - campaign_incentive
            - points
            - lending
            - mev
            - real_world_asset_yield
            - vault
          example: protocol_incentive
        description:
          type: string
          description: Optional human-readable description of this reward
          example: LDO distributed to incentivize stETH adoption via Lido Boost
      required:
        - rate
        - rateType
        - token
        - yieldSource
    CampaignQualificationType:
      type: string
      enum:
        - min_token_amount
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: x-api-key

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.